Reactive Programming

Reactor 3: Reaktive Anwendungen mit Java 8

Melanie Feldmann

© Shutterstock.com / kasezo

Reactor ist in Version 3 offiziell live gegangen. Das Framework von Pivotal bietet ein effizientes Programmiermodell für reaktive Java-8-Anwendungen. Das Model baut auf den Erfahrungen von Reactor 2 und RxJava 1 auf und führt einen reibungslosen Weg ein, asynchrones und rückstaufreies Event-Processing in Anwendungen durchzuführen.

Die bereits zum Meilenstein 2.5 vorgestellten Klassen Flux und Mono sind mit Reactor 3 jetzt offizieller Teil des Framworks. Die beiden Typen implementieren Reactive-Stream-Publisher in jedem Stadium und können generisch weitergegeben werden. Es sind zwei Typen, weil die Kardinalität für Reactor wichtig ist. Flux überacht 0 bis n Objekte, Mono überwacht 0 oder 1 Objekt. Alle Reactor-Projekte laufen jetzt mit Java 8.

Dank eines komplett überarbeiteten Stream- und Promise-APIs ist Reactor seit Version 2.0 mit anderen Reactive-Streams-Implementierungen wie Akka Streams, Ratpack oder RxJava kombinierbar. Der Reactive-Streams-Standard ermöglicht eine asynchrone Stream-Verarbeitung mit nicht-blockierendem „Gegendruck“ (non-blocking backpressure). Dabei geht es kurz gesagt um eine Umkehr des Publisher-Subscriber-Prinzips: Statt passiv und uneingeschränkt Daten vom Publisher zu empfangen, fragt der Subscriber den Publisher aktiv nach spezifischen Daten. Auf diese Weise empfängt der Subscriber nie mehr Daten, als er verarbeiten kann. Eine Pufferung ist somit nicht mehr nötig. Reactor ist nach Benchmarks der Entwickler die effizienteste Reactive-Bibliothek auf der JVM.

Als nächste Schritte haben die Entwickler ins Auge gefasst, den Testing Support zu verbessern. Hier hapert es noch bei der User Experience. Auch sollen weitere Guides und Tutorials folgen, um einen offiziellen Reactor Guide zu schaffen. Eine Einführung in Reactor 3 gibt Stéphane Maldini, Project Reactor Lead bei Pivotal, in einem Vortrag. Der Projektleiter von RxJava David Karnok hat die Unterschiede und den Nutzen der beiden reaktiven Frameworks auf den Punkt gebracht.

Lesen Sie auch: Reaktiv in die Praxis: Reaktive Programmierung mit RxJava

Die Hintergründe von Reactor

An Bord von Reactor befindet sich eine Implementierung der Reactive-Streams-Spezifikation, die 2014 von einer gemeinsamen Initiative der Unternehmen Typesafe, Red Hat, Netflix, Pivotal, Oracle, Twitter und spray.io vorgestellt wurde. Diese Initiative zielt darauf ab, gemeinsame Standards zur asynchronen Stream-Verarbeitung auf der Java Virtual Machine zu erarbeiten.

Seinen Namen leitet Reactor vom Reactor Pattern ab, bei dem es darum geht, nebenläufige Service Requests über einen Service Handler zu bündeln (demultiplex) und synchron an die jeweiligen Request Handler weiterzuleiten. Auf diese Weise sollen sich auch große Datenmengen schnell verarbeiten lassen, ohne in die Callback-Hölle verschachtelter Aufrufe in nebenläufigen Prozessen zu geraten.

Verwandte Themen:

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: