Kompakte Objektkopffelder in Java werden zu Produktmerkmal

2025-05-22

JEP 519 macht das experimentelle Feature "Kompakte Objektkopffelder" zu einem vollständigen Produktmerkmal in Java. Zuerst in JDK 24 eingeführt, um das Layout von Objektkopffeld zu optimieren und die Leistung zu verbessern, wurde es bei Oracle und Amazon ausgiebig getestet und hat seine Stabilität und Leistungsverbesserungen bewiesen. Die Option `-XX:+UnlockExperimentalVMOptions` wird nicht mehr benötigt. Zukünftige Erweiterungen für mehr Objektkopffeld-Bits sind geplant, wobei die Projekte Valhalla und Lilliput Lösungen bereitstellen.

Mehr lesen
Entwicklung

Schnellere Java-Startzeit durch AOT-Cache-Profilverbesserungen

2025-05-11

Diese Verbesserung reduziert die Warmlaufzeit von Java-Anwendungen deutlich, indem sie Methoden-Ausführungsprofile während Trainingsläufen der Anwendung sammelt und diese im AOT-Cache speichert. Beim Start in der Produktion kann der JIT-Compiler diese Profile sofort verwenden, um nativen Code zu generieren, wodurch das Warten auf die Profilerstellung entfällt und ein schnellerer Start und eine höhere Spitzenleistung erzielt werden. Diese Technik erfordert keine Codeänderungen und ist mit bestehenden AOT-Cache-Erstellungsbefehlen kompatibel. Experimente zeigen eine Reduzierung der Warmlaufzeit um 19 % bei einem einfachen Beispielprogramm.

Mehr lesen
Entwicklung AOT-Cache

Java wird die Unveränderlichkeit von finalen Feldern verstärken

2025-03-31

Um die Sicherheit und Leistung von Java-Programmen zu verbessern, plant das JDK, die Unveränderlichkeit von finalen Feldern zu verstärken. Derzeit kann die tiefe Reflexion finale Felder ändern, was dem ursprünglichen Zweck des final-Schlüsselworts widerspricht und die JVM-Optimierung einschränkt. Zukünftige Versionen werden standardmäßig die Änderung finaler Felder durch tiefe Reflexion verbieten und Warnungen ausgeben. Entwickler können die Änderung finaler Felder selektiv mit der Option `--enable-final-field-mutation` aktivieren, es wird jedoch empfohlen, dies so weit wie möglich zu vermeiden. Diese Maßnahme zielt darauf ab, die "Sicherheit standardmäßig"-Funktion von Java zu verbessern und die Konsistenz mit dem Design von Record-Klassen aufrechtzuerhalten.

Mehr lesen

Java JEP 483: Vorausgehendes Laden und Verknüpfen von Klassen verbessert die Startzeit

2024-12-22

JEP 483 verbessert die Startzeit von Java-Anwendungen deutlich, indem Klassen vorab geladen und verknüpft werden, wenn die HotSpot JVM startet. Dies wird erreicht, indem eine einzelne Anwendungsausführung überwacht und die geladenen und verknüpften Formen aller Klassen in einem Cache für die Wiederverwendung in nachfolgenden Ausführungen gespeichert werden. Diese Funktion erfordert keine Codeänderungen und bietet erhebliche Geschwindigkeitsverbesserungen für große Serveranwendungen. Spring PetClinic zeigt beispielsweise eine 42%ige Reduzierung der Startzeit. Derzeit ist es ein zweistufiger Prozess, zukünftige Versionen werden die Cache-Erstellung auf einen Schritt reduzieren und eine flexiblere Konfiguration für Trainingsläufe ermöglichen.

Mehr lesen
Entwicklung