Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker



Ähnliche Dokumente
4 Erste Schritte die Turtlegraphik

2 Grundlagen: Wie arbeitet ein Computer?

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Datensicherung. Beschreibung der Datensicherung

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Erstellen einer PostScript-Datei unter Windows XP

Produktschulung WinDachJournal

Informatik I Tutorial

Datenbanken Kapitel 2

Vorkurs Informatik WiSe 15/16

Objektorientiertes Programmieren mit Suse Linux

Informatik 1 Tutorial

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

TeamSpeak3 Einrichten

INSTALLATION VON INSTANTRAILS 1.7

Computeria Solothurn

Artikel Schnittstelle über CSV

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Einführung in die Java- Programmierung

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Jederzeit Ordnung halten

Mediator 9 - Lernprogramm

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Primzahlen und RSA-Verschlüsselung

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

iphone-kontakte zu Exchange übertragen

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

DOKUMENTATION VOGELZUCHT 2015 PLUS

Speichern. Speichern unter

Installationsanleitungen

Einführung in PHP. (mit Aufgaben)

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

4 Aufzählungen und Listen erstellen

Professionelle Seminare im Bereich MS-Office

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

icloud nicht neu, aber doch irgendwie anders

Leitfaden zur Installation von Bitbyters.WinShutdown

Programmierkurs Java

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Neue Steuererklärung 2013 erstellen

Wir arbeiten mit Zufallszahlen

Handbuch B4000+ Preset Manager

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Arbeiten mit UMLed und Delphi

Berechnungen in Access Teil I

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Hex Datei mit Atmel Studio 6 erstellen

Herzlich Willkommen bei der BITel!

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Wenn keine Verbindung zwischen den Computern besteht, dann bist du offline.

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Anleitung: Webspace-Einrichtung

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Bilder zum Upload verkleinern

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Gruppenrichtlinien und Softwareverteilung

Objektorientierte Programmierung

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Java: Vererbung. Teil 3: super()

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Erstellen der Barcode-Etiketten:

ecall sms & fax-portal

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Computeria Rorschach Mit Excel Diagramme erstellen

Kennen, können, beherrschen lernen was gebraucht wird

4D Server v12 64-bit Version BETA VERSION

Windows 10 > Fragen über Fragen

Installationsanleitung CLX.PayMaker Home

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Kommunikations-Management

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Das Leitbild vom Verein WIR

HAIKU Testen mit VitualBox

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

Lernwerkstatt 9 privat- Freischaltung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Wie halte ich Ordnung auf meiner Festplatte?

Kompilieren und Linken

Version 0.3. Installation von MinGW und Eclipse CDT

GEONET Anleitung für Web-Autoren

Eigenen Farbverlauf erstellen

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Zwischenablage (Bilder, Texte,...)

Tutorial: Erstellen einer vollwertigen XP Home CD aus der EEE 901 Recover DVD

ICS-Addin. Benutzerhandbuch. Version: 1.0

1 Mathematische Grundlagen

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Facharbeit Informatik. Thema:

1 Installation. 1.1 Die Java-Laufzeitumgebung. 1.2 PXLab. Um PXLab benutzen zu können benötigt man die Java Platform, diese kann man unter

Zahlensysteme: Oktal- und Hexadezimalsystem

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Transkript:

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker Andreas Keese Institut f. Wissenschaftliches Rechnen TU Braunschweig 17. November 2014 Der Text, die Abbildungen und Programme wurden mit größter Sorgfalt erarbeitet. Der Autor kann dennoch für möglicherweise verbliebene fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Die in diesem Text erwähnten Software und Hardwarebezeichnungen sind in den meisten Fällen auch eingetragene Marken und unterliegen als solche den gesetzlichen Bestimmungen. Copyright 1999, 2000, Andreas Keese. Alle Rechte vorbehalten Inhaltsverzeichnis 1 Einleitung 2 1.1 Lehrbücher zu Java.......................... 2 1.2 Über diesen Text........................... 3 2 Grundlagen: Wie arbeitet ein Computer? 5 2.1 Der Aufbau eines Computers.................... 5 2.2 Organisation des Arbeitsspeichers Bits und Bytes....... 7 2.3 Die Organisation des Arbeitsspeichers Adressen........ 9 2.4 Programmierung eines Computers................. 9 2.5 Zusammenfassung des Kapitels................... 12 3 Das Java Programmiersystem JDK 13 3.1 Bestandteile des JDK........................ 13 3.2 Übersetzen und Ausführen von Java-Programmen......... 14 3.3 Zusammenfassung.......................... 16 4 Erste Schritte die Turtlegraphik 17 4.1 Testen der Turtlegraphik....................... 17 4.2 Die Bestandteile eines einfachen Java Programms......... 18 4.3 Turtlebefehle............................. 21 1

5 Grundlagen der Java-Syntax 24 5.1 Grundsätzliches zur Syntax von Java Programmen........ 24 5.2 Zusammenfassung.......................... 28 6 Variablen und Datentypen 29 6.1 Variablen und ihr Typ........................ 29 6.1.1 Ganze Zahlen......................... 30 6.1.2 Fließkommazahlen...................... 31 6.1.3 Logischer Datentyp...................... 31 6.1.4 Zeichen und Zeichenketten................. 32 7 Ausdrücke 33 7.1 Was ist ein Ausdruck?........................ 33 7.2 Literal Ausdrücke.......................... 35 7.2.1 Ganzzahlige Literale..................... 35 7.2.2 Reellwertige Literale..................... 36 7.2.3 Litarale vom Typ boolean.................. 37 7.2.4 Zeichenliterale........................ 38 7.2.5 Zeichenketten......................... 39 7.3 Verwendung von Variablen..................... 40 7.4 Ausdrücke mit Operatoren...................... 42 7.4.1 Arithmetische Operatoren.................. 45 7.4.2 Inkrement und Dekrement Operatoren........... 45 7.4.3 Relationale Operatoren................... 48 7.4.4 Logische Operatoren..................... 48 7.4.5 Bitweise Operatoren..................... 49 7.4.6 Zuweisungsoperatoren.................... 50 7.4.7 Weitere Operatoren..................... 51 7.5 Zusammenfassung.......................... 52 8 Typwandlungen 53 8.1 Automatische Typkonvertierungen................. 53 8.2 Manuelle Typkonvertierungen.................... 56 8.3 Zusammenfassung.......................... 57 9 Anweisungen und Kontrollstrukturen 58 9.1 Leere Anweisung........................... 58 9.2 Blockanweisung............................ 58 9.3 Variablendefinitionen......................... 59 9.4 Ausdrucksanweisungen........................ 60 9.5 If Anweisung............................. 61 9.6 Switch Anweisung.......................... 62 9.7 Schleifen................................ 63 2

