Virtuelle Maschine GraalVM 22.1 baut native Images im Schnellverfahren

Neben dem neuen Quick-Build-Modus, der deutlich schneller kompilieren soll, bringt das Release eine erste Anbindung an Apple Silicon.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen

(Bild: Shutterstock)

Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Oracle hat im turnusmäßigen Quartalsrhythmus GraalVM 22.1 veröffentlicht. Das Release der virtuellen Maschine bringt einen neuen Build-Modus, der native Images schneller erstellt. Außerdem hat das Release einen Build für Apple Silicon an Bord, der noch als Preview gekennzeichnet ist. Daneben gibt es kleinere Ergänzungen bei den Programmiersprachen jenseits von Java.

GraalVM bietet mit einem AOT-Compiler (Ahead-of Time) übersetzte native Images als Alternative zum Übersetzen von Bytecode zur Laufzeit über den JIT-Compiler (Just-in Time). Native Images sind eigenständig ausführbare Dateien, die neben den übersetzten Klassen der eigentlichen Anwendung die Klassen der Runtime Library und der Dependencies sowie nativen Code des JDK enthalten. Als Vorteil bringen sie bessere Startzeiten und einen geringeren Speicherbedarf mit.

Die beiden Vorversionen 21.3 und 22.0 zielten mit Optimierungen vor allem auf schlankere native Images. Das aktuelle Release führt einen neuen Quick-Build-Modus ein, der die Übersetzungszeit reduziert. Der Compiler verzichtet dabei auf umfangreiche Optimierungen, die eine genaue Analyse der Anwendung und der zugehörigen Dependencies erfordert. Als Benchmark hat das GraalVM-Team den Graal-Compiler in die Library libgraal übersetzt und dabei eine um 81 Prozent reduzierte Compile-Zeit und eine um 43 Prozent verbesserte Gesamt-Build-Zeit gemessen.

Die Library libgraal ließ sich im Quick-Build-Modus deutlich schneller erstellen.

(Bild: Oracle)

Der Modus lässt sich im Utility native-image über den Parameter -Ob aktivieren. Da die verkürzte Build-Zeit zulasten der Performance der erstellten Anwendungen geht, ist der Quick-Build-Modus nur für den Entwicklungsprozess und nicht für das Erstellen der produktiven Anwendungen gedacht.

Jenseits des neuen Modus hat das Team seit GraalVM 21.1 wohl kontinuierlich die Build-Zeiten optimiert. Auch die Schlankheitskur für native Images setzt das aktuelle Release fort. Als Messlatte dient die Spring-Beispielanwendung PetClinic.

Die Bauzeiten und Image-Größen der Tierklinik sind von Release zu Release geschrumpft.

(Bild: Oracle)

Die kostenfreie Version GraalVM Community ist nun auch für Apple Silicon verfügbar. Der derzeit noch als Preview gekennzeichnete Build darwin-aarch64 enthält die Komponenten JVM mit dem Graal Compiler, Native Image, JavaScript sowie Java on Truffle.

GraalVM ist nicht auf JVM-Sprachen beschränkt, sondern arbeitet unter anderem mit Python, Ruby und R zusammen. Das aktuelle Release kann neuerdings Module unter Python einfrieren: Es übersetzt häufig verwendete Module in Bytecode und legt sie als Frozen Modules im Binary ab. Damit soll sich die Startzeit für die REPL (Read Eval Print Loop) unter Python um 30 Prozent reduzieren und ihr Speicherbedarf um 40 Prozent geringer ausfallen.

Für Ruby kann GraalVM 22.1 externe Exceptions vollständig über ForeignException abfangen. Bisher lösten sie einen RuntimeError aus. Für JavaScript bringt die Enterprise-Variante von GraalVM Engine-Caching für Node.js-Anwendungen. Schließlich erweitert die Anbindung an R das Zusammenspiel mit den Grafikpaketen.

Weitere Neuerungen unter anderem für die Installation und das Einbinden in Visual Studio Code lassen sich der offiziellen Ankündigung von GraalVM 22.1 entnehmen.

(rme)