Ein Native Image erstellen
Ahead-of-Time-Kompilierung
Ein Native Image erstellen ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Ein Native Image erstellen
Das Tool native-image wandelt kompilierten Java-Bytecode in eine einzelne, eigenständige native ausführbare Datei um. In dieser Lektion erfahren Sie, wie der Build abläuft, was dabei unter der Oberfläche geschieht und wie Sie das Ergebnis ausführen.
Mit gewöhnlichem Java beginnen
Native Image beginnt mit normalen kompilierten Klassen. Stellen Sie sich ein einfaches Programm vor, das wir zu nativem Code kompilieren werden.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello from a native binary!");
}
}Kompilieren, dann bauen
Die beiden Schritte: Zuerst erzeugt javac Hello.java die Datei Hello.class; anschließend erzeugt native-image Hello eine ausführbare Datei namens hello. Der Build dauert deutlich länger als die Kompilierung, weil das gesamte Programm analysiert wird.
Closed-World-Analyse
native-image führt eine Closed-World-Analyse durch: Es muss sämtlichen Code sehen, der jemals ausgeführt werden könnte. Ausgehend von main durchläuft es jede erreichbare Methode und nimmt nur diese in die Binärdatei auf. Alles nicht Erreichbare wird entfernt (Dead-Code-Eliminierung beim Linken).
Ahead-of-Time-Kompilierung
Erreichbare Methoden werden vorab in nativen Maschinencode kompiliert. Da kein Bytecode mehr interpretiert werden muss und es keinen JIT gibt, entfällt auch das Aufwärmen — das Programm läuft bereits ab seinem ersten Befehl mit voller Geschwindigkeit.
Initialisierung zur Build-Zeit
Für einen schnellen Start kann native-image statische Initialisierer zur Build-Zeit ausführen und den daraus entstehenden Heap in das Image einbetten (den Image-Heap). Dadurch existieren einige Objekte bereits in dem Moment, in dem das Programm startet.
Die ausführbare Datei ausführen
Das Ergebnis ist eine gewöhnliche ausführbare Datei des Betriebssystems. Sie führen sie direkt aus — kein java -jar und keine installierte JVM auf dem Zielrechner erforderlich. Abhängig von den Flags ist sie vollständig statisch oder größtenteils statisch.
Häufig verwendete Build-Flags
Nützliche Optionen sind:
-o name— Name der Ausgabedatei.--no-fallback— schlägt fehl, statt ein von der JVM abhängiges Fallback-Image zu erzeugen.-O2/-O3— Optimierungsstufe.--static— vollständig statisch gelinkte Binärdatei (Linux).
Speicher- und Festplattenbedarf
Der Build selbst benötigt viel Speicher — große Anwendungen können mehrere Gigabyte RAM und Minuten an CPU-Zeit benötigen. Diese Kosten fallen einmalig zur Build-Zeit an und werden durch einen günstigen, schnellen Start zur Laufzeit ausgeglichen.
Mit Maven/Gradle bauen
In echten Projekten rufen Sie native-image nur selten von Hand auf. Die GraalVM-native-build-tools-Plugins integrieren es in Maven (native:compile) und Gradle (nativeCompile), sodass die Binärdatei Teil Ihrer normalen Build-Pipeline ist.
Startzeit überprüfen
Vergleichen Sie nach dem Build die Startzeiten: Ein Start mit java -jar kann mehrere hundert Millisekunden dauern, während die native Binärdatei innerhalb weniger Millisekunden startet. Genau diesen Unterschied zu messen, ist der eigentliche Grund für den Einsatz nativer Images.
Kurzer Test
Testen Sie Ihr Verständnis vom Erstellen nativer Images.
Zusammenfassung
Sie haben den Native-Image-Build kennengelernt:
- Ausgangspunkt ist kompilierten Bytecode;
native-imageerzeugt eine eigenständige ausführbare Datei. - Die Closed-World-Analyse findet sämtlichen von
mainaus erreichbaren Code. - Erreichbarer Code wird AOT-kompiliert; nicht erreichbarer Code wird entfernt.
- Die Initialisierung zur Build-Zeit bettet einen Image-Heap für einen schnellen Start ein.
- Der Build ist langsam und speicherintensiv; integrieren Sie ihn über Maven-/Gradle-Plugins.
Häufig gestellte Fragen
Ist die Lektion „Ein Native Image erstellen“ kostenlos?
Ja — der vollständige Text von „Ein Native Image erstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Ein Native Image erstellen“?
Ahead-of-Time-Kompilierung Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Ein Native Image erstellen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Was ist GraalVM
- Ein Native Image erstellen
- Reflection und Konfiguration
- Abwägungen beim Native Image