Literatur

Programmerzeugung und Ausführung

Damit ein Java-Programm ausgeführt werden kann, muss ein sogenannter Bytecode erzeugt werden. Für die Übersetzung benötigt man einen Compiler. Es gibt unterschiedliche Compiler. Der Standard-Compiler ist im Software Development Kit (SDK) enthalten. Der ausführbare Compiler heißt javac.

Kaum ein Programmierer kompiliert seine Programme noch "von Hand“. Aber wir wollen an dieser Stelle trotzdem erläutern, wie man mit dem Standard-Compiler via Kommandozeile eine Java-Datei übersetzt und ausführt.

Wenn Sie Ihr Programm wie im vorausgegangenem Kapitel in einer Datei namens HelloWorld.java geschrieben haben, dann können Sie diese mit folgendem Befehl in eine Bytecode-Datei übersetzen:

javac HelloWorld.java HelloWorld.class

Javac ist der Compiler-Aufruf. HelloWorld.java ist die Quellcode-Datei, diese bezeichnen wir als Java-Datei, da sie die Dateiendung .java besitzt. HelloWorld.class ist die erzeugte Bytecode Datei, die von der Java Virtual Machine (JVM) interpretiert werden kann. Die Bytecode-Datei wird auch Class-Datei genannt, da sie die Dateiendung .class besitzt.

Die entstandene Bytecode-Datei HelloWorld.class kann man nun folgendermaßen ausführen:

java HelloWorld

In der Regel besteht ein Java-Programm jedoch nicht nur aus einer Datei, sondern aus mehreren Dateien. Diese werden in einem JAR-Archiv komprimiert (vergleichbar mit einem ZIP-Archiv).  JAR-Archive haben die Dateiendung. jar. Nicht alle JAR-Archive sind ausführbar. In dem folgenden Beispiel zeigen wir Ihnen, wie Sie aus Class-Dateien ein JAR-Archiv erstellen können:

jar cvfm HelloWorld.jar MANIFEST.MF *.class

Jar ist das Programm mit dem das JAR-Archiv erzeugt wird. Die Buchstaben cvfm sind Parameter für den Java-Archivierer. Alle Parameter und dessen Bedeutung können in der Hilfe zum Jar-Programm nachgelesen werden, indem man einfach nur jar in die Kommandozeile eingibt.
Die Datei HelloWorld.jar ist das zu erzeugende Archiv. Der Parameter Manifest.mf ist eine einfache Textdatei. Diese Datei enthält Informationen, die zum Ausführen des Jar-Archives gebraucht werden sowie eventuell zusätzliche Informationen (z.B. Versionsnummer und Name des Entwicklers).
Der letzte Parameter *.class gibt an, dass alle Class-Dateien in dem aufrufenden Verzeichnis, in das JAR-Archiv gepackt werden sollen.

Der Aufbau einer Manifest-Datei sieht z.B. wie folgt aus:

Manifest-Version: 1.0
Created-By: “Name des Programmierers”
Main-Class: HelloWorld
Class-Path:

Die wichtigsten Angaben sind Main-Class und Class-Path. Bei Main-Class wird der Klassenname angegeben, der die main()-Methode enthält. Dadurch "weiß" die JVM, wo der Einstiegspunkt für das Programm ist. Sollten andere JAR-Archive benötigt werden, so müssen diese im Class-Path angegeben werden. Da wir in unserem Beispiel keine weiteren JAR-Archive benötigen, können wir den Class-Path leer lassen. Bei Main-Class tragen wir unsere Klasse HelloWorld ein, da diese die main()-Methode enthält.

Das nun erzeugte JAR-Archiv kann wie folgt ausgeführt werden:

java –jar HelloWorld.jar

Der Befehl java führt unser Beispielprogramm aus. Über den Parameter –jar wird der JVM mitgeteilt, dass es sich bei dem auszuführenden Programm um ein JAR–Archiv handelt.