Vorträge von Sven Woltmann

Sven Woltmann ist Java-Entwickler der ersten Stunde mit Schwerpunkten auf skalierbaren Unternehmensanwendungen, Optimierung von Algorithmen, Clean Code und Clean Architecture. Hier findet ihr aktuelle Abstracts seiner Konferenz-Vorträge zu den Themen Virtuelle Threads, Structured Concurrency und Hexagonale Architektur.

» Vortrag 1: Virtuelle Threads: Projekt Looms Revolution der Skalierbarkeit
» Vortrag 2: Structured Concurrency in Java: Endlich Schluss mit Spaghetti-Threads
» Vortrag 3: Hexagonale Architektur: Robuste Software dank Schnittstellen statt Schichten

» Foto und Kurzbiografie

Virtuelle Threads: Projekt Looms Revolution der Skalierbarkeit

Threads, seit jeher fester Bestandteil von Java, haben ihre Grenzen: Mehr als ein paar Tausend kann man nicht starten, ohne die Systemstabilität zu gefährden. Für hoch skalierbare Anwendungen mussten wir bisher auf asynchrone Programmierung zurückgreifen. Doch asynchroner Code ist schwer zu schreiben, zu lesen und zu debuggen.

Jahrelang wurde im Rahmen von Project Loom an einer zukunftsweisenden Lösung gearbeitet: Mit fast 100.000 geänderten Codezeilen erschien in Java 21 endlich die finale Version von virtuellen Threads.

Diese benötigen um Größenordnungen weniger Ressourcen als herkömmliche Threads, insbesondere bei blockierenden Operationen. Anstelle von Tausenden stehen uns nun Millionen von Threads zur Verfügung. Das ermöglicht es uns, im traditionellen Thread-pro-Request-Stil hoch skalierbare Anwendungen zu schreiben, die einfacher zu warten, zu testen und zu debuggen sind als asynchrone Anwendungen.

Anhand einer Beispielanwendung führe ich euch von den Limitierungen der klassischen nebenläufigen Programmierung über asynchrone Ansätze bis zu den Einsatzmöglichkeiten und der Funktionsweise von virtuellen Threads. Mit einem abschließenden Überblick über Grenzen und potenzielle Fallstricke sowie einigen Tipps zur Migration bestehender Anwendungen werdet ihr bestens gerüstet sein, um virtuelle Threads in eurer täglichen Arbeit einzusetzen.

Dauer: ca. 40 Minuten

Structured Concurrency in Java: Endlich Schluss mit Spaghetti-Threads

Die Koordination nebenläufiger, potenziell blockierender Teilaufgaben stößt mit klassischen Ansätzen wie CompletableFuture und ExecutorService schnell an ihre Grenzen. So führt z. B. das Abbrechen von Teilaufgaben, sei es nach Fehlersituationen oder wenn wir nur das Ergebnis einer Teilaufgabe benötigen, schnell zu unübersichtlichen Verflechtungen von Geschäftslogik und Zustandsbehandlung. Wir sprechen dann von „Unstructured Concurrency”.

Mit dem StructuredTaskScope gibt es jetzt ein API für „Structured Concurrency”, das es uns erlaubt, Teilaufgaben gemeinsam zu starten und zu beenden, die Ergebnisse zusammenzuführen und bei Bedarf Teilaufgaben sauber abzubrechen.

An praxisnahen Beispielen zeige ich euch, dass für die meisten Anwendungsfälle durch vordefinierte Strategien wie „alle Teilaufgaben müssen erfolgreich sein” und „Abbruch, wenn eine Teilaufgabe erfolgreich ist” nur wenige, leicht verständliche Codezeilen erforderlich sind.

Und auch individuelle Anforderungen könnt ihr mit StructuredTaskScope sauber bewältigen – dafür zeige ich euch beispielhaft, wie ihr eine Strategie implementiert, die auf eine bestimmte Anzahl von Teilergebnissen wartet und dann das beste Ergebnis zurückliefert.

Dauer: ca. 40 Minuten

Hexagonale Architektur: Robuste Software dank Schnittstellen statt Schichten

Wir alle kennen diese Situation: Je älter und größer eine Anwendung wird, desto aufwendiger und teurer wird es, sie zu erweitern und zu warten. Die verbreitete Schichtenarchitektur ist als Lösungsansatz unzureichend: Direkte und indirekte Abhängigkeiten aller Schichten zur Datenbank und anderen Infrastrukturkomponenten führen oft zu einer Aufweichung der Schichtengrenzen und einer Verflechtung von technischem und fachlichem Code.

Hexagonale Architektur rückt die Geschäftslogik ins Zentrum, und technische Details werden als Adapter hinter Schnittstellen (Ports) isoliert. Fachlicher und technischer Code kann so unabhängig voneinander entwickelt und getestet werden.

Ausgehend von den Zielen einer Softwarearchitektur und einem kritischen Blick auf die Schichtenarchitektur, schauen wir uns die hexagonale Architektur im Detail an. Ihr erfahrt, wie die Dependency Rule sicherstellt, dass es keine Abhängigkeiten von fachlichem zu technischem Code gibt und wie der Anwendungskern trotzdem auf die Infrastruktur zugreifen kann. Erfüllt die hexagonale Architektur die Ziele einer Softwarearchitektur? Welche Herausforderungen bringt sie mit sich? Wie unterscheidet sie sich von Onion und Clean Architecture, und welche Synergien ergeben sich im Zusammenspiel mit Microservices und Domain-Driven Design?

Mit neuem Wissen gerüstet, könnt ihr die Qualität und Lebensdauer eurer Softwareprojekte steigern und in Zukunft schneller auf neue Anforderungen reagieren.

Dauer: ca. 40 Minuten

Profil

Sven Woltmann

Sven Woltmann ist Java-Entwickler der ersten Stunde. Er arbeitet als unabhängiger Entwickler, Coach und Kursleiter mit Schwerpunkt auf skalierbaren Unternehmensanwendungen, Optimierung von Algorithmen, Clean Code und Clean Architecture. Er teilt sein Wissen über Java, Architektur, Algorithmen und Datenstrukturen in Videos, seinem Newsletter und seinem Blog www.happycoders.eu.