Virtuelle Maschine GraalVM für JDK 21 bringt Support für neueste Java-Features

Pünktlich ist GraalVM für JDK 21 erschienen. Das Release ist mit der neuesten Java-LTS-Version 21 kompatibel und verändert den Umgang mit Truffle-Sprachen.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen

(Bild: auns85 / Shutterstock.com)

Lesezeit: 3 Min.

Oracle hat GraalVM für JDK 21 veröffentlicht. Die virtuelle Maschine ist nun auf die neue Sprachversion Java 21 mit Long-Term Support (LTS) ausgelegt und kann deren Features verwenden. Das betrifft unter anderem vollständigen Support für virtuelle Threads von Project Loom. Daneben sind die vom Truffle Language Implementation Framework unterstützten Sprachen nun statt mit gu install per Build-Werkzeug Maven verfügbar.

Das Feature-Release GraalVM für JDK 21 fügt sich in den neuen Veröffentlichungsrhythmus ein, den Oracle im Juni 2023 bekanntgegeben hat. Im gleichen Zuge verkündete Oracle die kostenfreie Bereitstellung von GraalVM. Der neue Releasezyklus orientiert sich an den halbjährlichen Erscheinungsterminen des JDK (Java Development Kit) und ist nach der entsprechenden Sprachversion benannt – in diesem Fall JDK 21, das als eines der spannendsten Releases der letzten Jahre gilt.

GraalVM Native Image dient der Ahead-of-Time-Kompilierung (AOT) von Java-Anwendungen. Im Vergleich zur Just-in-Time-Kompilierung (JIT) sollen nun sämtliche Performance-Aspekte wie Latenz, Speicherverbrauch und Package-Größe verbessert sein, wie das GraalVM-Team in einem Blogeintrag mit Beispielen untermauert. Neben zahlreichen weiteren Neuerungen für Native Image lassen sich nun durch --parallelism die Anzahl der durch den Build-Prozess genutzten Threads und durch --color die Farbe des Outputs festlegen.

Für einen kontrollierteren Umgang mit experimentellen Build-Optionen in Native Image steht die neue Option -H:±UnlockExperimentalVMOptions bereit. Damit lassen sich experimentelle Optionen sperren beziehungsweise entsperren. Das nächste Release soll das explizite Aktivieren experimenteller Optionen erfordern. Bereits in GraalVM für JDK 21 lässt sich dieses Verhalten per Umgebungsvariable erzeugen: NATIVE_IMAGE_EXPERIMENTAL_OPTIONS_ARE_FATAL=true.

Das bisher genutzte GraalVM-Updater-Tool zum Installieren von Truffle-Sprachen gu wurde zugunsten des Bereitstellens von Sprachen als Maven-Dependencies entfernt: Die Language Runtimes für JavaScript, Python, Ruby, Java on Truffle, WebAssembly und LLVM sind nun von GraalVM abgekoppelt und lassen sich in nativen sowie JVM-Standalone-Versionen via GitHub aus den jeweiligen Repositories herunterladen.

Dahinter stecken verschiedene Gründe. So sollen installierte Anwendungen und Runtimes laut dem GraalVM-Team unveränderlich sein, jedoch veränderte der GraalVM-Updater die Installation. Auch erforderte das Aktualisieren einer Sprache das Aktualisieren und Modifizieren des JDK, wodurch jedes Sprachupdate zugleich zu einem JDK-Upgrade-Projekt wurde – wofür in der Praxis unterschiedliche Teams zuständig sein können.

Allerdings gibt das Entwicklungsteam als Nachteile an, dass die Änderung sowohl einen Breaking Change darstellt als auch derzeit noch zwei Schwierigkeiten aufweist: erstens eingeschränkten Support für das Hinzufügen oder Installieren zusätzlicher Sprachen bei Verwenden der Standalone-Distributionen und zweitens eine Beschränkung auf die Sprache JavaScript als polyglottes Isolate-Image. Diese Punkte möchte das Entwicklungsteam im Laufe der nächsten Releases beheben.

Alle weiteren Details zu GraalVM für JDK 21 finden sich in einem Blogeintrag.

(mai)