Rheinwerk Computing < openbook >

Inhaltsverzeichnis
Materialien zum Buch
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichen und Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Schnittstellen, Aufzählungen, versiegelte Klassen, Records
9 Ausnahmen müssen sein
10 Geschachtelte Typen
11 Besondere Typen der Java SE
12 Generics<T>
13 Lambda-Ausdrücke und funktionale Programmierung
14 Architektur, Design und angewandte Objektorientierung
15 Java Platform Module System
16 Die Klassenbibliothek
17 Einführung in die nebenläufige Programmierung
18 Einführung in Datenstrukturen und Algorithmen
19 Einführung in grafische Oberflächen
20 Einführung in Dateien und Datenströme
21 Einführung ins Datenbankmanagement mit JDBC
22 Bits und Bytes, Mathematisches und Geld
23 Testen mit JUnit
24 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 24 Die Werkzeuge des JDK
Pfeil 24.1 Übersicht
Pfeil 24.1.1 Aufbau und gemeinsame Schalter
Pfeil 24.2 Java-Quellen übersetzen
Pfeil 24.2.1 Der Java-Compiler des JDK
Pfeil 24.2.2 Alternative Compiler
Pfeil 24.2.3 Native Compiler
Pfeil 24.3 Die Java-Laufzeitumgebung
Pfeil 24.3.1 Schalter der JVM
Pfeil 24.3.2 Der Unterschied zwischen java.exe und javaw.exe
Pfeil 24.4 Dokumentationskommentare mit Javadoc
Pfeil 24.4.1 Einen Dokumentationskommentar setzen
Pfeil 24.4.2 Mit dem Werkzeug javadoc eine Dokumentation erstellen
Pfeil 24.4.3 HTML-Tags in Dokumentationskommentaren *
Pfeil 24.4.4 Generierte Dateien
Pfeil 24.4.5 Dokumentationskommentare im Überblick *
Pfeil 24.4.6 Javadoc und Doclets *
Pfeil 24.4.7 Veraltete (deprecated) Typen und Eigenschaften
Pfeil 24.4.8 Javadoc-Überprüfung mit DocLint
Pfeil 24.5 Das Archivformat JAR
Pfeil 24.5.1 Das Dienstprogramm jar benutzen
Pfeil 24.5.2 Das Manifest
Pfeil 24.5.3 Applikationen in JAR-Archiven starten
Pfeil 24.6 jlink: der Java Linker
Pfeil 24.7 Zum Weiterlesen
 

Zum Seitenanfang

24.2    Java-Quellen übersetzen Zur vorigen ÜberschriftZur nächsten Überschrift

Ein Java-Compiler übersetzt Java-Quellcode-Dateien in Bytecode. Das JDK liefert standardmäßig den Java-Compiler javac mit aus.

 

Zum Seitenanfang

24.2.1    Der Java-Compiler des JDK Zur vorigen ÜberschriftZur nächsten Überschrift

Der Compiler javac übersetzt den Quellcode einer Datei in Java-Bytecode. Jede in einer Datei deklarierte Klasse übersetzt der Compiler in eine eigene Klassendatei. Wenn bei einer Klasse (nennen wir sie A) eine Abhängigkeit zu einer anderen Klasse (nennen wir sie B) besteht – wenn zum Beispiel A von B erbt und B nicht als Bytecode-Datei vorliegt –, dann verarbeitet der Compiler B automatisch mit. Der Compiler überwacht also automatisch die Abhängigkeiten der Quelldateien. Der allgemeine Aufruf des Compilers ist:

$ javac [ Optionen ] Dateiname(n).java

Option

Bedeutung

-classpath Klassenpfad

oder

-cp Klassenpfad

Eine Liste von Pfaden, auf denen der Compiler die Klassendateien finden kann. Diese Option überschreibt die unter Umständen gesetzte Umgebungsvariable CLASSPATH und ergänzt sie nicht. Ein Semikolon (Windows) bzw. Doppelpunkt (Unix) trennt mehrere Verzeichnisse.

-d Verzeichnis

