Plus: Aggressives AOT Compiling

Project Leyden: Mehr Speed für Java durch Static Images

Dominik Mohilo

© Shutterstock / kasha_malasha

Langsame Startzeiten, großer Footprint, lange Dauer bis zur Höchstleistung: Das sind die Leiden vom (nicht mehr ganz so jungen) Java. Dass es dafür Lösungen gibt, beweisen einige Frameworks und Tools – wie die GraalVM – sehr eindrucksvoll. Warum also nicht auch für das „klassische“ Java und die HotSpot JVM? Project Leyden soll genau dies evaluieren. Das Heilmittel nennt sich Static Image.

Die Welt dreht sich gefühlt immer schneller und ein Ereignis jagt das nächste – frei nach dem Motto „Wer rastet, der rostet“. Ganz ähnlich verhält es sich im Mikrokosmos Programmiersprachen: Auch hier ist Geschwindigkeit ein entscheidender Faktor. Doch sind wir grundehrlich, müssen wir zugeben, dass Java gerade in Bezug auf die Geschwindigkeit nicht immer Klassenprimus ist. Neue Ansätze wie die GraalVM sorgen für mehr Speed unter der Haube, Project Leyden soll das Thema nun auch wieder für die Java-Plattform und das JDK adressieren.

Project Leyden: Static Images für Java

Niemand geringeres als Mark Reinhold höchstselbst hat Project Leyden ins Leben gerufen und sich auch gleich als Projektleiter ins Spiel gebracht. An Bord für das ambitionierte Projekt wüsste er unter anderem Alex Buckley, Bob Vandette, Claes Redestad, Igor Veresov, Ioi Lam, Mandy Chung und Vladimir Kozlov gerne als Reviewer an seiner Seite. Natürlich mit der Option, das Team zu erweitern.

Doch worum genau geht es? Einfach gesagt: Um die Verbesserung der Startgeschwindigkeit von Java und der Zeit, bis Java die höchste Leistung (Peak Performance) erreicht sowie die Verkleinerung des Footprints. Das klingt erstmal nicht trivial, sondern nach einem umfangreichen Unterfangen. Die Lösung allerdings könnte simpler nicht ausgedrückt sein: Static Images. Laut Reinhold sind diese statischen Images eigenständige Programme, die aus einer bestimmten Anwendung hervorgehen und nur genau diese Anwendung ausführen, keine andere. Zudem haben Static Images, wie der Name vermuten lässt, eine gewisse Beständigkeit. Soll heißen, sie sollen nicht in der Lage sein, Klassen von außerhalb des Images selbst zu laden oder zur Laufzeit neuen Bytecode ausführen.

Aggressive AOT-Kompilierung

Die Einschränkungen sind massiv, das ist klar, womit sich statische Images nicht für jeden Anwendungstyp eignen wird. Doch gerade im Hinblick auf Serverless, also die Cloud, oder das Internet of Things könnte dies ein kleiner Preis für eine deutlich bessere Performance sein, wie Reinhold zu bedenken gibt, trotz der manchmal kniffligen Notwendigkeit, manuelle Einstellungen vorzunehmen. Vorteile bringen die genannten Beschränkungen auch im Hinblick auf die Größe des Images und damit auch zu dessen Startgeschwindigkeit. Durch gezielte Analysen zur Build-Zeit sollen ungenutzte Klassen entfernt werden können. Außerdem könne so durch „aggressive AOT-Kompilierung“ die Zeit verringert werden, bis Java auf Hochtouren läuft.

Wer nun denkt, dass dies ja schon sehr nach der GraalVM, bzw. dem Native Image Feature der virtuellen Maschine klingt, liegt damit nicht komplett daneben. Dennoch, so betont Mark Reinhold, wolle man Leyden nicht einfach durch den Merge des Native-Image-Codes aus der GraalVM implementieren, sondern das Feature auf dem „klassischen“ JDK und dessen Teilen aufbauen. Dennoch soll die Interoperabilität mit der GraalVM natürlich sehr leichtfertig von der Hand gehen, wie man erwarten darf.

Das Release von Leyden, so der aktuelle Stand, soll gewohnt über eine Serie von JEPs releast werden. Weitere Informationen zum Projekt gibt es auf der JDK-Mailing-Liste.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: