0Pricing
Java Academy · Lektion

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-image erzeugt eine eigenständige ausführbare Datei.
  • Die Closed-World-Analyse findet sämtlichen von main aus 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

  1. Was ist GraalVM
  2. Ein Native Image erstellen
  3. Reflection und Konfiguration
  4. Abwägungen beim Native Image
← Zurück zu Java Academy