Gibt an, wo die übersetzten .class-Dateien gespeichert werden. Ohne Angabe legt der Compiler sie in das gleiche Verzeichnis wie das mit den Quelldateien.

-deprecation

Zeigt die Nutzung von veraltetem Code an.

-g

Erzeugt Debug-Informationen. Die Option muss gesetzt sein, damit der Debugger alle Informationen hat. –g:none erzeugt keine Debug-Informationen, was die Klassendatei etwas kleiner macht.

-nowarn

Deaktiviert die Ausgabe von Warnungen. Fehler (errors) werden noch angezeigt.

-source Version

Erzeugt Bytecode für eine bestimmte Java-Version.

-sourcepath Quellpfad

Ähnlich wie -classpath, nur sucht der Compiler im Quellpfad nach Quelldateien.

-verbose

Ausgabe von Meldungen über geladene Quell- und Klassendateien während der Übersetzung

Tabelle 24.2     Optionen des Compilers »javac«

 

Zum Seitenanfang

24.2.2    Alternative Compiler Zur vorigen ÜberschriftZur nächsten Überschrift

Neben dem Java-Compiler des JDK gibt es weitere Compiler, die Java-Quellcode in Bytecode abbilden, doch sie haben keine große Bedeutung, da javac frei ist und einfach die »Referenz« bildet. Die Entwicklungsumgebung Eclipse nutzt einen eigenen Java-Compiler (EJC), um flexibel zu sein und einfach während des Speichers und Tippens schon Teile übersetzen zu können.

Wie auch javac ist der Eclipse-Compiler selbst in Java implementiert und generiert Bytecode.[ 284 ](Natürlich gibt es da ein Henne-Ei-Problem: Wie sollte ein neuer in Java geschriebener Compiler durch Java übersetzt werden? Daher entsteht der erste Compiler immer in einer anderen Sprache, und die übersetzt eine kleine Teilmenge der Zielsprache, und dann wird ein neuer Compiler in der Minisprache entwickelt. Im nächsten Schritt wachsen und vergrößern sich Grammatik und Compiler. In der Sprache der Compilerbauer heißt der Prozess Bootstrapping. Bei Java war das ein Prozess über mehrere Stufen. Patrick Naughton schreibt im Buch »The Java Handbook« dazu: »Arthur van Hoff rewrote the compiler in Oak itself, replacing the C version that James originally wrote.« Und aus Oak wurde später Java. )

 

Zum Seitenanfang

24.2.3    Native Compiler Zur vorigen ÜberschriftZur nächsten Überschrift

Eine in Java geschriebene Applikation lässt sich erst einmal nur mit einer Java-Laufzeitumgebung ausführen. Einige Hersteller haben jedoch Compiler entwickelt, die direkt unter Windows oder einem anderen Betriebssystem ausführbare Programme erstellen. Die Compiler, die aus Java-Quelltext – oder Java-Bytecode – Maschinencode der jeweiligen Architektur erzeugen, nennen sich native oder Ahead-of-time-Compiler (kurz AOT). Das Ergebnis ist eine direkt ausführbare Datei, die keine Java-Laufzeitumgebung nötig macht. Je nach Anwendungsfall kann das Programm performanter sein, eine Garantie dafür gibt es allerdings nicht. Die Startzeiten sind im Allgemeinen geringer, und das Programm ist viel schwieriger zu entschlüsseln, was das Reverse Engineering[ 285 ](Das Zurückverwandeln von unstrukturiertem Binärcode in Quellcode ) angeht.

Existierende Laufzeitumgebungen erreichen mittlerweile eine ausreichende Geschwindigkeit, einen vertretbaren Speicherverbrauch und annehmbare Startzeiten. Um die Startzeiten noch weiter zu reduzieren, bietet die GraalVM Native Image an, ein natives Image zu erzeugen. Details zu dem Projekt bietet https://www.graalvm.org/reference-manual/native-image/.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Spring Boot 3 und Spring Framework 6

Spring Boot 3 und Spring Framework 6




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo




Copyright © Rheinwerk Verlag GmbH 2024

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern