Java: Project Leyden soll Anwendungen durch statische Images optimieren

Der Vorschlag sieht speziell zugeschnittene statische Images vor, um die Startzeit und die Größe von Java-Anwendungen zu verbessern.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Java: Project Leyden soll Anwendungen mit statischen Images optimieren
Lesezeit: 2 Min.

Auf der OpenJDK-Mailing-Liste hat Mark Reinhold, Chief Architect der Java Platform Group, einen Vorschlag für ein neues Projekt eingebracht: Leyden soll Java-Anwendungen über speziell zugeschnittene statische Images optimieren und so vor allem den Footprint und die Startzeit verbessern.

Das statische Image ist als eigenständiges Programm auf genau eine Applikation zugeschnitten. Es arbeitet als geschlossenes System, das weder Klassen laden kann, die sich außerhalb befinden, noch zur Laufzeit neuen Bytecode erstellen darf.

Die Einschränkungen ermöglichen eine Build-Time-Analyse für Optimierungen. Dadurch lassen sich nicht verwendete Klassen und Initializers erkennen, die sich bereits beim Build ausführen lassen. Zudem ist ein verstärkter Einsatz des Ahead-of-Time-Compilers (AOT) möglich. Das reduziert die Arbeit des Just-in-Time-Compilers (JIT) zur Laufzeit, womit die Anwendung schneller ihre bestmögliche Performance erreicht.

Project Leyden ist nicht als Allheilmittel zum Optimieren von Java-Applikationen gedacht, sondern eignet sich aufgrund des Ansatzes geschlossener Systeme nur für spezielle Szenarien. Auch ist laut Reinhold einige Handarbeit an der Konfiguration der jeweiligen Anwendung erforderlich, um optimale Ergebnisse zu erzielen. Besonders nützlich könne Leyden unter anderem für Java-Applikationen auf Embedded Devices oder in der Cloud sein.

Als Inspiration für die Umsetzung soll unter anderem der GNU Compiler for Java und die Native-Image-Funktion der GraalVM dienen. Letztere soll die Spezifikation mittelfristig implementieren, allerdings ist nicht geplant, den Code für Native Image aus der GraalVM in das JDK zu übertragen. Stattdessen soll Leyden auf vorhandene Komponenten wie die HotSpot JVM und den jaotc-AOT-Compiler aufbauen.

Mehr Infos

GraalVM

Letztlich soll mit den statischen Images ein Standard entstehen, über den Entwickler sie wahlweise über Leyden, Native Images in Graal oder weitere Implementierungen umsetzen können, um die für sie optimale Balance zwischen benötigter Kompilierzeit, Startzeit und Image-Größe zu finden.

Das Projekt soll mit einem Klon des derzeit entwickelten JDK 15 starten. Reinhold erwartet, dass Leyden im Lauf der Zeit im Rahmen mehrerer Releases von Java über eine Reihe von JEPs (JDK Enhancement Proposals) Gestalt annimmt.

Weitere Details lassen sich der Mail von Reinhold auf der OpenJDK-Mailing-Liste entnehmen. Die ersten Antworten sind weitgehend positiv, auch wenn das Einführen statischer Images aus Sicht einiger keine leichte Aufgabe wird. (rme)