9.7.1 Die While Schleife...................... 63 9.7.2 Die Do Schleife........................ 65 9.7.3 Die For Schleife....................... 67 9.7.4 break und continue...................... 70 9.8 Zusammenfassung.......................... 71 10 Objekte in Java 72 10.1 Objekte und primitive Datentypen................. 72 10.2 Der Lebenszyklus eines Objektes.................. 74 10.2.1 Die Erzeugung von Objekten................ 75 10.3 Die Identität eines Objektes..................... 77 10.4 Die Kommunikation mit Objekten................. 79 10.5 Welche Botschaften versteht ein Objekt?............. 81 10.6 Die Zerstörung von Objekten.................... 82 10.7 Zusammenfassung.......................... 83 11 Arrays 85 11.1 Definition von Arrays........................ 85 11.2 Verwendung von Arrays....................... 86 11.3 Array Literale............................ 88 11.4 Primitive Arrays und Objektarrays................. 88 11.5 Referenztypen am Array-Beispiel................. 89 11.6 Mehrdimensionale Arrays...................... 90 11.7 Zusammenfassung.......................... 92 12 Klassen in Java 93 12.1 Instanz- und Klassenbestandteile.................. 93 12.2 Zugriff auf Methoden und Attribute................ 95 12.3 Die Bestandteile einer Java Klasse................. 96 12.4 Attribute............................... 98 12.5 Definition von Methoden....................... 99 12.6 Mehrere Methoden mit gleichem Namen.............. 103 12.7 Konstruktoren............................ 105 12.8 Die Parameterübergabe an eine Methode............. 105 12.9 Zusammenfassung.......................... 106 13 Dokumentieren von Java Programmen 108 13.1 Wie arbeitet javadoc?........................ 108 13.2 Zusammenfassung.......................... 109 14 Vererbung Extensionen von Klassen 110 14.1 Ein einführendes Beispiel...................... 110 14.2 Erweitern von Klassen........................ 112 14.3 Überschreiben von Methoden.................... 113 3

14.4 Die super Variable.......................... 115 14.5 Vererbung und Konstruktoren.................... 116 14.6 Beispiele................................ 117 14.7 Die Object-Klasse.......................... 119 14.8 Abstrakte Klassen.......................... 119 14.9 Zuweisung an Variablen und Arrays................ 121 14.10Zusammenfassung.......................... 123 15 Packages 125 15.1 Zusammenfassung.......................... 127 16 Exceptions 128 16.1 Try catch............................... 128 16.2 Ausnahmen werfen.......................... 130 16.3 Exceptions in Methoden....................... 131 16.4 Ein paar abschließende Bemerkungen................ 132 16.5 Zusammenfassung.......................... 133 A Anhang: Unix, Editor und CIP-Pool 134 A.1 Hinweise zu weiterer Unix-Literatur................ 134 A.2 Editoren................................ 134 A.2.1 Der nedit-editor....................... 134 A.2.2 Der Emacs-Editor...................... 134 A.3 Das Hilfe-System........................... 135 A.3.1 Der man-befehl........................ 135 A.3.2 Der Apropos-Befehl..................... 136 A.4 Ausgabeumleitung.......................... 137 A.5 Trennung von Rechner und Bildschirm............... 139 B Anhang: Verwendung von Java unter Unix 141 B.1 Java-Compiler und Laufzeitumgebung............... 141 B.2 Kompilation.............................. 141 B.3 Datentypen.............................. 142 C Probleme 143 C.1 Probleme bei Verwendung von javac................ 143 C.2 Probleme bei Verwendung von java................. 144 D Goldene Regeln fürs Programmieren 146 D.1 Allgemeines............................. 146 D.2 Quelldateien.............................. 146 D.3 Klassen................................ 147 D.4 Methoden............................... 147 D.5 Variablen, Konstanten und Literale................. 147 4

D.6 Kontrollstrukturen.......................... 149 E Installation von Java und Turtle Graphik 150 E.1 Installation von Java......................... 150 E.2 Der CLASSPATH.......................... 150 E.3 Installation der Turtle Graphik................... 151 E.4 Erweitern des CLASSPATH...................... 152 5

1 Einleitung In der Veranstaltung Einführung in das Programmieren wollen wir Sie dabei unterstützen, das Programmieren in Java 1 zu erlernen. Dabei gehen wir davon aus, daß Ihre bisherige Erfahrung im Programmieren vernachlässigbar sind. Bitte beachten Sie: Dieser Begleittext ist im Wintersemester 1999/2000 entstanden und ist auf die damalige Form dieser Veranstaltung zugeschnitten. Im Sommersemester 2000 wurde der Fokus der Veranstaltung etwas verändert. Momentan passen nur die ersten 4 Kapitel sowie die Anhänge zur momentanen Form der Veranstaltung. Es ist nicht sicher, ob wir auch die späteren Kapitel überarbeiten werden. Unabhängig davon können Sie die ersten 4 Kapitel dennoch mit Gewinn für sich nutzen. 1.1 Lehrbücher zu Java Es sollte zunächst erwähnt werden, daß Java sehr viele Bestandteile hat. Zum einen gehört zu Java die Java-Programmiersprache, zum anderen enthält Java viele Werkzeuge, die es ermöglichen, Fenster und Graphiken auf dem Monitor anzuzeigen. Es gibt Werkzeuge, mit denen der Rechner zur Tonerzeugung verwendet werden kann oder mit denen man Programme fürs Internet schreiben kann. Alle Bestandteile von Java zusammen nennt man das JDK: Java Development Kit. Die meisten Lehrbücher zu Java versuchen, alles über Java erzählen, und das geht dann zu Lasten der Erklärung der Programmiersprache meistens ist für die Grundlagen der Programmierung in diesen Büchern weniger als ein Drittel vorgesehen. Nun wollen wir Ihnen in dieser Veranstaltung aber gerade die Grundlagen des Programmierens vermitteln. Die Entwicklung von Internet-, Fenster- und Graphikanwendungen mag ja sehr interessant sein, aber bevor man derartige Programme schreibt, sollte man doch die Grundlagen der Programmierung beherrschen. Ein sich uneingeschränkt eignendes Lehrbuch zu Java für Programmieranfänger, haben wir leider nicht gefunden. Daher haben wir den vorliegenden Text erstellt. Die folgenden Lehrbücher sind bedingt empfehlenswert: Computing Concepts with JAVA Essentials Cay S. Horstmann John Wiley & Sons, 2000, 89,90, DM Computing Concepts with JAVA Essentialsßeichnet sich aus durch eine anfängerorientierte, didaktisch sehr gute Darstellung des Stoffes, die für den Studienanfänger durch die englische Sprache - mit Fachidiom der EDV und Programmiersprachen - gedämpft wird. Das Buch enthält eine Vielzahl an Programmbeispielen und stellt alle Konzepte der Sprache weitgehend umfassend und gut verständlich dar. Rückgriffe auf Rechnerarchitektur und Historie lockern den Stoff auf. 1 http://www.java.sun.com 6

Das Buch ist gut geeignet, die Veranstaltung im Selbststudium zu ergänzen. Auf der Webseite 2 des Authors finden Sie weitere Hinweise zum Buch. Go To Java 2 Guido Krüger Addison Wesley, 1999, ISBN 3 8273 1370 8, 89,90, DM Dieses Buch eignet sich sehr gut für Leser mit etwas Programmiererfahrung. Das Buch ist in einer Online Version frei erhältlich, welche wir auf unserem Server 3 spiegeln. Falls Sie an einem Rechner außerhalb des Netzes der TU Braunschweig arbeiten, können Sie das Buch auf den Seiten des Authors 4 lesen. Java in 21 Tagen Laura Lemay, Charles L. Perkins Markt u. Technik, 1999, 89,95, DM. Dieses Buch eignet sich gut für Programmieranfänger. Es ist im WWW 5 frei verfügbar. The Java Tutorial Mary Campione, Kathy Walrath Addison Wesley, 1998, 85,- DM The Java Tutorial richtet sich an Personen, die bereits programmieren können. Es beschreibt mit vielen instruktiven Beispielen, wie man in Java Fenster-, Graphik- oder Internetanwendungen programmiert. Dabei ist aufgrund der vielen Querverweise im Buch die Html-Version vermutlich besser lesbar als die gedruckte Fassung. Wir spiegeln die Online Fassung 6. Wenn Sie an einem Rechner außerhalb des Netzes der TU Braunschweig arbeiten, können Sie es auf den Seiten von Sun 7 lesen. 1.2 Über diesen Text Aufgrund der Probleme bei der Suche nach einem Lehrbuch haben wir uns entschlossen, einen Begleittext zur Veranstaltung zu schreiben. Er soll gemeinsam mit den Hausaufgabe als Leitfaden durch die Veranstaltung dienen wir werden Ihnen in den Hausaufgaben mitteilen, wann Sie welche Kapitel lesen sollen oder wann Sie auf Sekundärliteratur zurückgreifen sollen. Es ist empfehlenswert, den Text parallel zu den Hausaufgaben zu verwenden. Sie finden in den Hausaufgabenblöcken Hinweise, welche Teile im Begleittext vor oder während der Bearbeitung gelesen werden sollten. Zum Lesen des Textes noch folgende Hinweise: Jedes Kapitel endet mit einer Reihe von Fragen, die Sie nach dem Lesen des Kapitels beantworten können sollten. Sie können diese Fragen verwenden, um vor dem Lesen des Kapitels einen Eindruck von seinem Inhalt zu 2 http://www.horstmann.com/ 3 http://www.tu-bs.de:82/wir/eip/gj/cover.html 4 http://www.gkrueger.com 5 http://www.mut.de/leseecke/buecher/java2/inhalt.html 6 http://www.tu-bs.de:82/wir/eip/tutorial/ 7 http://java.sun.com/docs/books/tutorial/ 7

erhalten. Außerdem können Sie anhand der Fragen prüfen, ob Sie das Kapitel verstanden haben. Wir präsentieren viele Beispiele. Bitte vollziehen Sie die Programmierbeispiele und Kommandos am Rechner nach. Kommandozeilenbefehle präsentieren, schreiben wir als > Kommando Dabei bedeutet das führende Größerzeichen, daß Sie diesen Text auf der Kommandozeile eingeben sollen. Es soll nicht mit eingetippt werden. Beim Erlernen des Programmierens in Java wünschen wir Ihnen viel Erfolg! 8

2 Grundlagen: Wie arbeitet ein Computer? Bevor wir auf die Programmierung von Rechnern eingehen, möchten wir sichergehen, daß Sie ein Grundverständnis vom Aufbau und von der Funktionsweise eines Rechners haben. Was es bedeutet, einen Rechner zu programmieren wollen wir Ihnen auch beschreiben. Im weiteren verwenden wir übrigens den deutschen Begriff Rechner und den englischen Begriff Computer synonym. Wenn Sie bereits eine klare Vorstellung vom Aufbau und der Funktionsweise eines Computers haben, können Sie diesen Abschnitt überfliegen oder überspringen und Ihr Wissen anhand der Zusammenfassung am Ende des Kapitels überprüfen. 2.1 Der Aufbau eines Computers Es bedarf eigentlich keines Kommentars, daß Computer heutzutage in allen Lebensbereichen eingesetzt werden. Computer berechnen, ob geplante Brücken stehenbleiben werden, sie steuern Flugzeuge, erledigen Ihre Steuererklärung und moderne Filme werden meist komplett im Computer nachbearbeitetet. Es mag vielleicht überraschen aber es gibt einen Oberbegriff für diese vielfältigen Fähigkeiten von Computern: Datenverarbeitung. Egal, was ein Computer tut, er verarbeitet immer Daten. Dabei ist ein Computer ziemlich dumm ob er Musikdaten verarbeitet, für einen Film künstliche Dinosaurier auferstehen lässt, ob er Ihre Steuereklärung bearbeitet oder Lara Croft aufregende Abenteuer bestehen läßt, ist ihm ziemlich egal. Er ist nicht dazu in der Lage, einen Unterschied zwischen all diesen verschiedenen Daten zu bemerken. Für ihn bestehen Daten nur aus Zahlen. Wir Menschen müssen ihm bis ins kleinste Detail erklären, wie all diese Zahlen verarbeitet und interpretiert werden sollen. Ob aus einer Zahlenkolonne dann ein Lied, ein Film oder eine Steuererklärung wird, wird nur durch die Datenverarbeitungsregeln durch das Programm bestimmt. Die wesentlichen Bestandteile eines Computers zeigt die folgende Graphik: Graphik 1 : Aufbau eines Computers Benutzer schnittstelle Dateneingabe Datenausgabe Tastatur Maus Drucker Bildschirm Zentraleinheit (CPU) Speicher ROM RAM Festplatte Diskette Arbeitsspeicher Nicht flüchtiger Speicher: Die zu verarbeitenden Daten müssen dem Computer irgendwie übergeben wer- 9

den jeder Computer benötigt also Dateneingabe-Möglichkeiten. Die wichtigsten Dateneingabegeräte sind die Tastatur und die Maus. Auch die Regeln, nach denen er diese Daten verarbeiten soll, müssen dem Computer irgendwie genannt werden. Da diese Regeln bzw. Programme nichts anderes als spezielle Daten sind, können sie auf dieselbe Art und Weise in den Computer eingeben werden wie alle anderen Daten auch. Da wir Menschen die vom Computer verarbeiteten Daten irgendwie weiter verwenden wollen, besitzen fast alle Computer Möglichkeiten zur Datenausgabe wie Monitor, Drucker oder Soundkarte. Die zu verarbeitenden Daten und die Programme muß sich der Computer irgendwo merken. Dies geschieht im Speicher des Computers. Wir unterscheiden flüchtigen und nicht-flüchtigen Speicher. Die im flüchtigem Speicher enthaltenen Daten werden bei jedem Ausschalten des Computers gelöscht. Unter flüchtigem Speicher versteht man vor allem den RAM Random Access Memory genannten Teil des Arbeitsspeichers. Wenn man den Computer ausschaltet, gehen alle Inhalte des RAM verloren. Dem RAM kommt eine besondere Bedeutung zu, weil in der Regel alle vom Computer zu verarbeitenden Daten und Programme vor der Verarbeitung hierher übertragen werden müssen. Die Datenverarbeitung selber geschieht mit Hilfe der CPU (Central Processing Unit = Zentraleinheit), welche auch Prozessor genannt wird. Der Prozessor ist eigentlich immer beschäftigt sobald der Computer angeschaltet wird, beginnt er damit, im Arbeitsspeicher enthaltene Programme abzuarbeiten und gönnt sich dabei (fast) keine Pause, bis man den Computer ausschaltet. Damit die Programme und Daten nicht bei jedem Anschalten des Computers neu eingetippt werden müssen, besitzt heutzutage jeder Computer auch nichtflüchtigen Speicher, also Speicher dessen Inhalt beim Ausschalten des Computers nicht verloren geht. Als wichtigste Vertreter sind hier die Festplatte, Diskettenlaufwerke und CD-Roms zu nennen. Da die Festplatte meist einer der schnellsten nicht-flüchtigen Speicher eines Rechners ist, werden häufig benötigten Daten dort gespeichert. Ein weiterer wichtiger nicht-flüchtigen Speicher ist das ROM (Read-only Memory). Das ROM ist ein nicht-beschreibbarer Teil des Arbeitsspeichers. Sie selbst können im ROM Ihres Computers also keine Daten ablegen. Trotzdem könnte kein Computer ohne ROM arbeiten. Der Grund hierfür ist, daß ein Computer nichts tun kann, das man ihm nicht in allen Einzelheiten erklärt. Er benötigt sogar ein Programm, das ihm erklärt, wie er zu starten hat. Beim Start muß der Computer nämlich alle angeschlossenen Geräte erkennen und in Gang setzen, und wie er das zu tun hat, ist im ROM beschrieben. Außerdem muß der Computer direkt nach dem Anschalten das Betriebssystem starten, auch OS (Operating System) oder DOS (Disk Operating System) genannt. Ein Betriebssystem ist ein sehr umfangreiches Programm, welches den Computer durch Menschen benutzbar macht. Das Betriebssystem ermöglicht dem Computer, mit seinen Benutzern zu kommunizieren (wichtige Betriebssysteme sind MS DOS, MS Windows, das Mac-OS sowie Unix-Betriebssysteme wie Linux oder Solaris). Ohne Betriebssystem wüsste der Computer nicht, was er auf dem Bildschirm anzeigen soll, und man könnte ihn weder per Maus noch per Tastatur bedienen. 10

Wie wird das Betriebssystem gestartet? Beim Anschalten weiß der Computer noch gar nicht, wie er das Betriebssystem von der Festplatte laden und starten soll. Deshalb hat der Hersteller des Computers die hierfür benötigten Programme im ROM abgelegt. Beim Start befolgt der Computer zunächst das im ROM gespeicherte Startprogramm und startet dabei das Betriebssystem. Die Rechner, an denen Sie im CIP-Pool während des Kurses arbeiten werden, laufen übrigens alle unter einer Variante des Betriebssystems Unix, welche von der Firma IBM unter dem Namen AIX vertrieben wird. Beim Bearbeiten der ersten Hausaufgabe werden Sie einige Dinge über Unix lernen. 2.2 Organisation des Arbeitsspeichers Bits und Bytes Alle Daten und Programme müssen vor ihrer Verarbeitung im RAM abgelegt werden. Auf der physikalischen Ebene ist das RAM aus unzähligen elektrischen Kondensatoren und Transistoren aufgebaut. Ein Kondensator kann dabei in einem von zwei Zuständen sein: entweder trägt er elektrische Ladung oder er ist entladen. Zustände, in denen Kondensatoren nur teilweise aufgeladen sind, werden heutzutage nicht berücksichtigt. Eine Speichereinheit, die nur zwei Zustände annehmen kann, nennen wir Bit, und die beiden Zustände eines Bits beziffern wir mit 0 und 1. Zum Beispiel könnte dem durch einen ungeladenen bzw. geladenen Kondensator repräsentierten Bit der Wert 0 bzw. 1 zugeordnet werden. Da ein Bit nur sehr kleine Informationsmengen speichern kann, werden mehrere Bits zu größeren Einheiten gruppiert. Beispiel: Sicher haben auch Sie schon Werbeslogans gehört, in welchen für 32-Bit-Betriebssysteme oder 32-Bit-Prozessoren geworben wird. Ein 32-Bit-Prozessor ist in der Lage, immer 32 Bit auf einmal aus dem Speicher zu lesen und als eine Einheit zu verarbeiten. Ein älterer 16-Bit-Prozessor hingegen verarbeitet Daten immer in 16-Bit- Portionen. Da ein 16-Bit-Prozessor nur 16 Bit auf einmal verarbeiten kann, müsste er zweimal auf den Speicher zugreifen, um 32 Bit zu lesen, und er müsste zwei Operationen ausführen, um 32-Bit zu verarbeiten. Die Anzahl von Bits, die ein Prozessor auf einmal aus dem Speicher holen und verarbeiten kann, nennt man übrigens die Bus-Breite des Prozessores (ein Bus ist ein Bündel von Leitungen, über das Daten transportiert werden). Wenn die zu verarbeitenden Daten in größeren Gruppen als 16 Bit vorliegen, kann ein 32-Bit-Prozessor also tatsächlich schneller sein als ein 16-Bit-Prozessor. Allerdings müssen die benutzten Programme dazu auch wirklich eine Verarbeitung in 32-Bit-Portionen vorsehen. Bevor wir darauf eingehen, zu was für Gruppen man Bits zusammenfaßt, wollen wir uns überlegen, wie viele Zustände man mit einer vorgegebenen Anzahl von Bits darstellen kann. Beispiel: Wenn wir ein Bit verwenden, können wir nur die zwei Zustände 0 und 1 darstellen. Wenn wir zwei Bits verwenden, können wir die vier Zustände 00, 01, 10, 11 darstellen. 11

Drei Bits können die acht Zustände 000,001,010,011,100,101,110,111 darstellen. Es ist sehr leicht zu sehen, daß n Bits genau 2 n verschiedene Zustände annehmen können. Will man also N verschiedene Zustände beschreiben, benötigt man eine Anzahl von Bits, die sich durch Aufrunden von log 2 N ergibt. Beispiel: Um jede Zahl von 0 bis 15 darstellen zu können, benötigt man log 2 16 = 4 Bits. Zur Darstellung der Zahlen 0... 100 sind 7 Bits nötig (log 2 101 = 6, 66). Die wichtigsten Einheit, zu denen Bits zusammengefaßt werden, sind: Byte: Word: Ein Byte besteht aus 8 Bit und kann 2 8 = 256 Zustände annehmen. Die Größe eines Word hängt vom verwendeten Computer ab. Es besteht in der Regel aus sovielen Bits, wie der Computer zugleich verarbeiten kann. Heutzutage versteht man unter einem Word meist 8 Byte oder 64 Bit. Meist verwendet man die Begriffe Byte oder Word, um einen einzelnen Zahlenwert zu beschreiben. Jedem Zustand eines Bytes oder Words kann man eine Dezimalzahl zuweisen. Dazu fasst man die Zustände der einzelnen Bits als Binärzahl auf. Der Dezimalwert einer Binärzahl berechnet sich wie folgt: Die Bits der Zahl werden von rechts beginnend und mit der Zahl 0 startend durchnumeriert. Anschließend bildet man eine Summe, in welcher man für jedes an der Position i gesetzte Bit die Zahl 2 i einsetzt. Beispiel: Zum Beispiel hat die Binärzahl 010 die Dezimaldarstellung 2 1 = 2. Die Zahl 010100100 die Dezimaldarstellung 2 2 + 2 5 + 2 7 = 164. Beispiel: Ein weiteres Beispiel: Computer verwenden meist Byte-Werte, um Buchstaben und andere Zeichen zu beschreiben. Dabei wird jedem Zeichen ein anderer Zahlenwert zugewiesen. Auf meinem Rechner sehen einige Beispiele für diese Zuordnung so aus: Zeichen Zahlenwert Darstellung in Bits a 97 01100001 b 98 01100010 c 99 01100011 A 65 01000001 # 35 00100011 + 43 00101011 1 49 00110001 Prüfen Sie bitte nach, ob die dezimale Darstellung und die Bit-Darstellung zusammenpaßt. Wir haben nun die Grundeinheiten kennengelernt, mit denen ein Computer operiert. Diese Einheiten werden Ihnen auch bei der Programmierung mit Java immer wieder begegnen, denn auch wenn Sie in Java mit Zahlen rechnen, müssen 12

Sie manchmal angeben, in welcher Grundeinheit die Zahlen gespeichert werden sollen. Will man beschreiben, wieviele Daten ein Computer speichern kann, benützt man noch größere Einheiten: KB, Kilo Byte: 1 KB (Ein Kilo Byte) sind 2 10 = 1024 Byte. MB, Mega Byte: 1 MB (Ein Mega Byte) sind 2 10 Kilo Byte oder 2 20 = 1.048.576 Byte. GB, Giga Byte: 1 GB (Ein Giga Byte) sind 2 10 Mega Byte oder 2 30 = 1.063.641.824 Byte. TB, Tera Byte: 1 TB (Ein Tera Byte) sind 2 10 Giga Byte bzw. 2 40 Byte. Beispiel: Neue Rechner für den Heimgebrauch oder fürs Büro haben heutzutage in der Regel 128 MB Arbeitsspeicher oder mehr und einige GB Festplattenspeicher; Höchstleistungsrechner haben mehrere GB Arbeitsspeicher und mehrere hundert GB Festplattenspeicher. 2.3 Die Organisation des Arbeitsspeichers Adressen Sie haben erfahren, daß der Arbeitsspeicher eines Rechners aus vielen Bits besteht, die zu Bytes oder größeren Gruppierungen zusammengefaßt werden. Obwohl Sie dies zur Programmierung mit Java nicht unbedingt wissen müssen, möchten wir Ihnen dennoch ganz kurz erzählen, wie der Prozessor Daten im Arbeitsspeicher verwendet. Jedes Byte des Arbeitsspeichers hat eine eindeutige Nummer die Nummer eines Bytes nennt man seine Adresse. Der Prozessor kann über die Adresse Daten im Arbeitsspeicher auslesen und Daten in den Arbeitsspeicher schreiben. Beispiel: Wir können dem Prozessor befehlen, eine Zahl in dem Byte an der Adresse 100 und eine weitere Zahl in dem an der Adresse 200 beginnenden Word zu speichern. Anschließend können wir ihn anweisen, die beiden Zahlen zu addieren und das Ergebnis an der Adresse 300 abzulegen. Da hierbei ein Byte und ein Word addiert wird, sollte das Ergebnis mindestens Word-Größe haben. 2.4 Programmierung eines Computers Nachdem Sie nun eine gewisse Vorstellung davon haben, wie ein Computer aufgebaut ist, folgt nun die Erklärung, wie ein Computer Programme verarbeitet. Es ist hoffentlich bereits klar geworden sein, daß Programme nichts anderes sind als Regeln, die einem Computer bis ins allerkleinste Detail erklären, wie er gewisse Daten verarbeiten soll. Es stellt sich nun die Frage, wie man dem Computer derartige Regeln mitteilen soll. Vorher stellt sich aber die Frage, was für Regeln man einem Computer mitteilen kann. Hier sollten Sie sich merken, daß die Regeln, die man einem Computer angibt, immer eindeutig sein müssen. Regeln, die exakt und eindeutig sagen, was zu tun ist, nennt man einen Algorithmus. Ein Computer kann nur Algorithmen verarbeiten. 13

Beispiel: Die Regeln, nach welchen die Dezimaldarstellung einer Binärzahl mit den Bits b n,..., b 0 berechnet werden, könnte umgangssprachlich so beschrieben werden wie im vorigen Kapitel (Seite 2.2): Der Dezimalwert einer Binärzahl berechnet sich wie folgt: Die Bits der Zahl werden von rechts beginnend und mit der Zahl 0 startend durchnumeriert. Anschließend bildet man eine Summe, in welcher man für jedes an der Position i gesetzte Bit die Zahl 2 i einsetzt. Allerdings kann diese Beschreibung mißverstanden werden. Sie ist auch kein Algorithmus, da sie nicht eindeutig ist. Es ist zum Beispiel nicht festgelegt, in welcher Reihenfolge die Summe gebildet werden soll. Ein Computer benötigt immer eine Vorgehensvorschrift, in der jedes Detail genau beschrieben wird. Vor allem darf die Regel nicht den geringsten Entscheidungsspielraum lassen und muß eindeutig sein. Eine Umsetzung der obigen umgangssprachlichen Regel in einen Algorithmus könnte so aussehen: Gegeben sei eine Binärzahl mit den Bits b n,..., b 0. Setze dezimal := 0 Lasse i jeden Wert zwischen 0 und n aufsteigend durchlaufen und Setze für jeden Wert von i dezimal := dezimal + b i 2 i dezimal enthält nun die Dezimaldarstellung der Binärzahl b n,..., b 0 Da die zweite Umrechenregel des obigen Beispiels eindeutig ist, könnte man sie nun in ein Programm für einen Computer umsetzen. Ein Programm ist die Formulierung eines Algorithmus in einer Programmiersprache. Wie schon erwähnt, ist ein Computer ziemlich dumm er versteht nur eine ganz spezielle, für Menschen ungeeignete Sprache, die Maschinensprache. Maschinensprache ist eine Sprache, die nur aus Zahlen besteht. Beispiel: Um Sie von Maschinensprache abzuschrecken, zeigen wir Ihnen ein Maschinensprache-Programm. Dabei zeigen wir Ihnen nicht die Zahlen, aus denen das Programm besteht sondern eine textliche Darstellung, in der jeder Zahl ein kurzes Wort wie movl oder imull zugeordnet wurde: movl movl movl imull 30,12345(%ebp) 50,23456(%ebp) 3456(%ebp),%eax 0xfffffff8(%ebp),%eax Dieses Programm multipliziert die Zahlen 30 und 50. Dazu legt es in der ersten Zeile mit dem Befehl movl die Zahl 30 an der Adresse 12345 ab. Dann legt es in der zweiten Zeile die Zahl 50 an der Adresse Zahl 23456 ab. In der dritten Zeile merkt es sich, daß das Ergebnis der Rechnung an der Adresse 3456 gespeichert werden soll. Schließlich multipliziert es in der vierten Zeile durch den imull-befehl die Zahlen und legt das Ergebnis an Adresse 3456 ab. 14

