Oracle setzt auf Knowhow aus Linz

Viele Entwickler kennen Oracles GraalVM: Es handelt sich dabei um eine performantere und multilinguale JavaVM sowie einen Java Compiler, die 2018 vorgestellt und seit 2019 als Enterprise Edition verfügbar sind. Die Ursprungsidee dafür stammt aus Linz. [...]

Christian Wirth leitet das Oracle Lab in Linz und war ab Beginn an der Entwicklung der GraalVM beteiligt. (c) Oracle

Linz im Jahre 2001: Vier Schüler aus Oberösterreich. nehmen an der Internationalen Informatik Olympiade in Südkorea teil: Thomas Würthinger, Christian Wirth, Roland Schatz und Lukas Stadler. Später studieren alle vier Informatik an der Uni Linz – bis zum Doktorat. Heute arbeiten alle vier bei Oracle in den Oracle Labs. Davon gibt es neun weltweit. Christian Wirth leitet heute das Oracle Lab in Linz, Thomas Würthinger das Oracle Lab in Zürich.

Die zentrale Figur im Spiel ist Hans-Peter Mössenböck, Professor am Institut für Systemsoftware der JKU in Linz. Nach einem Aufenthalt in den USA bei Sun im Jahr 2001, wo er in der Forschung an der Produkt-Entwicklung des Java Compilers mitarbeitete, nahm er die Idee mit nach Linz und setzte seine Forschungsarbeit im Auftrag von Sun weiter fort, auch mithilfe von Doktoranden und Master-Studenten. Sun wurde von Oracle übernommen und 2012 wurde Thomas Würthinger, damals auch Doktorand an der Uni Linz, von Oracle angestellt.

Damit war der Startschuss zur Gründung des Oracle-Labs- Standortes in Linz gefallen und von da an wurde die Forschungskooperation ausgebaut. Gleichzeitig wurde die Forschung zur Entwicklung der GraalVM aufgenommen. 2013 werden Roland Schatz und Christian Wirth von Oracle angestellt. Heute ist die GraalVM das größte Projekt – rund ein Viertel der insgesamt rund 250 Oracle-Labs-Mitarbeiter weltweit arbeiten an Forschung und Entwicklung der GraalVM. In Linz bei Christian Wirth ist das Team auf 15 Mitarbeiter angewachsen, bei Thomas Würthinger in Zürich sind es knapp doppelt so viele (www.graalvm.org).

Vom Compiler zum GraalVM Universum

Aus der Ursprungsidee eines Compilers ist heute mit der GraalVM sehr viel mehr geworden. Es ist praktisch eine Erneuerung der JavaVM, indem wesentliche Teile neu in Java statt in C/C++ implementiert werden. Damit sind im Grunde heute Verbesserungen an Java und Weiterentwicklungen viel leichter möglich. Die GraalVM erzeugt dabei Maschinencode, der auf Benchmarks schneller als in den bestehenden Implementierungen (OracleJDK, OpenJDK) ist.

Die GraalVM ist eine universelle virtuelle Maschine (VM) für Anwendungen, die in den Programmiersprachen Java, Scala, Kotlin, JavaScript, R, Ruby, Python und C/C++ geschrieben wurden. 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 (kostenlose) Open Source Community Edition (CE) verwendet werden und steht seit letztem Sommer auch als Enterprise Edition (EE) zur Verfügung. Es gibt einige Optimierungen, die nur in der Enterprise-Variante zur Verfügung stehen. Man kann die Enterprise-Variante aber zu Evaluierungszwecken herunterladen und prüfen, ob die GraalVM beim eigenen Workload etwas bringt. Die Evaluierungsversion darf jedoch nicht in Produktion verwendet werden.

Die Entwickler sind davon natürlich überzeugt: »Die GraalVM ermöglicht eine höhere Perfomance der in Java geschriebenen Applikationen«, erklärt Christian Wirth. »Insbesondere durch die neuen Sprachfeatures ab Java 8 sehen wir, dass der GraalVM Compiler sehr viele Vorteile bieten kann«, unterstreicht Wirth. Durch die multilinguale Fähigkeit der GraalVM wird der der Performance-Gewinn sofort sichtbar: »Wenn Programme etwa in Scala geschrieben sind können wir typischerweise im zweistelligen Prozentbereich schneller performen«, sagt Wirth.

Einsparungen bei Twitter

Ende November lud Oracle Österreich Country Leader Martin Winkler Business-Kunden stolz zu einem Abend unter dem Titel „Linz beats Silicon Valley“. Dabei präsentierte Christian Wirth die GraalVM – denn für die heimischen Kunden ist das Produkt interessant, wie Wirth verdeutlicht: „Es gibt viele Oracle Kunden in Österreich, die Java einsetzen. Für sie ist es einerseits spannend zu sehen, dass in Österreich dazu Forschung stattfindet. Andererseits ist es auch für uns in der Forschung interessant, dass wir mit Kunden und interessanten Anwendungsfällen in Berührung kommen. Dieses Wissen fließt wieder in unsere Forschung und Entwicklung ein“, betont Wirth. Einer der größten Anwender für die GraalVM ist Twitter, „der US-Kurznachrichtendienst nutzt die GraalVM in seinem Rechenzentrum und hat durch die Umstellung der JavaVM auf die GraalVM einen Performancegewinn von elf Prozent erzielt“, berichtet Wirth. Jeder Tweet, der heute gesendet wird, läuft über die GraalVM. Das bedeutet laut Angaben von Twitter eine Kosteneinsparung von rund 20 Mio. US Dollar pro Jahr. Ein weiterer namhafter Referenzkunde ist Goldman Sachs. Das Investmentbanking-Unternehmen verwendet GraalVM für seine Experimente rund um die selbst-entwickelte Programmiersprache Slang.

Polyglotte Funktionalität 

Die Idee, die GraalVM als universelle Laufzeitumgebung für allerlei Sprachen zur Verfügung zu haben, wäre schon ein Vorteil. Daneben kann die GraalVM aber noch mehr, zeigt Christian Wirth auf. Es existieren Schnittstellen, um die Programmiersprachen kontrolliert miteinander verbinden zu können und Daten und Code von einer in die andere Sprache quasi zu „transferieren“. Den technischen Background dazu liefert das  “polyglot interoperability protocol” des Truffle-Frameworks, das genau diese Dinge standardisiert und damit diese Interoperabilität ermöglicht. „Mein Team und ich arbeiten zudem jetzt an Sprachinterpretern, etwa für JavaScript, Ruby und Python, die in der Performance so gut sind wie Compiler“, schildert Wirth. Damit kann die Laufzeit der Applikationen noch erhöht werden.

Aktuelle Forschungsarbeit

„Wir sind derzeit sehr aktiv im Bereich von Programm-Frameworks, um Applikationen zu entwickeln: Helidon (von Oracle selbst), Quarkus (Red Hat) und Micronaut unterstützen GraalVM bereits, Spring arbeitet aktiv daran. Hier steht GraalVM „Native Image“ im Vordergrund. Normalerweise wird Java JIT-compiliert (just in time), d.h. der Java Compiler übersetzt erst zur Laufzeit in Maschinencode und geht dabei auf die Gegebenheiten des Rechners und der Applikation ein. Um Memory-Footprint und Startup-Zeit zu minimieren, unterstützt GraalVM die Möglichkeit, „ahead of time“ ein “Native Image” zu erzeugen. Simpel gesagt: ein standalone ausführbares Programm, das keine zusätzliche JVM benötigt. „Native Image erzeugt aktuell die größte Aufmerksamkeit für GraalVM, weil es echtes Neuland mit Mehrwert ist“, meint Wirth.

Viele Produktteams innerhalb Oracle arbeiten jetzt am Einsatz der GraalVM bzw. dem Einbau in andere Oracle-Produkte. Die gesamte Oracle Cloud Infrastructure nutzt bereits das Produkt, die gesamte Cloud Administration läuft mittlerweile auf GraalVM. Das Know-how für Forschung und Entwicklung dazu, halten wir es fest, kommt nach wie vor federführend von Oberösterreichern.

Funktionalität der GraalVM

  • GraalVM führt Java (Scala, Kotlin, etc.) schneller aus.
  • GraalVM erlaubt es, Java-Applikationen in „Executables“ zu kompilieren („native-image“). Diese lassen sich leichter ausliefern, weil sie keine zusätzliche Java VM mehr brauchen. Sie starten schneller und brauchen weniger Speicher.
  • GraalVM erlaubt die Ausführung weiterer Programmiersprachen (JavaScript, Ruby, Python, R, LLVM=C/C++/etc.) direkt auf der GraalVM.
  • GraalVM erlaubt den Zugriff auf Java von Applikationen in diesen Programmiersprachen.
  • GraalVM erlaubt den problemlosen, raschen Austausch von Code und Daten zwischen Applikationen in diversen Programmiersprachen.
    www.graalvm.org


Mehr Artikel

Be the first to comment

Leave a Reply

Your email address will not be published.


*