Modernes Java in der Praxis: Die Features, die wirklich zählen
Java entwickelt sich schneller als je zuvor. Seit Java 17 sind zahlreiche Sprachmerkmale, APIs und Laufzeitverbesserungen hinzugekommen. Einige davon fallen sofort ins Auge, andere wirken zunächst unscheinbar. Besonders interessant wird es dort, wo mehrere Neuerungen zusammenspielen und neue Möglichkeiten für den Entwurf und die Implementierung von Java-Anwendungen eröffnen.
In diesem ganztägigen Workshop werfen Falk und Sven zusammen mit den Teilnehmenden einen umfassenden Blick auf die wichtigsten Entwicklungen seit Java 17. Dabei geht es nicht darum, möglichst viele Release Notes abzuhaken. Wir konzentrieren uns auf Features, die im Entwicklungsalltag tatsächlich einen Unterschied machen, und gliedern den Tag in vier Themenblöcke:
- Weniger Zeremonie: Wie viel Boilerplate muss ein Java-Programm heute noch mitschleppen? Compact Source Files und Instance Main Methods machen aus "Hallo Welt" drei Zeilen, Module Import Declarations ersetzen den Import-Block, Flexible Constructor Bodys erlauben Validierung vor super(), und Unnamed Variables räumen weg, was uns nie interessiert hat.
- Die Domäne im Code: Records und Sealed Classes beschreiben eine Fachdomäne so präzise, dass der Compiler mitdenkt. Pattern Matching for switch verzweigt über Typen und Bedingungen, Exhaustiveness deckt vergessene Fälle auf, und Record Patterns entpacken verschachtelte Daten direkt im Muster. Zusammen ergibt das einen datenorientierten Programmierstil.
- Nebenläufigkeit im Alltag: Virtual Threads versprechen Skalierung ohne reaktive Verrenkungen. Wir schauen, was sich für Service-Code tatsächlich ändert, wo Pinning, ThreadLocal und Threadpools stolpern lassen und wie Structured Concurrency und Scoped Values nebenläufigen Code lesbar halten.
- Collections, Streams und Ausblick: Sequenced Collections und Stream Gatherers schließen alte Lücken in den täglichen APIs. Danach heben wir den Blick: Was bringen Ahead-of-Time Class Loading und Compact Object Headers, was steckt hinter HTTP/3 und quantensicherer Kryptografie im JDK, und welche Sprachfeatures sind als Nächstes dran?
Viele dieser Neuerungen betrachten wir nicht isoliert. Wir untersuchen, wie sie sich miteinander kombinieren lassen und welche Auswirkungen sie auf typische Architektur- und Implementierungsentscheidungen haben.
Kurze praktische Hands-on-Übungen geben Gelegenheit, die Features in der eigenen IDE auszuprobieren. Wir diskutieren, welche Neuerungen sich unmittelbar einsetzen lassen, welche noch als Preview verfügbar sind und bei welchen zunächst Zurückhaltung angebracht ist.
Zum Abschluss wagen wir einen Blick auf die weitere Entwicklung von Java: Lazy Constants, Primitive Types in Patterns und Value Classes aus Project Valhalla. Wir ordnen ein, welche Probleme damit gelöst werden sollen und wie belastbar die jeweiligen Planungen bereits sind.
Vorkenntnisse
Der Workshop richtet sich an Java-Entwickler:innen und Softwarearchitekt:innen, die bereits praktische Erfahrung mit Java besitzen. Grundkenntnisse in Java 17 sind ausreichend. Die Beispiele und Übungen basieren auf Java 25; Preview-Features sind als solche gekennzeichnet. Die Teilnehmenden arbeiten in ihrer eigenen IDE mit einem installierten JDK 25 und erhalten vorab ein GitHub-Repository mit dem Übungscode.
Lernziele
Nach dem Workshop können die Teilnehmenden:
- Die wichtigsten Java-Neuerungen seit Java 17 einordnen
- Geeignete Features für bestehende und neue Anwendungen auswählen
- Moderne Sprachmittel sinnvoll miteinander kombinieren
Chancen und Grenzen von Virtual Threads und Structured Concurrency beurteilen
- Preview Features und experimentelle APIs angemessen bewerten.
- Bestehende Codebasen schrittweise modernisieren