GraalVM 21.2 bringt Neuerungen für native Images und den Compiler mit

Oracle hat GraalVM 21.2 veröffentlicht. Neue Features gibt es für Native Image, den Compiler und zusätzliche Programmiersprachen wie JavaScript und Python.

In Pocket speichern vorlesen Druckansicht 15 Kommentare lesen

(Bild: Blackboard/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Maika Möbus
Inhaltsverzeichnis

GraalVM ist in Version 21.2 erschienen. Die von Oracle entwickelte virtuelle Maschine soll eine Alternative zur JVM (Java Virtual Machine) bieten und das Ausführen von Anwendungen beschleunigen, die nicht nur auf Java, sondern auch auf anderen Programmiersprachen basieren. GraalVM liegt als Open-Source-Community-Edition auf Basis von OpenJDK sowie als Enterprise-Version auf Basis von Oracle JDK vor.

GraalVM 21.2 entfernt automatisch nicht benötigte Security-Provider in Native Image, das dem Ahead-of-Time-Kompilieren von Java-Code zu einer ausführbaren Datei dient. Damit gelten Optionen wie --enable-all-security-services als deprecated und sollen in Zukunft wegfallen. Falls das automatische Entfernen nicht gewünscht sein sollte, lässt sich die Option durch -H:-EnableSecurityServicesFeature deaktivieren.

Der Compiler wartet in beiden Editionen mit Neuerungen im Umgang mit Loops auf. Die Enterprise-Edition bietet unter anderem eine überarbeitete Loop-Limit-Analyse, während die Community-Edition von der neuen Funktion Speculative Guard Movement Gebrauch machen kann. Sie soll zu einer Verbesserung von Workloads beitragen, indem sie prüft, ob beispielsweise eine Array-Grenzenprüfung außerhalb des Loops besser aufgehoben wäre. Das Truffle Framework, eine Open-Source-Bibliothek zur Implementierung verschiedener Programmiersprachen in GraalVM, hat in Version 21.2 ebenfalls neue Features erhalten. Sie sollen der Warm-up-Zeit der Runtime und somit den Workloads zugute kommen.

GraalVM nutzt bei seiner JavaScript-Implementierung auch Sprachfeatures, die noch den Status ECMAScript Proposal haben. Dazu zählt das Operator-Overloading zum Überladen des Verhaltens von Operatoren in JavaScript-Klassen. Da es sich noch um eine frühe Phase des Features handelt, ist es nicht standardmäßig aktiviert. Die experimentelle Option lässt sich mit dieser Codezeile aktivieren:

js --experimental-options --js.operator-overloading

Die reine Python-Version ist _pickle gewichen, um die Serialisierung von Objekten zu beschleunigen. Zudem sind für Python ebenso wie für die WebAssembly Runtime Kompatibilitätsverbesserungen und Bug Fixes erfolgt. Updates gibt es auch für Ruby, LLVM, Java on Truffle sowie FastR, die GraalVM-basierte Implementierung der Programmiersprache R.

In GraalVM 21.2 gelten Linux-AArch64-CPU-Builds als unterstützt und bringen somit zusätzliche Features wie die Ruby Runtime und Java on Truffle mit. GraalVM-Builds auf Basis von Oracle JDK 16 und OpenJDK 16 gelten zwar weiterhin als experimentell, aber unterstützen nun die Runtimes für Ruby, Python und WebAssembly.

Zudem haben nicht nur die Features ein Update erhalten, sondern auch die Dokumentation erstrahlt im neuen Gewand. Es ist in umstrukturierter Form im GitHub-Repository zu finden.

GraalVM 21.2 ist in den Versionen Community und Enterprise für Windows, Linux und macOS zum Download verfügbar. Die Highlights der neuen Version führt Oleg Šelajev, Developer Advocate für GraalVM bei Oracle Labs, in einem Medium-Blogeintrag auf.

(mai)