Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 3. Auflage
 <<    <     >    >>   API  Kapitel 2 - Schnelleinstieg

2.2 Erste Gehversuche



Falls Sie die ersten Gehversuche in Java machen wollen, ohne erst viele Grundlagen lernen zu müssen, oder wenn Sie einfach nur daran interessiert sind, möglichst schnell Ihr erstes Java-Programm auszuführen, dann sollten Sie den vorliegenden Abschnitt lesen. Sie erfahren hier in komprimierter Form, wie Sie ein einfaches Programm erstellen und mit den Werkzeugen des JDK übersetzen und ausführen. Zusätzlich gibt es einige Hinweise, um einfache Ein- und Ausgaben durchzuführen.

2.2.1 Quelltext erstellen, übersetzen und ausführen

1. Vorbereitung

Installieren Sie das JDK wie in Abschnitt 2.1 beschrieben, und sorgen Sie dafür, daß in Ihrer Pfadangabe das Verzeichnis \jdk1.4\bin enthalten ist. Falls Sie das JDK nicht nach c:\jdk1.4 installiert haben, passen Sie die Pfadangaben entsprechend an. Ein Aufruf von PATH zeigt an, ob der Pfad korrekt gesetzt ist, durch Eingabe von java -version können Sie die installierte JDK-Version überprüfen:

Abbildung 2.1: Ist das JDK korrekt installiert?

2. Erstellen des Quelltextes

Erstellen Sie mit einem beliebigen Texteditor die folgende Datei Hello.java:

001 /* Hello.java */
002 
003 public class Hello
004 {
005   public static void main(String[] args)
006   {
007     System.out.println("Hello, world");
008   }
009 }
Hello.java
Listing 2.1: Hello, world

Die korrekt erstellte Datei enthält die Definition der Klasse Hello mit der Methode main, die das Hauptprogramm unserer Applikation enthält. Bitte geben Sie die am Anfang jeder Zeile stehenden Zeilennummern nicht mit ein. Sie dienen lediglich dazu, auf Teile des Listings verweisen zu können und werden beim Erstellen des Buchs automatisch generiert. Der Java-Compiler kann damit nichts anfangen.

Achten Sie bei der Vergabe der Datei- und Klassennamen auf korrekte Groß-/Kleinschreibung. Sowohl der Compiler als auch das Laufzeitsystem erwarten, daß die Hauptklasse einer Quelldatei genauso geschrieben wird wie der Name der Datei, in der sie sich befindet. Der Dateiname unserer Beispielklasse Hello lautet daher Hello.java und nicht hello.java, HELLO.JAVA oder HELLO.JAV. Erstellen Sie die Datei nicht auf Systemen oder Laufwerken (beispielsweise im Netz), die keine langen Dateinamen unterstützen. Der Compiler würde die Datei in diesem Fall nicht finden.

 Warnung 

Sie können zum Editieren beispielsweise notepad oder edit (unter Windows) oder vi oder Emacs (gibt es für UNIX und Windows) verwenden. Ein guter Windows-Editor, der fast ebensoviel kann wie seine professionellen (und sehr viel teureren) Brüder, ist TextPad von Helios Software Solutions. Eine Testversion kann von http://www.textpad.com heruntergeladen werden, die Vollversion ist für wenig Geld zu haben. Wer ein wenig Einarbeitungszeit, Konfigurationsaufwand und das Erlernen von Grundkenntnissen in LISP nicht scheut, der sollte sich Emacs näher ansehen.

Abbildung 2.2: Hello.java im Windows-Notepad

Werden die (wenig empfehlenswerten) Windows-Editoren notepad oder edit verwendet, kann man als Anfänger unter Umständen einige Überraschungen erleben:

  • notepad hängt beim ersten Speichern einer Datei die Erweiterung .txt an den Dateinamen an. Aus Test1.java wird also Test1.java.txt. Eine solche Datei wird von javac natürlich nicht mehr akzeptiert. Nach dem ersten Speichern muß also zunächst durch Umbenennen im Explorer der korrekte Dateiname hergestellt werden. Wird die Datei wiederholt geöffnet und gespeichert, treten diese Probleme nicht mehr auf. Alternativ kann beim ersten Speichern der Dateiname in Anführungszeichen gesetzt werden, also "Test1.java" geschrieben werden.
  • Wird edit verwendet, kann es zwei Probleme geben. Erstens verwendet das Programm den MS-DOS-Zeichensatz und versieht so Programme mit Windows-Oberfläche mit unbrauchbaren Umlauten (sie wären dann nur für Windows-Konsolenanwendungen korrekt). Zweitens unterstützt edit unter NT 4 keine langen Dateinamen. Das Programm würde beispielsweise die Datei Test1.java als TEST1.JAV abspeichern und somit ebenfalls für den Compiler unerreichbar machen.
 Warnung 

3. Übersetzen des Quelltextes

Übersetzen Sie die Datei mit dem Kommando javac (so heißt der Java-Compiler des JDK). Wenn Sie keinen Fehler gemacht haben, wird der Compileraufruf kommentarlos akzeptiert, und Sie sehen wieder den DOS-Prompt:

Abbildung 2.3: Übersetzen von Hello.java

Alle wichtigen Werkzeuge des JDK arbeiten kommandozeilenorientiert. Sie haben also keine grafische Oberfläche, sondern werden in einer DOS-Box aufgerufen und durch Aufrufparameter gesteuert. Eine integrierte Entwicklungsumgebung mit integriertem Editor, Compiler und Debugger bietet das JDK nicht. Eine DOS-Box wird unter Windows 9x über den Eintrag "MS-DOS-Eingabeaufforderung" aufgerufen, der im Startmenü unter "Programme" liegt. Eine Übersicht über die JDK-Werkzeuge und ihre Bedienung finden Sie in Kapitel 50.

 Hinweis 

4. Ausführen des erzeugten Programms

Sie haben nun eine Datei Hello.class erzeugt, die mit dem Java-Interpreter ausgeführt werden kann. Das Programm wird aufgerufen und gibt die gewünschte Meldung auf dem Bildschirm aus:

Abbildung 2.4: Ausführen von Hello

Wenn der Interpreter den Bytecode zur angegebenen Klassendatei nicht finden kann, gibt er eine Fehlermeldung NoClassDefFoundError aus. Wenn die .class-Datei tatsächlich vorhanden ist, liegt das fast immer daran, daß der Name der Klasse falsch geschrieben wurde oder daß darin keine oder eine falsch deklarierte main-Methode vorhanden ist. Beachten Sie, daß die Erweiterung .class beim Aufruf des Interpreters nicht an den Namen der auszuführenden Klasse angehängt werden darf.

 Warnung 

5. Beenden des Programms

Ein einfaches Java-Programm wird automatisch beendet, wenn seine main-Methode beendet wurde (in welchen Fällen das nicht so ist, wird am Ende von Abschnitt 22.2.1 beschrieben). Unser Programm wird also nach der Ausgabe von »Hello, world« beendet. Es gibt natürlich auch Fälle, bei denen ein gestartetes Programm nicht ordnungsgemäß zum Ende kommt und auch auf Benutzereingaben nicht mehr reagiert - meistens ist dafür eine Endlosschleife verantwortlich. Glücklicherweise läßt sich die virtuelle Maschine, in der das Java-Programm läuft, fast immer durch Drücken von [STRG]+[C] abbrechen. Diese »Notbremse« sollte allerdings nur im Notfall gezogen werden, denn sie beendet das Programm augenblicklich und hinterläßt dessen Daten möglicherweise in einem inkonsistenten Zustand.

Falls Sie es trotz aller Bemühungen bis zu diesem Punkt noch nicht geschafft haben, das Beispiel zu übersetzen und zu starten, kann Ihnen möglicherweise Abschnitt 2.3.7 weiterhelfen. Er beschreibt einige häufig vorkommende Fehler, gibt Tips zu ihrer Diagnose und zeigt, wie man sie behebt.

 Tip 

2.2.2 Die Beispielprogramme

Starten der Beispielprogramme

Auf die im vorigen Abschnitt beschriebene Weise können nun beliebige Java-Programme angelegt, übersetzt und ausgeführt werden. Die im Buch abgedruckten Beispielprogramme befinden sich auf der CD-ROM im Verzeichnis \examples. Kopieren Sie diese einschließlich der darin enthaltenen Unterverzeichnisse in ein beliebiges Verzeichnis auf Ihrer Festplatte. Benutzen Sie einen beliebigen Editor zur Eingabe oder Veränderung von .java-Dateien, übersetzen Sie die Datei mit dem Kommando javac, und starten Sie das fertige Programm mit dem Kommando java. Falls Sie ein Applet geschrieben haben, erstellen Sie zusätzlich eine passende HTML-Datei, und starten Sie das Programm mit dem Kommando appletviewer anstatt mit java. Die Originalversionen der Beispielprogramme wurden bereits vorkompiliert und können direkt mit dem Java-Interpreter ausgeführt werden.

Als Entwicklungssysteme für dieses Buch wurden die Versionen 1.1 bis 1.4 des JDK verwendet. Die meisten Beispiele wurden unter Windows 95 bzw. 98 entwickelt und getestet, einige wenige auch unter NT, SUSE Linux oder Solaris. In die Beispiellistings aus dem AWT sind einige Hinweise von Lesern mit SUN-Solaris-Plattformen eingeflossen. Keines der Programme wurde vom Autor auf einem Macintosh getestet (mangels Verfügbarkeit). Bei Verwendung anderer Plattformen könnte es zu leichten Abweichungen bei der Installation, der Funktionalität der Entwicklungswerkzeuge oder den Eigenschaften der Standardbibliothek kommen.

Die .class-Dateien im \examples-Verzeichnis der CD-ROM wurden mit dem JDK-1.4-Compiler erzeugt. Falls es Probleme geben sollte, ein bestimmtes Beispielprogramm mit einem älteren Java-Interpreter zu starten, hilft eventuell Neukompilieren dieses Programmes mit dem älteren Compiler. Nur eine Handvoll Beispielprogramme verwenden Code, der mindestens das JDK 1.4 erfordert, die meisten können auch mit älteren JDKs kompiliert und ausgeführt werden.

 Hinweis 

Zusätzlich erforderliche Dateien

Der mit Abstand häufigste Fehler beim Starten der Beispielprogramme passiert dadurch, daß nicht alle benötigten .class-Dateien im aktuellen Verzeichnis liegen. Denn neben der kompilierten Klassendatei benötigen die Beispielprogramme mitunter weitere .class-Dateien. Werden die Beispiele direkt aus dem examples-Verzeichnis der CD-ROM (oder einer vollständigen Kopie davon) gestartet, treten keine Probleme auf. Werden jedoch nur einzelne Klassendateien kopiert, kann es beim Aufruf von java zu Fehlern des Typs NoClassDefFoundError kommen. Der häufigste weist auf einen fehlenden WindowClosingAdapter hin, der von den meisten GUI-Beispielen benötigt wird. In diesem Fall müssen lediglich die fehlenden Dateien WindowsClosingAdapter.java und WindowsClosingAdapter.class aus dem examples-Verzeichnis in das aktuelle Verzeichnis kopiert werden.

 Warnung 

Mitunter werden neben den .class-Dateien noch weitere Dateien benötigt, damit das Beispiel korrekt läuft. So erfordert etwa Listing 27.4 zusätzlich die Datei testicon.gif, damit das Fenster-Icon korrekt angezeigt wird. Und um das Beispiel zum Abspielen von Midi-Dateien in Abschnitt 48.3.5 wie angegeben ausführen zu können, wird die Datei ame.mid benötigt. Diese Dateien liegen in aller Regel ebenfalls im examples-Verzeichnis und sollten bei Bedarf auch in das Startverzeichnis des Beispielprogramms kopiert werden.

In einigen Kapiteln werden Themen behandelt, die zusätzliche jar-Archive fordern, weil die entsprechende Funktionalität nicht im Standardumfang des JDK enthalten ist oder weil herstellerspezifische Treiber erforderlich sind. Hierzu zählen insbesondere Abschnitt 13.5.3, Abschnitt 26.4.1 und Kapitel 42. Wo die entsprechenden jar-Archive zu finden sind, wird in den jeweiligen Abschnitten erläutert. Wie sie in den CLASSPATH eingebunden werden, damit Compiler und Interpreter sie finden, wird in Abschnitt 13.2.3 erklärt.


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0.1
 <<    <     >    >>   API  © 1998-2003 Guido Krüger, http://www.javabuch.de