© Excellent backgrounds/Shutterstock.com
Reaktive Programmierung mit RxJava

Reaktiv in die Praxis


Das „Reactive Manifesto“ [1] ist mittlerweile vielen Entwicklern ein Begriff. Insbesondere der Streaminganbieter Netflix [2] setzt stark auf diesen Architekturansatz und hat nicht nur viele Blogeinträge und Präsentationen zu dem Thema veröffentlicht, sondern auch zentrale, intern entwickelte und eingesetzte Bibliotheken Open Source zur Verfügung gestellt. Auf Basis zweier dieser Bibliotheken, RxJava und Hystrix, wollen wir eine praktische Einführung in die reaktive Programmierung geben.

Obwohl bereits viel über reaktive Programmierung und das reaktive Manifesto gesprochen und geschrieben wurde, ist das Thema in der Praxis häufig noch nicht angekommen. Manchmal wird es hinter vorgehaltener Hand doch eher als esoterisch angesehen oder als etwas, das nur für die Systeme großer Konzerne wie Amazon, eBay oder Netflix interessant ist. In unserem täglichen Projektgeschäft spielt die reaktive Programmierung jedenfalls selten eine Rolle. Wir möchten mit diesem Artikel dazu beitragen, anhand praktischer Beispiele das Verständnis für den reaktiven Ansatz zu erhöhen und die Hemmschwelle für den Einsatz zu senken.

Aber was bedeutet eigentlich reaktive Programmierung? Im Wesentlichen geht es darum, Zustandsänderungen aktiv an alle Systembestandteile zu propagieren, die sich für diesen Zustand interessieren. Ein Standardbeispiel, um den Unterschied zum imperativen Paradigma zu verdeutlichen, ist die Umsetzung der einfachen Funktion c = a + b. Imperativ würde c zu einem bestimmten Zeitpunkt die Summe von a und b zugewiesen werden. Wenn sich die Werte von a oder b nach der Zuweisung noch ändern, hat dies keinen Einfluss auf den Wert von c. Er bleibt konstant bis zu einer neuen expliziten Zuweisung. In einem reaktiven System hingegen würde c immer die Summe der aktuellen Werte von a und b widerspiegeln. Selbstverständlich ist dies eine sehr vereinfachte Darstellung. Im weiteren Verlauf dieses Artikels werden wir aber zeigen, wie, basierend auf diesem Prinzip, RxJava und Hystrix dazu beitragen können, den im reaktiven Manifest formulierten Ansprüchen an ein System zu entsprechen.

Reaktiv in Java mit RxJava

Netflix entschied sich bereits vor einigen Jahren, zur Optimierung ihrer Services ein reaktives Programmiermodell einzusetzen. Die Gründe und Ziele sind detailliert in einem Eintrag des Netflix Tech Blog [3] dargestellt. Es stellte sich schnell heraus, dass die Verwendung der Möglichkeiten, in Java asynchron über Änderungen informiert zu werden, also Futures, nicht au...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang