RxJava für Java: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

RxJava für Java: Vollständiges Tutorial zur reaktiven Programmierung

1. Was ist RxJava und warum wird es benötigt?

RxJava ist eine Bibliothek für reaktive Programmierung in Java, die das Konzept von Observable (beobachtbar) und Observer (Beobachter) umsetzt. Sie ermöglicht die Verarbeitung asynchroner Datenströme und Ereignisse mit Hilfe von komponierbaren Operatoren. Im Gegensatz zu traditionellen Callbacks oder Future/Promise bietet RxJava einen leistungsstarken Satz von Werkzeugen zur Transformation, Filterung und Kombination von Datenströmen. Dies macht den Code lesbarer, vorhersagbarer und weniger anfällig für Fehler im Zusammenhang mit Multithreading.

Warum wird RxJava benötigt? In der modernen Java-Entwicklung (insbesondere Android, serverseitige Anwendungen mit Spring WebFlux, Microservices) treten ständig Aufgaben im Zusammenhang mit Asynchronität auf: Laden von Daten aus dem Netzwerk, Datenbankoperationen, Verarbeitung von Benutzerereignissen. RxJava löst diese Aufgaben, indem es eine einheitliche API für die Arbeit mit allen Arten von asynchronen Sequenzen bereitstellt. Es vermeidet die "Callback-Hölle", vereinfacht die Fehlerbehandlung in asynchronen Ketten und bietet leistungsstarke Werkzeuge zur Thread-Steuerung (Schedulers).

Die Hauptvorteile von RxJava: Deklarativität (Sie beschreiben, was getan werden soll, nicht wie), Komponierbarkeit (Operatoren lassen sich leicht kombinieren), Unterstützung von Backpressure zur Steuerung der Datenverbrauchsrate und ein reichhaltiges Ökosystem (RxAndroid, RxJava2Extensions, RxRelay). Die Bibliothek wird aktiv gepflegt und in der Industrie weit verbreitet eingesetzt, insbesondere in der Android-Entwicklung (Retrofit + RxJava, Room + RxJava).

2. Installation

RxJava wird über Maven Central verbreitet. Fügen Sie die Abhängigkeit zu Ihrer build.gradle-Datei (für Gradle) oder pom.xml (für Maven) hinzu, um die Bibliothek in Ihr Projekt einzubinden.

Gradle (Android / Java-Projekt)

dependencies {
    implementation 'io.reactivex.rxjava3:rxjava:3.1.8'
}

Maven

<dependency>
    <groupId>io.reactivex.rxjava3</groupId>
    <artifactId>rxjava</artifactId>
    <version>3.1.8</version>
</dependency>

Für Android-Projekte wird oft auch RxAndroid für die Arbeit mit dem Hauptthread hinzugefügt:

implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'

3. Schnellstart – Minimales funktionsfähiges Beispiel

Erstellen wir einen einfachen Observable, der die Strings "Hallo" und "Welt" ausgibt, und abonnieren ihn:

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;

public class RxJavaQuickStart {
    public static void main(String[] args) {
        // Observable erstellen, der zwei Elemente ausgibt
        Observable<String> observable = Observable.just("Hallo", "Welt");

        // Observer erstellen
        Observer<String> observer = new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                System.out.println("Abonnement eingerichtet");
            }

            @Override
            public void onNext(String s) {
                System.out.println("Empfangen: " + s);
            }

            @Override
            public void onError(Throwable e) {
                System.err.println("Fehler: " + e.getMessage());
            }

            @Override
            public void onComplete() {
                System.out.println("Stream abgeschlossen");
            }
        };

        // Abonnieren
        observable.subscribe(observer);
    }
}

Ausgabe:

Abonnement eingerichtet
Empfangen: Hallo
Empfangen: Welt
Stream abgeschlossen

4. Wichtige Methoden/Klassen

4.1 Observable.just()

Signatur: public

Empfehlungen