|
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 Werkeugen des JDK übersetzen und ausführen. Zusätzlich gibt es einige Hinweise, um zeilenorientierte Ein- und Ausgaben durchzuführen.
Installieren Sie das JDK wie in Abschnitt 3.4 beschrieben und sorgen Sie dafür, daß in Ihrer Pfadangabe das Verzeichnis \jdk1.2\bin enthalten ist. Falls Sie das JDK nicht nach c:\jdk1.2 installiert haben, passen Sie die Pfadangaben entsprechend an.
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 |
Sie können dazu beispielsweise notepad unter Windows oder vi oder emacs unter UNIX verwenden. Die erstellte Datei enthält die Definition der Klasse Hello. Sie enthält lediglich eine einzige 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 exakt so geschrieben wird, wie der Name der Datei, in der sie sich befindet. Der Dateiname unserer Beispielklasse Hello lautet daher auch Hello.java, und nicht hello.java oder HELLO.JAVA. Erstellen Sie die Datei nicht auf Systemen oder Laufwerken (beispielsweise im Netz), die keine langen Dateinamen unterstützen. Weder der Compiler noch der Interpreter würde in diesem Fall die Klasse finden. |
![]() |
|
![]() |
Übersetzen Sie die Datei mit dem Kommando javac
(so heißt der Java-Compiler des JDK):
javac 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 wichtigsten Werkzeuge und ihre Bedienung finden Sie in Kapitel 26. |
![]() |
|
![]() |
Sie haben nun eine Datei Hello.class
erzeugt, die mit dem Java-Interpreter ausgeführt werden kann:
java Hello
Das Programm gibt die gewünschte Meldung auf dem Bildschirm aus:
Hello, world
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.
Als Entwicklungssystem für dieses Buch wurden hauptsächlich die Versionen 1.1.2, 1.2 Beta 4 und 1.2 RC 2 des JDK unter Windows 95 verwendet. Die meisten Beispiele wurden auf diesem System entwickelt und getestet. Einige Beispiele wurden auch unter Windows 98, 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 eines solchen). Bei Verwendung unterschiedlicher Plattformen könnte es theoretisch zu leichten Abweichungen bei der Installation, der Funktionalität der Entwicklungswerkzeuge oder den Eigenschaften der Standardbibliothek kommen. Diese sind aber in der tatsächlichen Praxis des Autors nicht aufgetreten. |
![]() |
|
![]() |
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, oder man ist gezwungen, seinen eigenen Stil 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 einigermaßen 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 Listing0302 004 { 005 public static void main(String args[]) 006 { 007 //Hier steht der Methodenrumpf 008 } 009 } |
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 } |
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 } |
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 ); |
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.
Für die ersten Schritte in einer neuen Sprache benötigt man immer auch I/O-Routinen, um einfache Ein- und Ausgaben vornehmen zu können. Glücklicherweise kann man in Java nicht nur grafikorientierte Programme schreiben, sondern auch auf die Standardein- und -ausgabe zugreifen. Damit stehen für kleine Programme einfache I/O-Routinen zur Verfügung, die wie in den meisten konventionellen Programmiersprachen verwendet werden können.
Mit Hilfe des Kommandos System.out.println können einfache Ausgaben auf den Bildschirm geschrieben werden. System.out.println erwartet als einziges Argument eine Zeichenkette. Mit Hilfe des Plus-Operators können Zeichenketten und numerische Argumente verknüpft werden, so daß man neben Text auch Zahlen ausgeben kann:
001 /* Listing0306.java */ 002 003 public class Listing0306 004 { 005 public static void main(String args[]) 006 { 007 System.out.println("1+2=" + (1+2)); 008 } 009 } |
Listing0306.java |
Die Ausgabe des Programms ist:
1+2=3
Leider ist es etwas komplizierter, Daten zeichenweise von der Tastatur zu lesen. Zwar steht ein vordefinierter Eingabe-Stream System.in zur Verfügung. Er ist aber nicht in der Lage, die eingelesenen Zeichen in primitive Datentypen zu konvertieren. Statt dessen muß zunächst eine Instanz der Klasse InputStreamReader und daraus ein BufferedReader erzeugt werden. Dieser kann dann dazu verwendet werden, die Eingabe zeilenweise zu lesen und das Ergebnis in einen primitiven Typ umzuwandeln. Weitere Information zur streambasierten Ein-/Ausgabe sind in Kapitel 13 zu finden.
Das folgende Listing zeigt dies am Beispiel eines Programms, das zwei Ganzzahlen einliest, sie zusammenzählt und das Ergebnis auf dem Bildschirm ausgibt:
|
![]() |
|
![]() |
Werden die Zahlen 10 und 20 eingegeben, so lautet die Ausgabe des
Programms:
Bitte a eingeben:
10
Bitte b eingeben:
20
a+b=30
Das Ergebnis von din.readLine ist ein String, der den Inhalt der Eingabezeile enthält . Sollen keine numerischen Datenwerte, sondern Zeichenketten eingelesen werden, so kann der Rückgabewert auch direkt verwendet werden. |
![]() |
|
![]() |
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |