Java startet blitzschnell: JEP 544 kompiliert Code vorab

JEP 544: Ahead-of-Time Code Compilation

JEP 544 bringt Ahead-of-Time-Kompilierung in die HotSpot JVM: In einem Trainingslauf wird optimierter nativer Code erzeugt und im AOT-Cache gespeichert. In Produktionsläufen steht dieser sofort zur Verfügung, was die Startzeit um bis zu 80 % und die Warmup-Zeit um bis zu 75 % reduziert. Ändert sich die Last, greift HotSpot dynamisch auf JIT-Kompilierung zurück – Agilität und Portabilität bleiben erhalten.

Die Anwendung kann sich gewissermaßen einer weiteren Warmup-Phase unterziehen und die Leistung aufrechterhalten, während sich die Arbeitslast der Anwendung ändert.
  1. cogman10

    Leyden hat sich ziemlich stark auf Trainingsläufe verlassen, was ich verstehe, aber Mann, das ist eine ziemlich harte Bürde, das einzurichten.

    Die Tooling für solche Trainingsläufe existiert nicht wirklich, man muss am Ende etwas Maßgeschneidertes als Teil seiner Build-Pipeline machen, wenn man es dort haben will. Das kann besonders knifflig sein bei komplizierteren Anwendungen wie denen, die ich pflege.

    Ich mag, was diese liefern können, aber ich mag den Aufwand nicht, der nötig ist, um es zum Laufen zu bringen.

  2. treyd

    Was sind die architektonischen Unterschiede zwischen diesem und Androids Ahead-of-Time-Runtime?

  3. cyberax

    Excelsior JET hat das vor 25 Jahren gemacht: https://en.wikipedia.org/wiki/Excelsior_JET

    Es ist eine Schande, dass Sun/Oracle sich nie mit ihnen zusammengetan hat, um native Apps zu bringen. Das hätte Java auf dem Desktop retten können.

  4. java-man

    Ich hoffe, dass wir irgendwann einen AOT-only-Modus bekommen (oder zu nativ kompilieren) und vielleicht sogar Cross-Compilation.

  5. ledo9915

    Ein Datenpunkt aus einem kleinen Nebenprojekt: Ich führe Benutzercode in einer Piston-Sandbox für eine Coding-Challenge-Website aus. Ein triviales Java-Programm kostet 2,5-3 Sekunden Wanduhrzeit auf einer 4-vCPU-Box, fast alles davon javac plus JVM-Start. Go braucht etwa 1,7 Sekunden für Build plus Ausführung, und Swift, das durch den Interpreter läuft, liegt bei 0,4 Sekunden. Java ist der Grund, warum ich überhaupt ein globales Rate Limit für kompilierte Sprachen setzen musste. Wenn AOT die JVM-Seite auf ein paar hundert Millisekunden bringt, ändert das, was eine kleine Box bedienen kann.

Mehr von diesem Tag

2026-09-10