Framework für asynchrone Anwendungen

Reactor 2.5 erreicht zweiten Meilenstein

Michael Thomas

© Shutterstock.com/Roman Sakhno

Nur einen Monat nach Veröffentlichung des ersten Meilensteins hat Reactor 2.5, Pivotals Framework zur Programmierung asynchroner Anwendungen, seinen zweiten erreicht. Für Reactor Core 2.5 M2 richteten die Entwickler das Augenmerk vor allem auf das API-Design sowie eine erhöhte Effizienz.

So wurde das bis dato als Modul vorliegende reactor-stream für den zweiten Meilenstein mit Reactor Core verschmolzen; die Klassen Flux und Mono decken nun ein breites Repertoire von Operationen in zahlreichen Kategorien wie etwa dem Filtering (z. B. filter, exists, single) oder dem Backpressuring (z. B. onBackpressureDrop, onBackpressureLatest) ab. Diese Fähigkeiten waren per se zwar schon zuvor vorhanden, mit Reactor 2.5 M2 kommen nun jedoch effizientere Reactive-Streams-Commons-Operator-Implementierungen zum Einsatz. Des Weiteren wurden im Zuge des zweiten Meilensteins, nicht zuletzt aufgrund der zunehmenden Ausrichtung des JVM-Marktes auf Java 8, alle Reactor-2.5-Projekte auf eben jenes aktualisiert.

Eine Übersicht über sämtliche Neuerungen des zweiten Meilensteins kann der offiziellen Ankündigung entnommen werden.

Über Reactor und Reactive Streams

Die Entwicklung der zweiten Hauptversion von Reactor begann Ende 2014, fast zur selben Zeit, als das Reactive-Streams-Projekt die Bühne betrat; Pivotal beteiligte sich an der Initiative und lieferte im Rahmen von Reactor 2.0 eine erste Reactive-Streams-Implementierung von RingBuffer-basierten Schedulern ab.

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 erstmals vorgestellt wurde. Diese Initiative zielte darauf ab, gemeinsame Standards zur asynchronen Streamverarbeitung auf der Java Virtual Machine zu erarbeiten.

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 integrierbar. Der Reactive-Streams-Standard ermöglicht eine asynchrone Stream-Verarbeitung mit nicht-blockierendem „Gegendruck“ (non-blocking backpressure), wobei es kurz gesagt um eine Umkehr des Publisher-Subscriber-Prinzips geht: 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.

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 auch große Datenmengen (Big Data) schnell verarbeitet werden können, ohne in die „Callback-Hölle“ verschachtelter Aufrufe in nebenläufigen Prozessen zu geraten.

Aufmacherbild: Wire-frame sketch of industrial lab von Shutterstock / Urheberrecht: Roman Sakhno

Verwandte Themen:

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: