Titel   Inhalt   Suchen   Index   API  Go To Java 2, Zweite Auflage, Handbuch der Java-Programmierung
 <<    <     >    >>  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 diesen Abschnitt lesen. Sie erfahren hier in einer kurzen Anleitung, wie Sie ein einfaches Programm erstellen und mit den Werkzeugen des JDK übersetzen und ausführen. Zusätzlich gibt es einige Hinweise, um zeilenorientierte 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.3\bin enthalten ist. Falls Sie das JDK nicht nach c:\jdk1.3 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.

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, wird man als Anfänger 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.
  • 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 sind 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 Übersicht über die JDK-Werkzeuge und ihre Bedienung finden Sie in Kapitel 49.

 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

5. Beenden des Programms

Ein Java-Programm wird automatisch beendet, wenn seine main-Methode beendet wurde. In unserem Fall also nach der Ausgabe von »Hello, world«. Es gibt natürlich auch Fälle, bei denen ein gestartetes Programm nicht ordnungsgemäß beendet wird und auch auf Benutzereingaben nicht mehr reagiert. Meistens ist dafür eine Endlosschleife verantwortlich, wir werden aber (bei der Anwendung von Threads) noch einen weiteren Grund dafür kennenlernen. 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.

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, 1.2 und 1.3 des JDK unter Windows 95/98 verwendet. Die meisten Beispiele wurden auf diesem System entwickelt und getestet. Einige Beispiele wurden auch unter Windows NT oder S.U.S.E Linux 5.2 entwickelt und getestet. 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.

 Hinweis 

Formatierung der Quelltexte

Es ist bekannt, daß man sich über die Formatierung von Quelltexten und die Einrückung von Deklarationen und Anweisungen streiten kann. Jeder Entwickler hat seinen eigenen Stil und kennt gute Argumente, genau diesen zu verwenden. Mittlerweile gibt es einige große Lager, denen man sich anschließen kann, manchmal ist man auch gezwungen, sich einem vorgegebenen Style-Guide anzupassen. Wir wollen uns diesen fruchtlosen Diskussionen nicht anschließen und keinesfalls behaupten, die in diesem Buch verwendete Art, Sourcecode zu formatieren, wäre die einzig richtige. Dennoch wurde versucht, die Beispielprogramme konsistent zu formatieren und dabei einige wenige Regeln einzuhalten.

Bei Klassen- und Methodendefinitionen stehen die geschweiften Klammern unterhalb der Deklarationsanweisung, und die eigentliche Deklaration ist eingerückt:

001 import java.io.*;
002 
003 public class Listing0202
004 {
005   public static void main(String[] args)
006   {
007     //Hier steht der Methodenrumpf
008   }
009 }
Listing 2.2: Einrücken von Klassen und Methoden

Bei Kontrollanweisungen innerhalb einer Methode schreiben wir die öffnende Klammer dagegen in dieselbe Zeile wie die einleitende Anweisung:

001 for (int i = 0; i < aNeighbours.length; ++i) {
002   if (p1.x + aNeighbours[i][0] == p2.x) {
003     if (p1.y + aNeighbours[i][1] == p2.y) {
004       return true;
005     }
006   }
007 }
Listing 2.3: Einrücken von Kontrollanweisungen

Dies gilt auch für fortgesetzte Anweisungen wie beispielsweise else oder else if:

001 if (cmd.equals("Größer")) {
002   d.height *= 1.05;
003   d.width  *= 1.05;
004 } else if (cmd.equals("Kleiner")) {
005   d.height *= 0.95;
006   d.width  *= 0.95;
007 } else {
008   x = 10;
009 }
Listing 2.4: Einrücken fortgesetzter Anweisungen

Diese Technik verwenden wir meist auch, wenn bei einem Methodenaufruf nicht alle Argumente in eine Zeile passen:

001 System.out.println(
002   "Grüße aus Hamburg".regionMatches(
003     8,
004     "Greetings from Australia",
005     8,
006     2
007   )
008 );
Listing 2.5: Einrücken langer Methodenaufrufe

Diese einfachen Regeln lassen sich in den meisten Fällen anwenden, es gibt aber auch Fälle, in denen sie versagen. So zum Beispiel, wenn der Testausdruck einer if-Anweisung über mehrere Zeilen geht, wenn die Parameterdeklaration einer Methode nicht in eine Zeile paßt oder schlicht, wenn die Verschachtelung bereits sehr tief ist und keine weitere Einrückung zuläßt. In diesem Fall sei der Leser um Nachsicht gebeten und aufgefordert, den ästhetischen Anspruch an das Programm den jeweiligen pragmatischen Erwägungen unterzuordnen.


 Titel   Inhalt   Suchen   Index   API  Go To Java 2, Zweite Auflage, Addison Wesley, Version 2.0
 <<    <     >    >>  © 2000 Guido Krüger, http://www.gkrueger.com