Java Academy · Lektion

Byg et native image

Ahead-of-time-kompilering

Lektion 2 af 413 trin

Byg et native image er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.

Bygning af et Native Image

Værktøjet native-image omdanner kompileret Java-bytecode til en enkelt, selvstændig native-eksekverbar fil. Denne lektion gennemgår byggeprocessen, hvad der sker under motorhjelmen, og hvordan resultatet køres.

Start med almindelig Java

Native Image tager udgangspunkt i almindelige kompilerede klasser. Her er et enkelt program, som vi forestiller os at kompilere til native-kode.

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello from a native binary!");
    }
}

Kompilér, og byg derefter

De to trin er følgende: Først producerer javac Hello.java filen Hello.class, hvorefter native-image Hello producerer en eksekverbar fil med navnet hello. Bygningen tager meget længere tid end kompileringen, fordi hele programmet analyseres.

Analyse med lukket verden

native-image udfører en analyse med lukket verden: Den skal kunne se al kode, der nogensinde kan køre. Med udgangspunkt i main gennemgår den alle nåbare metoder og medtager kun dem i binærfilen. Alt, der ikke kan nås, fjernes (eliminering af død kode ved linkning).

Kompilering på forhånd

Nåbare metoder kompileres til native-maskinkode på forhånd. Da der ikke længere findes bytekode, der skal fortolkes, og ingen JIT, er der heller ingen opvarmning — programmet kører med fuld hastighed fra sin første instruktion.

Initialisering ved byggetid

For at starte hurtigt kan native-image køre statiske initialisatorer ved byggetid og indlejre den resulterende heap i imaget (den såkaldte image heap). Det betyder, at nogle objekter allerede findes, i samme øjeblik programmet starter.

Kørsel af den eksekverbare fil

Resultatet er en almindelig eksekverbar fil til operativsystemet. Du kører den direkte — ingen java -jar og ingen JVM-installation er nødvendig på målmaskinen. Den er også fuldt statisk eller overvejende statisk afhængigt af flagene.

Almindelige byggeflag

Nyttige indstillinger omfatter:

  • -o name — navn på outputfilen.
  • --no-fallback — afslut med en fejl i stedet for at generere en JVM-afhængig reserveafbildning.
  • -O2 / -O3 — optimeringsniveau.
  • --static — fuldt statisk linket binærfil (Linux).

Hukommelse og diskplads

Selve bygningen kræver meget hukommelse — store applikationer kan have brug for flere gigabyte RAM og flere minutters CPU-tid. Denne omkostning betales én gang ved byggetid til gengæld for billig og hurtig opstart ved kørsel.

Bygning via Maven/Gradle

I rigtige projekter kalder du sjældent native-image manuelt. GraalVM's native-build-tools-plugins integrerer det i Maven (native:compile) og Gradle (nativeCompile), så binærfilen bliver en del af dit normale byggeforløb.

Kontrollér opstarten

Efter bygningen kan du sammenligne opstarten: En java -jar-start kan tage hundredvis af millisekunder, mens native-binærfilen er klar på få millisekunder. At måle denne forskel er hele pointen med at gå native.

Hurtig kontrol

Kontrollér din forståelse af bygning af native images.

Opsummering

Du har lært, hvordan Native Image bygges:

  • Start med kompileret bytekode; native-image producerer en selvstændig eksekverbar fil.
  • Analyse med lukket verden finder al nåbar kode fra main.
  • Nåbar kode kompileres med AOT, mens kode, der ikke kan nås, fjernes.
  • Initialisering ved byggetid indlejrer en image-heap for hurtig opstart.
  • Bygningen er langsom og kræver meget hukommelse; integrér den via Maven/Gradle-plugins.
Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
104
Lektioner
374

Ofte stillede spørgsmål

Er lektionen “Byg et native image” gratis?

Ja — hele teksten til “Byg et native image” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Byg et native image”?

Ahead-of-time-kompilering Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Java Academy?

Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Byg et native image”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Java Academy-lektion?

Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvad er GraalVM
  2. Byg et native image
  3. Reflection og konfiguration
  4. Afvejninger ved native image
← Tilbage til Java Academy