Sie sehen an diesem Beispiel, daß in Maschinensprache die einfachsten Dinge recht umfangreich werden. Außerdem hat Maschinensprache einen Riesennachteil jeder Prozessor hat eine andere Maschinensprache, und einen PC mit Intel-Prozessor in Maschinensprache zu programmieren, ist etwas ganz anders, als einen Macintosh-Rechner zu programmieren. Wenn Sie Maschinensprache verwenden wollten, müssten Sie für jeden Rechnertyp, auf dem Ihr Programm laufen soll, ein völlig anderes Programm erstellen. Daher wird heutzutage eigentlich nur noch in höheren Programmiersprachen wie Pascal, C, Pascal, C++ oder Java programmiert höhere Programmiersprachen heißen so, weil Sie einen höheren Abstraktionsgrad vom Prozessor haben als Maschinensprache. Nur ein paar wenige Freaks, Hacker und Spieleprogrammier programmieren heutzutage noch in Maschinensprache. Die höheren Programmiersprachen bieten den großen Vorteil, daß man sich nicht selbst darum kümmern muß, an welcher Adresse der Computer Daten ablegen soll, außerdem entspricht ein einzelner Befehl in einer höheren Programmiersprachen einer ganzen Reihe von Befehlen in Maschinensprache. Die höheren Programmiersprachen kommen dabei umgangssprachlichen Formulierungen sehr nahe: Beispiel: Zum Beispiel könnten die Regeln zur Umwandlung einer Binärin eine Dezimalzahl in Java so lauten: /* die Bits der Binärzahl seien in b[0], b[1]... bis in b[n] * gespeichert */ dezimal = 0; for( i = 0; i < n ; i++ ) { dezimal = dezimal + b[i] * 2^i; return dezimal; Sie sehen, daß diese Regeln fast unserem umgangssprachlichen Algorithmus entsprechen. In Maschinensprache sähe das sehr viel komplizierter aus. Nun hatten wir vorhin doch erwähnt, daß ein Computer nur Maschinensprache versteht wie kann er dann Programme höherer Programmiersprachen verstehen? Eigentlich ist die Antwort offensichtlich immer wenn ein Computer etwas tun soll, benötigt er eine Vorgehensvorschrift. Damit ein Computer Programme höherer Programmiersprachen verstehen kann, muß ihm ein Programm geben, das für ihn als Übersetzer arbeitet und den Programmtext in Maschinensprache übersetzt. Ein solches Programm nennt sich Compiler. Für jede Programmiersprache gibt es für jeden Rechnertyp einen speziellen Compiler, der gültige Texte der Programmiersprache zu Maschinencode des jeweiligen Rechners kompiliert (kompilieren == übersetzen). Der Compiler dient dem Computer quasi als Dolmetscher für die von uns Menschen erstellten Textdateien. Um ein Programm zu entwickeln und ablaufen zu lassen, sind also die folgenden Schritte nötig: 15

1. Es muß analysiert werden, was die Problemstellung genau beinhaltet und welche Ziele mit der Programmentwicklung verfolgt werden sollen (Analysephase). 2. Es muß geplant werden, wie die Problemstellung in ein Programm umgesetzt werden soll. Insbesondere müssen die Regeln, nach denen das Programm arbeiten soll, umgangssprachlich formuliert werden. Berechnungsvorschriften müssen hierbei als Algorithmus formuliert werden (Design Phase). 3. Dann muß das Programm in einer Programmiersprache programmiert werden, man sagt auch: implementiert werden (Programmier Phase). 4. Dann muß das Programm kompiliert werden und kann kann anschließend getestet oder verwendet werden. Graphik 2 : Entwicklung eines Programms Programmvorhaben in umgangssprachlicher Fassung Analyse und Entwurf Eindeutige umgangssprachliche Formulierung (Algorithmus) Programmieren Formulierung in höherer Programmiersprache Kompilieren Maschinensprache 2.5 Zusammenfassung des Kapitels Sie sollten nun die folgenden Fragen beantworten können: Wie unterscheidet ein Computer Musik-, Graphik- und andere Daten? Was sind Dateneingabe, Zentraleinheit, Speicher, Datenausgabe? Was sind RAM und ROM? Was ist ein Betriebssystem? Wie ist das RAM aufgebaut? Was sind Bits, Bytes, Words, Kilobytes, Megabytes? Warum sind Binärzahlen für Computer wichtig? Was zeichnet einen Algorithmus aus? Was ist der Unterschied zwischen einem Algorithmus und einem Programm? Warum programmiert man Computer meistens nicht in Maschinensprache? Welche Beziehung besteht zwischen Maschinensprache, höherer Programmiersprache und Compiler? 16

3 Das Java Programmiersystem JDK Im vorigen Kapitel haben Sie erfahren, daß ein Computer nicht in der Lage ist, von Menschen lesbare Programme direkt zu verstehen. Der Computer benötigt einen Dolmetscher, der das für Menschen verständliche Programm in seine Sprache übersetzt. Zum Java Programmiersystem gehören sogar zwei solche Dolmetscher der Java Compiler und die sogenannte Java Virtual Machine. Bevor wir auf die Programmierung von Java eingehen, müssen wir Sie mit dem Java Programmiersystem und speziell mit diesen beiden Dolmetschern vertraut machen. 3.1 Bestandteile des JDK Schon in der Einleitung wurde erwähnt, daß Java 8 nicht nur aus einer Programmiersprache besteht. Alles, was man zur Java-Programmierung benötigt, wurde von den Schöpfern von Java, der Firma Sun 9, in einem Paket zusammengeschnürt, das sich JDK: Java Development Kit nennt. Das JDK enthält folgende Dinge: Eine umfangreiche Sammlung von Programmbausteinen. Im JDK sind bereits sehr viele Programmbausteine, sogenannte Klassen, enthalten. Wenn man diese Bausteine in eigene Programme einbaut, kann man mit Java relativ einfach Internet-, Graphik- oder Fenster-Anwendungen erzeugen. Wir werden Ihnen in dieser Veranstaltung nur ganz wenige dieser Programmbausteine vorstellen, da wir zum Programmieren lernen lieber selbst einfache Programme bauen wollen als komplizierte Programme aus diesen Programmbausteinen zu erstellen. Umfangreiche Dokumentation: Für all diese fertigen Programmbausteine (Klassen) und alle anderen Werkzeuge von Java liegt umfangreiche Dokumentation von HTML Dateien vor, welche mit einem WWW Browser betrachtet werden kann. Um die von Java bereitgestellten Programmbausteine zu verwenden, muß man viel mit dieser Dokumentation arbeiten. Daher werden wir im Rahmen dieser Veranstaltung ein paar Aufgaben stellen, bei denen Sie sich in der Dokumentation zurechtfinden müssen. Einige Werkzeuge, zum Beispiel ein Werkzeug, das Ihre Programme liest und die enthaltene Dokumentation in HTML-Dokumenten zusammenfasst. Dieses Werkzeug werden Sie hier auch kennenlernen. Java Compiler und Java Virtual Machine. Diese Programme sind die Dolmetscher zwischen Ihnen und dem Computer. 8 http://www.java.sun.com 9 http://www.sun.com 17

3.2 Übersetzen und Ausführen von Java-Programmen Ein Java Programm besteht aus einem oder mehreren Programmbausteinen, welche Klassen genannt werden. Jede Klasse ist in der Regel in einer eigenen Textdatei beschrieben und wird mit einem Text-Editor erstellt. Bevor Sie weiterlesen, sollten Sie daher mit einem Text-Editor umgehen können. Sie sollten auch mit der Kommandozeile von Unix umgehen können; Hinweise hierzu finden Sie im Anhang A und in der ersten Hausaufgabe. Wenn Sie unter anderen Betriebssystemen als Unix arbeiten wollen, beschaffen Sie sich die entsprechenden Informationen bitte selbst. Beispiel: In dem untenstehenden Kasten sehen Sie ein sehr einfaches Java Programm. Wenn man es startet, gibt es den Text Hallo, Welt aus. Bitte tippen Sie das Programm in Ihrem Text Editor ab und speichern es in einer Datei namens Hallo.java. Beachten Sie hierbei bitte, daß die Zeilennummern nicht zum Programm gehören wenn wir Beispielprogramme abdrucken, numerieren wir die Zeilen durch, um auf die einzelnen Programmteile eingehen zu können. Außerdem achten Sie beim Abtippen bitte auf die Groß- und Kleinschreibung. Für Java besteht zwischen großgeschriebenen und kleingeschriebenen Buchstaben überhaupt keine Verbindung so ist das Wort class für Java etwas völlig anderes als das Wort Class. Beispiel: Einfache Java Klasse 1 class Hallo 2 { 3 public static void main(string[] args) 4 { 5 System.out.println("Hallo, Welt"); 6 7 Da in diesem Kapitel nur der Java Compiler behandelt werden soll, wollen wir hier auf die Funktionsweise von Java Programmen noch nicht eingehen. Sie brauchen noch überhaupt nicht zu verstehen, was die ganzen kryptischen Symbole in dem Programm bedeuten; im nächsten Kapitel wird das alles viel klarer werden. Sie sollten nun eine Textdatei namens Hallo.java mit dem Text des vorigen Beispiels in ihrem Arbeitsverzeichnis besitzen. Als nächstes soll aus dieser Textdatei ein vom Computer ausführbares Programm erzeugt werden. Dazu verwendet man den Java-Compiler. In Kapitel 2.4 wurde ja bereits erläutert, daß ein Compiler ein für Menschen verständliches Programm in ein für Computer verständliches Programm umwandelt. Bevor Sie den Compiler verwenden können, muß auf Ihrem Computer die Java- Programmierumgebung installiert und laufbereit sein. Falls Sie im CIP-Pool der TU Braunschweig arbeiten, dann ist das kein Problem hier ist alles schon fertig installiert. Wenn Sie jedoch zuhause arbeiten möchten, müssen Sie selbst dafür sorgen, daß die Java Umgebung funktioniert. Dabei helfen Ihnen vielleicht unsere im WWW verfügbaren Tips weiter (siehe auch WWW-Seite? ). Wir 18

gehen im weiteren davon aus, daß Sie eine funktionsfähige Java-Programmierumgebung haben. Aber nun zum Java Compiler dieser ist ein Programm namens javac. Um durch ihn, die zuvor von Ihnen erstellte Datei Hallo.java übersetzen zu lassen, wechseln Sie bitte auf einer Kommandozeile in das Verzeichnis, in welchem Sie die Datei abgespeichert haben. Dort geben Sie dann bitte ein: > javac Hallo.java Der Compiler prüft darauf zunächst, ob die Textdatei Hallo.java ein gültiges Java Programm enthält. Java Programme müssen einen ganz bestimmten Aufbau haben, damit sie vom Compiler übersetzt werden können. Nur wenn die Datei tatsächlich ein gültiges Programm enthält, übersetzt der Compiler sie in eine dem Computer verständliche Form und dient so als Dolmetscher zwischen uns und dem Computer. Wenn Sie die Klasse korrekt abgetippt haben, sollte das Kompilier Kommando zu keiner Bildschirmausgabe führen. Der Compiler ist auch kleinsten Tippfehlern gegenüber sehr ungnädig selbst wenn Sie beim Abtippen des Programms nur kleine Fehler gemacht haben, kann es ihnen passieren, daß der Compiler ihr Programm mit einer Fehlermeldung ablehnt. Falls Ihnen das beim Compiler Aufruf passiert ist, prüfen Sie bitte, ob Sie das Beispielprogramm exakt abgetippt haben, korrigieren es, speichern die Änderungen (!) und probieren dann erneut den Aufruf des Compilers. Wenn das nicht hilft, lesen Sie bitte unsere Hinweise zu Fehlermeldungen in Anhang C. Wenn Sie auch damit nicht weiterkommen, holen Sie sich bitte einen Hiwi zur Hilfe. Wir gehen im folgenden davon aus, daß der Aufruf des Compilers funktioniert hat. In diesem Fall hat der Compiler Ihr Programm übersetzt und die übersetzte Fassung in einer neuen Datei namens Hallo.class gespeichert. Schauen Sie bitte nach, ob diese Datei tatsächlich erzeugt wurde 10. Die neu erzeugte Datei Hallo.class enthält die für einen Computer verständliche Version unserer Klasse. Wenn Sie diese Datei mit dem cat-kommando auf den Bildschirm ausgeben, erhalten Sie eine ganz wilde Ausgabe außerdem müssen Sie danach möglicherweise eine neue Kommandozeile öffnen, weil Ihre alte Kommandozeile nur noch komische Zeichen anzeigt. Wir Menschen können mit dem Inhalt der erzeugten Datei Hallo.class also nicht viel anfangen. Wir haben Ihnen bisher aber nur die halbe Wahrheit erzählt es ist zwar tatsächlich so, daß der Java Compiler die Textdatei Hallo.java in eine Maschinnensprache Datei Hallo.class umgewandelt hat. Es kann jedoch kein tatsächlich existierender Computer die vom Java Compiler benutzte Maschinensprache direkt verstehen. Der Java Compiler übersetzt nämlich jedes Programm in eine künstliche Maschinensprache, den Java Bytecode. Java Bytecode ist eine Art Computer Esperanto. Kein Computer versteht es direkt, doch es ähnelt den meisten Computermaschinensprachen. Soll ein Computer das in einer Java Bytecode Datei enthaltene Programm abarbeiten, so benötigt er einen weiteren Dolmetscher, der den Java Bytecode für ihn übersetzt. Dieser zweite Dolmetscher nennt sich Bytecode-Interpreter 11. 10 Wenn Sie nicht wissen, wie das geht, haben Sie vermutlich Anhang A noch nicht gelesen 11 Das englische Wort Interpreter heißt auf deutsch Dolmetscher 19

Man tut im übrigen so, als wäre Bytecode tatsächlich eine Maschinensprache und stellt sich gerne vor, daß irgendwo ein Computer existieren könnte, der den Bytecode direkt versteht. Da dieser Computer aber nur durch den Bytecode- Dolmetscher existiert, nennt man den Bytecode-Dolmetscher auch Java Virtual Machine (JVM) (virtueller Java-Computer). Natürlich können Java-Programme damit nicht so schnell sein wie Programme anderer Programmiersprachen, welche für den jeweilige Computer direkt verständlichen Programmcode erzeugen. Der Prozessor Ihres Computes führt ja kompilierte Java Programme niemals direkt aus sondern benutzt immer seinen Bytecode Dolmetscher. Der Umweg über den Java Bytecode ist aber auch ein sehr großer Vorteil und hat den Einsatz von Java im Internet erst ermöglicht hierdurch werden Java-Programme nämlich systemunabhängig. In der Theorie läuft jedes Java- Programm auf jeder Hardware und auf jedem Betriebssystem, für das eine virtuelle Java Maschine existiert. Man muß sich also nicht mehr entscheiden, ob man ein Programm für Windows, Macintosh, Unix oder sonst ein Betriebssystem kompiliert. Wenn die virtuelle Java-Maschine auf diesem Betriebssystem vorhanden ist, läuft hierauf jedes kompilierte Java Programm. Das Programm, welches die virtuelle Maschine simuliert, heißt java. Um die kompilerte Datei Hallo.class auszuführen, geben Sie bitte auf der Kommandozeile das Kommando > java Hallo ein. Daraufhin führt der Bytecode-Interpreter den in Hallo.class enthaltenen Bytecode aus. Es sollte folgende Meldung am Bildschirm erscheinen: Gratuliere, Ihr erstes Java--Programm funktioniert. Ein Hinweis noch: Beachten Sie, daß die Endung.class beim Aufruf des Bytecode-Interpreters nicht mit angegeben werden darf. Hingegen muß beim Aufruf des Compilers javac immer die Endung.java mit angegeben werden. 3.3 Zusammenfassung Was ist das JDK? Warum benötigt man einen Compiler? Sie sollten den Java-Compiler aufrufen können. Was erzeugt der Java-Compiler? Was ist ein Bytecode-Interpreter, und warum wird er benötigt? Wie unterscheiden sich Java-Compiler und Bytecode-Interpreter bezüglich der Endung von Dateinamen? Überlegen Sie sich, wieso der Bytecode Java so gut für die Verwendung im Internet geeignet macht berücksichtigen Sie hierbei, daß für Menschen verständlicher Programmtext meist als Geschäftsgeheimnis angesehen wird. 20