© jamesjoong/Shutterstock.com, © S&S Media/Bianca Röder
Oracles vielsprachige Virtual Machine im Java-Ökosystem

GraalVM startet durch


Die GraalVM ist eine universelle Virtuelle Maschine (VM) für Anwendungen, die in den JVM-basierten Programmiersprachen Java, Scala und Kotlin, den dynamischen Sprachen JavaScript, R, Ruby und Python und den LLVM-basierten Sprachen C/C++ geschrieben wurden [1]. Im Oktober 2019 wurde die auf dem JDK-8-Update 231 basierende GraalVM 19.2.1 veröffentlicht, die Performanceverbesserungen und polyglotte Unterstützung für verschiedene Programmiersprachen bietet. Sie ermöglicht die Sprachinteroperabilität in einer gemeinsamen Laufzeitumgebung und kann eigenständig oder im Kontext von OpenJDK, Node.js sowie der Oracle-Datenbank betrieben werden. Die GraalVM kann wahlweise als Open Source Community Edition (CE) oder als Enterprise Edition (EE) mit OTN-Lizenz verwendet werden.

Die ursprüngliche Entwicklung der GraalVM entstand vor mehreren Jahren in den Oracle Labs und führte zur ersten serienreifen Version GraalVM 19.0 im Mai 2019. Sie fügt sich nahtlos in das Java-Ökosystem ein und bietet mit ihrer Vielsprachigkeit [2] eine Heimat für Programmiersprachen, die mit einem Bytecodecompiler ausgestattet sind. Die GraalVM verwendet das JDK 8 und kann mit dem JDK 11, OpenJDK 11 und höheren Versionen auf Command-Line-Ebene experimentell aktiviert werden:

java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler –jar my_file.jar 

JDK mit JVM

Innerhalb des Java Development Kit (JDK) sind die Entwicklungswerkzeuge und der Java-Compiler javac angesiedelt. Die Ausführung von Java-Programmen übernimmt das Java Runtime Environment (JRE), entweder als eigenständige Ablaufumgebung oder als Bestandteil des JDK, inklusive der Java HotSpot Virtual Machine (JVM), wie in Abbildung 1 dargestellt. Der Class Loader lädt die erzeugten Java-Klassendateien, der Java-Bytecode wird verifiziert und im ersten Schritt ohne Optimierung vom Interpreter ausgeführt. Die Optimierung von Methoden übernimmt der JIT-Compiler, der anhand von Profiling gesammelten Ausführungsinformationen entscheidet, wie eine Methodenoptimierung durchgeführt werden kann, bevor der Maschinencode erzeugt wird. Die HotSpot VM beheimatet zwei JIT-Compiler, den C1-Client-Compiler zur Minimierung der Start-up-Zeit und den C2-Server-Compiler, mit dem Fokus auf Durchsatzsteigerung und für dauerhafte Performanceverbesserungen. Der C2-Compiler soll den ausgeführten Code intensiv analysieren und die dabei erkannten Optimierungen besser in Maschinencode umsetzen können.

weigend_graal_1.tif_fmt1.jpgAbb. 1: Java Runtime mit JVM

JIT-Compiler mi...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang