Bessere Kompilierung von Java-Anwendungen GraalVM – Laufzeitumgebung für Java und Co

Von Thomas Joos

Anbieter zum Thema

GraalVM stellt verschiedene Funktionen bereit, mit denen sich Java-Anwendungen deutlich leistungsstärker kompilieren lassen. Das Einbinden externer Bibliotheken aus anderen Plattformen und Programmiersprachen ist ebenfalls möglich.

Ein entscheidener Vorteil von GraalVM ist, dass es viele Programmiersprachen und mehrere Plattformen unterstützt.
Ein entscheidener Vorteil von GraalVM ist, dass es viele Programmiersprachen und mehrere Plattformen unterstützt.
(Bild: GraalVM.org)

Das GraalVM-Projekt (General Recursive Applicative and Algorithmic Language) von Oracle stellt eine neue Möglichkeit für Entwickler dar, Java-Anwendungen zu kompilieren und JVM effektiver zu erzeugen und zu nutzen. Alle Funktionen innerhalb dieses Projekts werden unter GraalVM zusammengefasst.

Mit einer GraalVM lassen sich viele Java-Programme besser und schneller ausführen, als unter der klassischen Java Virtual Machine (JVM). Dabei kann der Code interpretiert oder direkt in einem Compiler in Machinencode übersetzt werden. Hier stehen verschiedene Wege zur Verfügung. Mit der polyglotten Funktion von GraalVM lassen sich auch andere Programme einbinden.

Oracle hat deshalb auch den Namen GraalVM und nicht GraalJVM gewählt. Denn man kann damit eine echte polyglotte, virtuelle Maschine bereitstellen, die mit mehr als nur Java-Bytecode umgehen kann. GraalVM kann auch LLVM-Bitcode einbinden. Davon profitieren zum Beispiel Programme, die mit C oder Scala entwickelt wurden.

Kostenlose Community Edition und kommerzielle Enterprise Edition

GraalVM steht als Enterprise Edition und als kostenlose Community Edition zur Verfügung. Der Quellcode von Graal steht bei GitHub bereit. Die Binärdateien von Graal stehen für Linux/X86-, Linux/ARM-, macOS- und Windows zur Verfügung.

Die Integration von Python, Ruby, R und WebAssembly sowie die Distribution für die Linux/ARM-Plattform sind derzeit noch experimentell. Die GraalVM enthält verschiedene Technologien aus anderen Projekten, zum Beispiel OpenJDK und Node.js. Diese werden nicht durch die GraalVM-Community gewartet, sondern von den Entwicklern der jeweiligen Projekte.

GraalVM Enterprise bietet laut den Entwicklern eine bessere Leistung, Sicherheit und Skalierbarkeit. Aus diesem Grund empfehlen die Entwickler für den produktiven Betrieb nicht die Verwendung der kostenlosen Community Edition, sondern die Enterprise Edition. Allerdings kann auch die Community Edition problemlos im Produktionsbetrieb genutzt werden.

Hier muss natürlich darauf geachtet werden, dass es nicht den umfassenden Support von Oracle gibt, und der Compiler nicht die maximale Leistung der Enterprise-Edition unterstützt. Auch diese Edition kann eine Zeit lang kostenlos getestet werden. Neben der besseren Leistung verfügt die Enterprise-Edition über Premier 24x7-Support von Oracle.

GraalVM-Compiler

Der Compiler in GraalVM nutzt das JVM Compiler Interface (JVMCI). Er kann dabei Java-Anwendungen mit einem effektiveren Maschinencode bereitstellen und damit auch beschleunigen. Der Compiler ist in Java geschrieben. Das heißt, Entwickler müssen sich nicht mehr parallel mit C++ beschäftigen, sondern können sich auf Java konzentrieren.

Der Compiler verfügt auch über eine Optimierungsroutinen, mit denen er seine eigene Arbeit ständig verbessern kann. Um den Compiler zu nutzen, muss man zunächst GraalVM herunterladen. Mit dem Compiler können Anwendungen so kompiliert werden, dass die Leistung der App möglichst hoch ist.

Mit GraalVM lassen sich aber auch Anwendungen so umsetzen, dass diese in möglichst kurzer Zeit vom Code zum laufenden Programm konvertiert werden können. Der Compiler hat eher den Fokus, Anwendungen möglichst leistungsstark bereitzustellen. Das kann darin resultieren, dass der Kompiliervorgang länger dauert und die App mehr Ressourcen benötigt, vor allem Speicher. Mit dem GraalVM-Native-Image wird über den Compiler ebenfalls eine ausführbare Datei für das Programm zur Verfügung gestellt.

Das Programm nutzt aber keine JVM, sondern die Substrate VM. Diese bietet zwar nicht die maximale Leistung für eine App, sorgt aber dafür, dass diese sehr schnell starten kann. Interessant ist das für Serverless-Anwendungen oder Programme mit einer kürzeren Laufzeit. Die Programme benötigen weniger Ressourcen und starten schneller.

Node.js, Ruby, R und Python mit der GraalVM

Zusätzlich zu den Möglichkeiten Java-Anwendungen leistungsoptimiert zu kompilieren oder die Startzeit zu verkürzen, bietet GraalVM noch mehr. Derzeit lassen sich auch Node.js, Ruby, R und Python mit der GraalVM ausführen. Programme, die in diesen Sprachen entwickelt und mit GraalVM kompiliert wurden, profitieren von den gleichen Möglichkeiten, wie Java-Anwendungen, die über GraalVM kompiliert wurden. Das heißt, Programme sind schneller als über andere Wege.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Generell lassen sich über verschiedene auch C- oder Rust-Programme starten. Da GraalVM also generell Java, Node.js, Ruby, R, C und Rust unterstützt, können auch Anwendungen betrieben werden, die aus Java heraus auf Module zugreifen, die mit anderen Sprachen entwickelt wurden. Dadurch lassen sich auch Bibliotheken aus anderen Sprachen in Java-Anwendungen einbinden.

Fazit

Entwickler, die Java-Anwendungen bereitstellen, sollten sich die Möglichkeiten von GraalVM anschauen. Selbst, wenn die polyglotten Funktionen und andere Bereiche nicht genutzt werden, kann mit der Kompilierung von Java-Anwendungen über GraalVM schon deutlich Leistung gewinnen. Es lohnt sich einen Vergleich zwischen den Anwendungen bezüglich der Leistung zu machen.

Wer auf Bibliotheken von anderen Programmiersprachen zugreifen will, kann mit dem polyglotten Ansatz von GraalVM einige Funktionen nutzen, mit denen Java-Anwendungen deutlich verbessert und flexibler gestaltet werden können. Da die Community Edition kostenlos zur Verfügung gestellt wird, steht einem Testeinsatz nichts im Weg. Auch für den produktiven Betrieb kann die Community Edition genutzt werden.

Soll die Leistung des Compilers verbessert werden, lässt sich das mit der Enterprise Edition erreichen. Diese kann ebenfalls kostenlos getestet werden. Zeigen Tests mit der Enterprise Edition eine bessere Leistung oder werden andere Funktionen aus der Enterprise Edition benötigt kann jederzeit zu dieser Edition gewechselt werden.

(ID:46632749)