Java auf Java auf Java...

GraalVM 21: Espresso pusht Java auf Truffle

Dominik Mohilo

© Shutterstock / stockcreations

Oracles GraalVM ist aktuell eines der spannendsten Projekte im Java-Universum, wenn man von der Sprache und den Projekten wie Amber, Loom, Valhalla und so weiter einmal absieht. Die universelle virtuelle Maschine für polyglotte Entwicklung ist nun in Version 21 erschienen. Spannend ist: GraalVM 21 bringt das Tool Espresso mit sich, mit dem es sich Java auf Truffle gemütlich macht.

GraalVM 21: Java auf Java

Bereits als die virtuelle Maschine GraalVM zum ersten Mal vorgestellt wurde, träumten Entwickler davon, einst Java in Java implementieren zu können. Dieser „Heilige Gral der Java-Programmierung“, wie Oleg Šelajev es in seinem Artikel „Java on Truffle – Going Fully Metacircular“ nennt, scheint gefüllt mit Espresso zu sein. So nämlich nennt sich die neue installierbare Komponente, mit der der Truffle Framework um die Unterstützung für Java und JVM-basierte Sprachen erweitern lässt.

Das klingt zunächst sehr trivial, denn: Das Truffle Framework ist in der GraalVM ja eigentlich dafür da, Sprachen wie JavaScript, Python oder C auf der GraalVM laufen zu lassen, während Java nativ auf der GraalVM daheim ist. Doch es gibt durchaus Gründe, warum es in Ordnung ist, deswegen aus dem Häuschen zu sein. Java auf Truffle bedeutet nämlich nichts Anderes als ein selbst gehostetes Java. Was heißt das genau?

Java kann sich selbst ausführen. Java auf Truffle kann, da es eine tatsächliche JVM ist, in anderen Java-Anwendungen ausgeführt werden. So kann man beispielsweise eine Interoperabilität zwischen eigentlich unvereinbaren Versionen von Java herstellen. So kann in einer Java-8-Anwendung Bytecode von Java 11 ausgeführt werden und umgekehrt. So werden etwa Bibliotheken in Java 11 verfügbar, die sonst nur für Java 8 ausgelegt sind.

Natürlich gibt es noch viele weitere Anwendungsfälle, etwa das Vermischen von Ahead of Time und Just in Time Kompilierung, mehr dazu findet sich im oben erwähnten Blog-Beitrag.

Weitere Änderungen in GraalVM 21

Neben den aufregenden Möglichkeiten, die Java auf Truffle bietet, wurden auch die nativen Images überarbeitet. So können Nutzer unter anderem ab sofort auf Java-Serialisierung in den Binaries nativer Images zurückgreifen. Die Konfiguration läuft sehr gemütlich über den javaagent, das spart kostbare Entwicklungszeit.

JavaScript

Da die Kompatibilität bei der GraalVM groß geschrieben wird, wurden einige Features der Version ECMAScript 2021 standardmäßig aktiviert: Klassenfelder, Promise.any, und Logical Assignment Operators. Wer auf Features von ECMAScript 2022 zugreifen möchte, kann den entsprechenden Modus via --js.ecmascript-version=2022 aktivieren. Damit lässt sich etwa die Methode für die relative Indexierung aktivieren. Erwähnenswert ist auch, dass Node.js in den Distributionen der GraalVM auf Version 12.20.1 aktualisiert wurde.

Ruby & Python

Auch die Implementierung von Ruby wurde auf Version 2.7.2 aktualisiert, die meisten Features von Ruby 2.7 sollten damit verfügbar sein. Für Methoden wie MatchData#length, Array#sample und String#inspect bedeutet das Update auf die neue Graal-Version mehr Effizienz, Probleme bei der speziellen Variable $~ wurden behoben.

Es wurde auch weiter an der Kompatibilität mit den nativen Python-Bibliotheken und an der Jython-Implementierung gearbeitet. Ein Beispiel hierfür ist das jetzt auch verfügbare Modul jarray. NumPy sollte nun auch etwas runder laufen, man hat an Memory Leaks und Abstürzen gearbeitet, die mit dieser Library zusammenhingen und auch die Unterstützung für Pandas ist verbessert worden.

LLVM & GraalWASM

Kleinere Fortschritte gab es auch bei der LLVM Bitcode Runtime und dem GraalWASM Interpreter – insbesondere in Sachen Performance. Während bei ersterer vor allem das AST Sharing beschleunigt und die Unterstützung für Auxiliary Engine Caching hinzugefügt wurde, konnte der GraalWASM Interpreter um das Zwanzigfache beschleunigt werden.

Weitere Informationen zu Java auf Truffle, bzw. Java auf Java, gibt es im Blog-Beitrag von Oleg Šelajev, der auch einen Artikel zu den allgemeinen neuen Features der GraalVM 21 geschrieben hat. Die vollständen Release Notes können auf der offiziellen Webseite des Projektes gefunden werden.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: