Final heißt final
Java gilt seit jeher als robuste und sichere Plattform. Gleichzeitig existiert bis heute eine mächtige, oft unterschätzte Angriffsfläche: Deep Reflection. Mit ihr lassen sich selbst private und final deklarierte Felder manipulieren – inklusive vermeintlich unveränderlicher Klassen wie Integer oder String.
Was für Frameworks und Tools nützlich sein kann, ist aus Sicht der Laufzeitintegrität ein erhebliches Risiko. Zentrale Invarianten lassen sich aushebeln, Sicherheitsannahmen brechen, scheinbar unveränderliche Objekte manipulieren – und genau das macht Deep Reflection zu einem attraktiven Werkzeug für Angreifer.
In diesem Vortrag schaut Sven sich diese Gefahr nicht theoretisch, sondern ganz konkret an. Per Live Coding zeigt er, wie Deep Reflection heute genutzt werden kann, um interne Zustände zu verändern, und warum das ein reales Risiko für die Integrität von Java-Anwendungen darstellt.
Darauf aufbauend wirft er einen Blick auf JEP 500, der mit Java 26 einen entscheidenden Schritt geht: final heißt final. Deep Reflection verliert damit ihre zerstörerische Macht – zumindest dort, wo Integrität wichtiger ist als maximale Flexibilität.
Anschließend spannt er den Bogen zu "Integrity by default" und ordnen JEP 500 in die größere Entwicklung der letzten Java-Versionen ein: vom Modul-System über die starke Kapselung interner APIs bis hin zur Einschränkung von Agents, Unsafe und JNI. Du erfährst, welches Ziel hinter diesen Änderungen steckt, wie sie zusammenspielen und was das ganz praktisch für deinen Code, deine Libraries und deine Sicherheitsannahmen bedeutet.
Lernziele
Du verstehst, wie sich Java von einer maximal flexiblen zu einer bewusst restriktiveren, aber robusteren Plattform entwickelt.