Die GraalVM: Javas Sprung in die Gegenwart?

GraalVM will eine polyglotte Alternative für die Java Virtual Machine sein. Zusätzlich soll sie eine bessere Performance für JVM-Sprachen bieten.

Werkzeuge  –  109 Kommentare

(Bild: oatawa / shutterstock.com)

Die Java Virtual Machine (JVM) gibt es jetzt seit über 24 Jahren. Sie wurde geschaffen, um eine objektorientierte und robuste Programmiersprache plattformunabhängig ablaufen lassen zu können. Mit den Jahrzehnten wuchs ihre Verbreitung. Unterschiedliche Programmiersprachen entstanden und das Java Software Development Kit (SDK) bekam immer neue Funktionen. Das alles hat die JVM aber auch groß und träge gemacht.

Zugute halten muss man ihr, dass in der Vergangenheit RAM-Bedarf oder längere Startzeit nicht übermäßig problematisch waren. Seit Softwareentwickler aber mit Containern und Containerorchestrierungen oder FaaS-Systemen (Function-as-a-Service) arbeiten, sind solche Metriken relevanter. Sie bestimmen mit, ob Applikationen schnell skalieren oder man sie als Function (on request) einsetzen kann. Ebenso ist es ein gängiges Pattern, nichtfunktionale Anforderungen (CORS Header, Jobs, Rate Limiting etc.) in eigene Container auszulagern. Dadurch müssen die Applikationscontainer nicht mehr so komplex sein und die verwendeten Frameworks nicht mehr alles auf einmal können.

Obwohl Go und Rust als moderne kompilierte Programmiersprachen im Kubernetes-Universum eine große Rolle spielen und sich teilweise anschicken, das Applikations-Layer zu erobern, sind jedoch meist die JVM und ihre Frameworks aus verschiedenen Gründen (Personal, Policies etc.) gesetzt. Was sollte man also tun? Zum Glück gibt es eine ganze Reihe an Entwicklungen, die Entwicklern Hoffnung machen.

GraalVM: Ein Hoffnungsträger

Ein Projekt, das mehrere der neuen Herausforderungen adressiert, ist die GraalVM. Gerade in einer ersten stabilen Version erschienen, soll sie die Performance der bestehenden JVM verbessern und Tools bereitstellen, um Java-Applikationen als native Binaries laufen zu lassen. Dabei soll man auf den Overhead verzichten können, eine vollständige VM zur Laufzeit zu benötigen. Doch was ist die GraalVM und wie funktioniert sie?