Virtuelle Maschine GraalVM 22.0 verkleinert Images, setzt auf GitHub Actions
Die neue Version setzt die Verkleinerung nativer Images fort, erhebt die neue Garbage Collection Policy zum Standard und bringt eine offizielle GitHub Action.
Oracle hat GraalVM 22.0 veröffentlicht. Das aktuelle Release der virtuellen Maschine bringt eine Anbindung an GitHub Actions und arbeitet weiter an der Verkleinerung nativer Images, aber auch für Programmiersprachen jenseits von Java gibt es einige Neuerungen. So aktiviert Version 22.0 für JavaScript den ECMAScript 2022-Modus standardmäßig und erhöht die Node.js-Laufzeit auf Version 14.18.1. Die Ruby-Version erreicht unterdessen 3.0 und in Python lassen sich nun die Module pyexpat
sowie _csv
verwenden.
Die virtuelle Maschine GraalVM basiert auf der HotSpot Java Virtual Machine (JVM), fügt jedoch zusätzliche Komponenten wie einen Just-in-Time-Compiler (JIT) hinzu. Sie soll die Ausführung von in Java und anderen JVM-Sprachen geschriebenen Anwendungen beschleunigen. Dabei ist sie jedoch nicht auf diese Sprachen begrenzt, sondern lässt sich durch das Language Implementation Framework Truffle auch beispielsweise mit JavaScript, Ruby oder Python nutzen. Auch soll es möglich sein, innerhalb einer Anwendung verschiedene Sprachen zu kombinieren.
Schlankere und speichersparende native Images
Bereits das vorige Release GraalVM 21.3 sorgte für eine Verkleinerung von nativen Images. Diese bietet GraalVM als Alternative zum Ausführen von Bytecode in der klassischen JVM und setzt dafür auf einen AOT-Compiler (Ahead-of-Time). Das aktuelle Release 22.0 setzt die begonnene Arbeit fort und soll die Images weiter verkleinern, indem es ein komprimierteres Encoding für Stack-Frame-Metadaten einführt. In der Enterprise-Edition soll zudem laut Herausgebern eine veränderte Implementierung von String.format()
zu einer weiteren Verkleinerung beitragen. Diese Neuerung soll Lokalisierungsklassen für kleine Images wie "Hello World" unzugänglich machen.
Daneben widmet sich GraalVM 22.0 den Speicheranforderungen nativer ausführbarer Dateien. Das Ausführen nativer Images erfolgt in GraalVM auf dem mitgelieferten Laufzeitsystem, das alle benötigten Komponenten inklusive der Speicherverwaltung enthält. Die in der Vorversion 21.3 erstmals eingeführte neue Garbage Collection Policy für den Serial Garbage Collector (Serial GC) ist nun standardmäßig aktiviert, was die maximale RSS-Größe (Resident Set Size) von nativen ausführbaren Dateien um bis zu 30 Prozent reduzieren soll.
GitHub Action fĂĽr GraalVM
Das GraalVM-Team hat eine offizielle GitHub Action ins Leben gerufen. Mit GitHub Actions lassen sich Workflows der Softwareentwicklung automatisieren, beispielsweise fĂĽr CI/CD (Continuous Integration/Continuous Delivery), und verschiedene Actions lassen sich zu einem benutzerdefinierten Workflow kombinieren. Die neue GitHub Action fĂĽr GraalVM dient dem Aufsetzen der GraalVM Community Edition und unterstĂĽtzt GraalVM-Features wie native Images und Truffle-Sprachen. Sie exportiert eine $GRAALVM_HOME
-Umgebungsvariable und setzt $JAVA_HOME
standardmäßig auf $GRAALVM_HOME
, was das Erstellen, Testen und Deployen von Anwendungen erlaubt. Da die GitHub Action die $PATH
-Umgebungsvariable erweitert, ist der direkte Aufruf von Truffle-Sprachen und -Tools möglich.
Die AnkĂĽndigung zur neuen GraalVM-Version zeigt ein Beispiel fĂĽr den Einsatz der GitHub Action in einem Workflow:
steps:
- uses: actions/checkout@v2
- uses: graalvm/setup-graalvm@v1
with:
version: '22.0.0.2'
java-version: '17'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Example step
run: |
echo "GRAALVM_HOME: $GRAALVM_HOME"
echo "JAVA_HOME: $JAVA_HOME"
java --version
native-image --version
Installationshinweise und Roadmap
GraalVM 22.0 ist mit JDK 11 und JDK 17 kompatibel und steht als GraalVM Community Edition auf GitHub sowie als Oracle GraalVM Enterprise Edition zum Download bereit. Daneben sind GraalVM-Upgrades fĂĽr macOS via Homebrew Tap for GraalVM und Visual Studio Code in Form der Erweiterung GraalVM Extension Pack for Java verfĂĽgbar.
Gemäß der Roadmad soll der 22.x-Zweig in jedem Quartal des Jahres 2022 ein neues Feature-Release erhalten, demnach insgesamt vier. Als Maintenance Release gilt das vierte Feature-Release, das für die kommenden achtzehn Monate Bugfixes erhält. Das aktuelle Release mit Long-Term Support (LTS) ist die im vergangenen Oktober erschienene Version 21.3, das nächste geplante LTS-Release soll die für Oktober 2023 geplante Version 23.3 sein.
Alle weiteren Informationen zur aktuellen Version GraalVM 22.0 lassen sich der AnkĂĽndigung entnehmen.
(mai)