Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 50 - Hilfsprogramme des JDK

## 50.2 java - Der Interpreter

- 50.2 java - Der Interpreter
  - 50.2.1 Aufruf
  - 50.2.2 Beschreibung
  - 50.2.3 Optionen

### 50.2.1 Aufruf

    java [ options ] classname [{ args }]

    javaw [ options ] classname [{ args }]

### 50.2.2 Beschreibung

Der Interpreter `java` dient dazu, kompilierte Java-Programme auszuführen, die als Bytecode in .class-Dateien vorliegen. `javaw` erfüllt denselben Zweck, erzeugt aber kein Terminalfenster beim Start des Programms und erlaubt nicht die Verwendung der Standard-Streams `System.in`, `System.out` und `System.err`. Beim Aufruf beider Programme wird der Name einer Klassendatei erwartet (ohne die Erweiterung .class). Damit sie ausgeführt werden kann, muß sie eine Klassenmethode `main` mit folgender Signatur enthalten:

    public static void main(String[] args)

Alle Argumente, die nach dem Namen der Klassendatei an `java` übergeben werden, stehen nach dem Aufruf von `main` in `args` zur Verfügung. Der Java-Interpreter wird nach dem Rücksprung aus `main` beendet, wenn keine eigenen Threads erzeugt wurden. Falls weitere Threads erzeugt wurden, wird er verlassen, nachdem der letzte Vordergrund-Thread beendet wurde.

Da während der Ausführung eines Java-Programms meist weitere Klassendateien benötigt werden, muß der Interpreter wissen, wo diese zu finden sind. Standardmäßig sucht er dabei im systemspezifischen Installationsverzeichnis und im aktuellen Verzeichnis. Die Suchstrategie kann durch Setzen der Umgebungsvariable `CLASSPATH` oder mit Hilfe der Option `-classpath` verändert werden. Sollen nur die Standardbibliotheken des JDK verwendet werden, sind weder `CLASSPATH` noch `-classpath` erforderlich. Weitere Informationen zu `CLASSPATH`-Einstellungen finden Sie in Abschnitt 13.2.2.

|  |  |  | In der Windows-Version des JDK 1.2 ist ein Just-In-Time-Compiler (kurz JIT) enthalten, der standardmäßig aktiviert ist. Der JIT übersetzt zur Laufzeit des Programmes häufig benötigte Bytecodes in Maschinencode und beschleunigt so die weitere Ausführung des Programms. Soll der JIT deaktiviert werden, kann die Umgebungsvariable `JAVA_COMPILER` oder die Systemeigenschaft `java.compiler` auf den Wert NONE gesetzt werden. Seit dem JDK 1.3 ist der adaptive Just-In-Time-Compiler HotSpot fester Bestandteil der Auslieferung. Er kann mit der Option `-Xint` aus- und mit `-Xmixed` angeschaltet werden. Standardmäßig ist er aktiviert. Soll im JDK 1.3 anstelle von HotSpot der JIT des JDK 1.2 verwendet werden, kann dieser mit der Option `-Xclassic` aktiviert werden. Seit der Version 1.3.1 ist zusätzlich der bis dahin nur separat erhältliche Server-Hotspot im JDK enthalten. Er führt weitergehende (und kostspieligere) Optimierungen aus als der Client-Hotspot und ist vorwiegend für langlaufende Applikationen ohne direkte Benutzeroberfläche gedacht. Er kann mit der Option `-server` aktiviert werden, während der Client-Hotspot auf `-client` reagiert. |  |
JDK1.1-1.4

### 50.2.3 Optionen

Option | Bedeutung
`-classpath path` | Gibt die Liste der Pfade zur Suche von Klassendateien an. Alternativ kann auch die Abkürzung `-cp` verwendet werden.
`-prof` | Aktiviert in Prä-1.2-Versionen des JDK den Profiler im Interpreter, der Informationen über das Laufzeitverhalten der Anwendung in die Datei java.prof schreibt. Ab dem JDK 1.2 wird der Profiler mit der Option `-Xprof` bzw. `-Xrunhpof` aktiviert. Genaue Informationen zur Verwendung des Profilers sind in Abschnitt 49.3 zu finden.
`-version` | Ausgabe der Versionsnummer.
`-help` | Ausgabe eines kurzen Hilfetextes.
`-verbose` | Gibt bei jedem Laden einer Klasse eine Meldung auf der Console aus. Seit dem JDK 1.3 können wahlweise die Schalter `:class`, `:gc` oder `:jni` angehängt werden. `:class` entspricht dabei der Voreinstellung, `:gc` dokumentiert die Garbage-Collector-Aufrufe und `:jni` zeigt die Verwendung von Native Methods.
`-verbosegc` | Veranlaßt den Garbage Collector bei jedem Aufruf zur Ausgabe einer Nachricht.
`-DpropName=value` | Weist dem Property `propName` den Wert `value` zu.
`-Xms n` | Spezifiziert die Größe des beim Start allozierten Speichers. n ist dabei eine Ganzzahl mit einer der Erweiterungen »k« oder »m«. Die Buchstaben stehen für die Größenordnungen kilo und mega. Die Standardeinstellung ist versions- und betriebssystemabhängig, typische Werte sind 1m oder 2m.
`-Xmx n` | Spezifiziert die Größe des maximal allozierbaren Speichers. n ist dabei eine Ganzzahl mit einer der Erweiterungen »k« oder »m«. Die Standardeinstellung ist versions- und betriebssystemabhängig, typische Werte sind 16m oder 64m.
`-enableassertions` | Schaltet Assertions an (Abkürzung `-ea`). Dieser Schalter wird ausführlich in Abschnitt 6.4.1 erklärt.
`-disableassertions` | Schaltet Assertions aus (Abkürzung `-da`). Dieser Schalter wird ausführlich in Abschnitt 6.4.1 erklärt.

Tabelle 50.2: Optionen des Java-Interpreters

|  |  |  | In den 1.1er Versionen des JDK gab es ein Programm `jre`, das dazu diente, den Interpreter des Laufzeitsystems zu starten (Java Runtime Environment). Dieses Programm ist in der aktuellen JDK-Version nicht mehr vorhanden, sondern wird durch das Programm `java` ersetzt. Auch der in früheren Versionen vorhandene debugging-fähige Interpreter `java_g` existiert seit dem JDK 1.2 nicht mehr. |  |
JDK1.1-1.4

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