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

## 50.1 javac - Der Compiler

- 50.1 javac - Der Compiler
  - 50.1.1 Aufruf
  - 50.1.2 Beschreibung
  - 50.1.3 Optionen

In diesem Kapitel wollen wir die wichtigsten Hilfsprogramme des Java Development Kit bzw. Java Runtime Environment vorstellen. Die meisten Programme arbeiten kommandozeilenorientiert und werden aus einer DOS-Box oder einer Shell heraus aufgerufen. Einige von ihnen sind interaktiv und haben eine einfache grafische Oberfläche. Wir wollen die Aufrufsyntax und wichtigsten Optionen der folgenden Programme vorstellen:

- `javac` - Der Compiler
- `java` - Der Interpreter
- `appletviewer` - Der Applet-Interpreter
- `jdb` - Der Debugger
- `javadoc` - Der Dokumentationsgenerator
- `jar` - Das Archivierungswerkzeug
- `javap` - Der Disassembler
- `serialver` - Zugriff auf die `serialVersionUID`
- `keytool` - Verwaltung von kryptografischen Schlüsseln
- `policytool` - Bearbeiten von Policy-Dateien
- `jarsigner` - Signieren von Archiven
- `rmic` - Erzeugen von RMI-Stubs und -Skeletons
- `rmiregistry` - RMI-Namensservice

### 50.1.1 Aufruf

    javac [ options ] [@filelist | { filename.java }]

### 50.1.2 Beschreibung

Der Compiler `javac` übersetzt Sourcecode in Bytecode. Zu jeder Klasse, die innerhalb einer .java-Datei definiert wurde, wird eine eigene .class-Datei erzeugt. Der Compiler wacht automatisch über die Abhängigkeiten zwischen den Quelldateien. Wird beispielsweise in einer Klasse `X` in der Datei X.java eine Klasse `Y`, die in Y.java liegt, verwendet, so wird Y.java automatisch mit übersetzt, wenn es erforderlich ist. Anstelle der Liste von Dateinamen kann nach einem @ auch eine Textdatei angegeben werden, in der die zu übersetzenden Dateien durch Whitespaces getrennt angegeben werden.

### 50.1.3 Optionen

Option | Bedeutung
`-classpath path` | Gibt die Liste der Pfade zur Suche von Klassendateien an. Dieser Schalter übersteuert den Wert einer eventuell gesetzten Umgebungsvariable `CLASSPATH`. Bezüglich der Auswirkungen des Klassenpfades in den unterschiedlichen JDK-Versionen lesen Sie bitte Abschnitt 13.2.2.
`-g` | Aktiviert die Erzeugung von Debug-Informationen. Dieser Schalter sollte aktiviert werden, bevor ein Programm debugt wird.
`-nowarn` | Deaktiviert die Ausgabe von Warnungen.
`-O` | Schaltet den Code-Optimierer an. Dessen Fähigkeiten waren allerdings nie besonders ausgeprägt und beschränkten sich bis zum JDK 1.2 vorwiegend auf das Expandieren von Methodenaufrufen. In der Dokumentation zum JDK 1.3 steht sogar die Anmerkung Note: the -O option does nothing in the current implementation of javac and oldjavac, und im JDK 1.4 ist der Schalter gar nicht mehr dokumentiert.
`-verbose` | Aktiviert die Ausgabe von Meldungen über geladene Quell- und Klassendateien während der Übersetzung.
`-depend` | Normalerweise wird eine Quelldatei neu kompiliert, wenn das Datum der letzten Änderung nach dem Änderungsdatum der Klassendatei liegt oder wenn die Klassendatei ganz fehlt. Mit Hilfe dieses Schalters wird diese Entscheidung auf der Basis von Headerinformationen in der Klassendatei auf eine zuverlässigere Weise getroffen. Der Übersetzungsvorgang wird aber unter Umständen langsamer. Dieser Schalter war bis zum JDK 1.1 vorhanden, wird aber mittlerweile nicht mehr unterstützt. Die neueren Compiler erkennen die Abhängigkeiten weitgehend automatisch.
`-deprecation` | Sorgt dafür, daß bei jedem Aufruf einer als `deprecated` markierten Methode (`@deprecated`-Marke im Dokumentationskommentar) zusätzliche Informationen über mögliche Workarounds ausgegegeben werden. Alle Methoden aus älteren JDKs, die im aktuellen JDK nicht mehr verwendet werden sollen, werden mit diesem Flag markiert.
`-target version` | Es wird Bytecode erstellt, der zu der angegebenen Version des Laufzeitsystems kompatibel ist.
`-source version` | Es wird Sourcecode akzeptiert, der zu der angegebenen Version kompatibel ist. Dieser Schalter ist ab JDK-Version 1.4 verfügbar, er wird in Abschnitt 6.4.1 erläutert.

Tabelle 50.1: Optionen von javac

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