B B.1 Anhang: Verwendung von Java unter Unix Java-Compiler und Laufzeitumgebung Die Programmierung mit Java geht folgendermaßen vor sich: Sie tippen Ihren Programmtext mit einem Editor ein und speichern ihn irgendwo in Ihrem Homeverzeichnis. Der Programmtext kann von einem Computer aber nicht verstanden und muß erst in eine vom Computer verstandene Form übersetzt (kompiliert) werden. Das Programm, welches Ihren Quelltext in eine vom Computer verstandene Form übersetzt, nennt sich Compiler. Der Java-Compiler hat eine Besonderheit — er erzeugt zwar für einen Computer verständlichen Code, aber der erzeugte Code ist für keinen existierenden Computer verständlich. Der Java-Compiler erzeugt Code — den sogenannten Java Bytecode, der von einem sogenannten virtuellen Computer — der Java Virtual Machine (JVM) — verstanden werden kann. Die Java Virtual Machine ähnelt real existierenden Prozessoren, berücksichtigt dabei aber die besonderen Eigenschaften von Java. Zum Java-System gehört nun ein Programm, welches diesen virtuellen Computer auf einem anderen Computer emuliert. Sie müssen also nach dem Kompilieren Ihres Quelltextes ein weiteres Programm starten, welches den Bytecode entgegennimmt und interpretiert. Natürlich kann Java damit nicht so schnell sein wie andere Programmiersprachen, die direkt Programmcode die jeweilige Zielplattform erzeugen, weil der Prozessor niemals Java-Code direkt ausführt. Es gibt allerdings inzwischen Laufzeitsysteme, welche welche den Bytecode auf die jeweilige reale Hardware-Plattform kompilieren und dort direkt ausführen können. Die Tatsache, daß Java-Programme nicht auf eine spezielle Zielarchitektur kompiliert werden, bewirkt also daß Java-Programme nicht so schnell laufen wie in anderen Sprachen entwickelte Software. Dennoch ist die Verwendung der virtuellen Maschine ein großer Vorteil und hat den Einsatz von Java im Internet erst ermöglicht — hierdurch wird nämlich Systemunabhängigkeit erreicht. In der Theorie läuft ein Java-Programm auf jeder Hardware und jedem Betriebssystem, für das eine virtuelle Maschine existiert. Man muß sich also nicht mehr entscheiden, ob man ein Programm für Windows, Macintosh, Linux, HPUnix, Be-OS, OS/2 oder sonst ein Betriebssystem entwickelt. Sobald die virtuelle Java Maschine auf diesem Betriebssystem vorhanden ist, läuft hierauf jedes Java-Programm identisch (wohlgemerkt: in der Theorie). B.2 Kompilation Wir wollen nun ein erstes Programm kompilieren. Bitte tippen Sie dazu folgendes Programm in einem Editor ein — beachten Sie dabei, Groß und Kleinschreibung exakt so wiederzugeben wie hier beschrieben. public class HalloWelt { public static void main( String[] args ) { 161 System.out.println("Hallo, Welt"); } } Sie sollten immer darauf achten, daß der Name einer Programmdatei mit dem Namen der enthaltenen Klasse beginnt und auf .java endet. Hier ist der Name der Klasse “HalloWelt”. Speichern Sie daher den obigen Programmtext in der Datei HalloWelt.java ab. Um die Klasse zu kompilieren, gehen Sie bitte auf eine Unix-Shell und wechseln in das Verzeichnis, in welchem Sie die Datei gespeichert haben. Hier geben Sie dann ein > javac HalloWelt.java Wenn Sie beim Abtippen einen Fehler gemacht haben, meldet sich der Compiler mit einer Fehlermeldung. Lesen Sie bitte die Fehlermeldung aufmerksam — Sie sollten Fehlermeldungen immer aufmerksam lessen — und korrigieren ihn bitte im Editor anschließend den in der Fehlermeldung beschriebenen Fehler. Speichern Sie dann die Datei und kompilieren sie erneut. Wenn Sie beim abtippen keine Fehler gemacht haben, sollte beim Kompilieren keine Ausgabe auf dem Bildschirm erzeugt worden sein aber die Datei HalloWelt.class entstanden sein. Prüfen Sie dies bitte nach ! Die Datei HalloWelt.class enthält den Bytecode unserer Klasse. Sie können das Programm nun laufen lassen, indem Sie die Java-Virtual-Machine mit unserem kompilierten Programm starten: > java HalloWelt Achten Sie bitte darauf, beim Aufruf von java nicht die Erweiterung .class anzugeben. Dann wird ihre Klasse nämlich nicht gefunden. Wenn Sie bis hierher alles nachgemacht haben, sollte der Text “Hallo, Welt” auf dem Bildschirm ausgegeben werden. B.3 Datentypen Um dieses Kapitel zu verstehen, sollten Sie den Anhang ?? zum Aufbau eines Computers gelesen haben. Um die Attribute unserer Objekte zu definieren, haben wir bisher Wertebereiche wie ganze Zahl, reelle Zahl, Zeichenkette oder Vektor verwendet. Wenn wir in Java die Wertebereiche von Attributen beschreiben, kann man nicht einfach einen umgangssprachlichen Ausdruck wie “ganze positivie Zahl” verwenden. Der Java-Compiler muß schon etwas genauer wissen, was für Zahlen zu verwenden sind. Letztendlich muß ja jede Zahl in einem Java-Programm im Speicher des Computers gespeichert werden. Es sollte einleuchtend sein, daß große Zahlen mehr Platz zur Speicherung benötigen als kleine Zahlen — um eine 20 stellige Zahl aufzuschreiben, benötigt man ja auch mehr Platz als für eine 2 stellige Zahl. Es wäre nun sehr unangebracht, wenn der Java-Compiler jede ganzzahlige Zahl 162