Die Java-Stream-API wurde mit Java 8 im März 2014 veröffentlicht und hat uns ein unverzichtbares Werkzeug an die Hand gegeben, um Daten zu verarbeiten.
Doch der begrenzte Satz an intermediären Operationen – `filter`, `map`, `flatMap`, `mapMulti`, `distinct`, `sorted`, `peak`, `limit`, `skip`, `takeWhile` und `dropWhile` – führt dazu, dass komplexere Datentransformationen durch die Stream-API nicht ausgedrückt werden können.
Es fehlen z. B. Operationen wie `window` und `fold` und zahlreiche mehr, wenn man sich die Feature-Requests der Community ansieht.
Anstatt nun all diese Operationen ins Stream-Interface zu integrieren, entwickelte das JDK-Team eine neue API, die zum einen im JDK selbst genutzt wird, um heiß begehrte intermediäre Operationen bereitzustellen, und mit der zum anderen Entwicklerinnen und Entwickler ihre eigenen Operationen implementieren können.
Diese neue API heißt „Stream Gatherers“ und wurde in Java 22 im März 2024, also genau zehn Jahre nach der Einführung der Stream-API, zum ersten mal als Preview-Feature (JEP 461) veröffentlicht. In Java 23 wurde die neue API ohne Änderungen in eine zweite Preview-Runde geschickt (JEP 473), und in Java 24 wurde sie – wieder ohne Änderungen – finalisiert (JEP 485).
In diesem Talk erfahrt ihr in Theorie und Praxis (inklusive Live-Coding), was Stream Gatherers sind und wie sie funktionieren, welche Gatherer im JDK bereits verfügbar sind und wie ihr sie effektiv einsetzt, wie ihr selbst eigene Gatherer implementieren könnt und wo die Grenzen der neuen API liegen.