Java Academy · Lektion

Hvad er GraalVM

En højtydende polyglot-VM

Lektion 1 af 413 trin

Hvad er GraalVM er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 1 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.

Hvad er GraalVM

GraalVM er en højtydende JDK-distribution, der bygger på en moderne just-in-time-kompilator kaldet Graal. Den kører almindelig Java hurtigere i mange arbejdsbelastninger og tilføjer to centrale funktioner: polyglot-eksekvering og nativekompilering på forhånd.

En JDK, du kan tage direkte i brug

GraalVM er en komplet JDK. Din eksisterende javac, java og bytekode fungerer uændret. Forskellen ligger i den underliggende kompilator og de ekstra værktøjer, der følger med, f.eks. native-image.

public class Main {
    public static void main(String[] args) {
        System.out.println("Runs the same on GraalVM as on any JDK");
        System.out.println("Java: " + System.getProperty("java.version"));
    }
}

Graal-kompilatoren

Graal-JIT'en er skrevet i Java. Den udfører aggressive optimeringer som avanceret inlining, delvis escape-analyse og spekulativ optimering og overgår ofte den traditionelle C2-kompilator på kode med mange abstraktioner og allokeringer.

Polyglot med Truffle

GraalVM indeholder frameworket Truffle, som gør det muligt for flere sprog at køre på den samme VM og endda kalde hinanden. Der findes implementeringer til JavaScript, Python, Ruby, R og WebAssembly. Værdier kan krydse sproggrænser med lille overhead.

Konceptuelt polyglot-eksempel

Med polyglot-API'et opretter du en Context og evaluerer kode på et andet sprog, hvorefter du læser resultatet tilbage i Java. Klasserne findes i org.graalvm.polyglot.

// Requires GraalVM polyglot runtime
import org.graalvm.polyglot.*;

public class Main {
    public static void main(String[] args) {
        try (Context ctx = Context.create()) {
            Value sum = ctx.eval("js", "40 + 2");
            System.out.println(sum.asInt());
        }
    }
}

Native Image

Værktøjet native-image kompilerer Java på forhånd til en selvstændig native-eksekverbar fil. Der er ingen JVM ved kørsel og ingen klasseindlæsning eller JIT-opvarmning — programmet starter på millisekunder.

Udgaver

GraalVM fås som en gratis Community Edition og som en Oracle GraalVM-distribution med ekstra optimeringer. Begge indeholder native-image; til de fleste læringsformål og mange produktionsanvendelser er community-versionen tilstrækkelig.

Hvorfor det er vigtigt i skyen

Hurtig opstart og lavt hukommelsesforbrug gør native images ideelle til serverløse funktioner, CLI'er og containere, der skalerer ned til nul. En native Java-tjeneste kan starte lige så hurtigt som en tilsvarende Go-binærfil, hvilket fjerner en mangeårig ulempe ved JVM'en.

JIT kontra AOT

To eksekveringsmodeller eksisterer side om side:

  • JIT (Graal-kompilatoren) optimerer under kørsel ved hjælp af løbende profilering — bedst gennemløb for langkørende servere.
  • AOT (native-image) kompilerer før kørsel — bedst opstart og hukommelsesforbrug.

Understøttelse af frameworks

Moderne frameworks som Spring Boot, Quarkus og Micronaut har førsteklasses understøttelse af native-image. De forudberegner konfiguration ved byggetid, så din applikation kan kompileres problemfrit til en native-binærfil.

Valg af GraalVM

Tag GraalVM i brug, når du ønsker højere JIT-gennemløb på kode med mange abstraktioner, har brug for interoperabilitet mellem sprog eller ønsker native-eksekverbare filer til udrulninger med hurtig opstart og lavt hukommelsesforbrug. Det er en overmængde af en standard-JDK, så overgangen indebærer lav risiko.

Hurtig kontrol

Kontrollér din forståelse af GraalVM.

Opsummering

Du har mødt GraalVM:

  • En komplet JDK, der bygger på den højtydende Graal JIT-kompilator.
  • Truffle muliggør polyglot-eksekvering og kald på tværs af sprog.
  • native-image kompilerer Java på forhånd til native-eksekverbare filer.
  • JIT prioriterer gennemløb ved langvarig kørsel, mens AOT prioriterer opstart og hukommelsesforbrug.
  • Frameworks som Spring Boot, Quarkus og Micronaut understøtter native-bygninger.
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 “Hvad er GraalVM” gratis?

Ja — hele teksten til “Hvad er GraalVM” 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 “Hvad er GraalVM”?

En højtydende polyglot-VM 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 1 af 4.

Hvor lang tid tager lektionen “Hvad er GraalVM”?

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