RxJava - przegląd
RxJava to oparte na Javie rozszerzenie ReactiveX. Zapewnia implementację lub projekt ReactiveX w Javie. Poniżej przedstawiono kluczowe cechy RxJava.
Rozszerza wzorzec obserwatora.
Obsługa sekwencji danych / zdarzeń.
Zapewnia operatory do składania sekwencji razem w sposób deklaratywny.
Wewnętrznie obsługuje wątki, synchronizację, bezpieczeństwo wątków i współbieżne struktury danych.
Co to jest ReactiveX?
ReactiveX to projekt, którego celem jest dostarczenie koncepcji programowania reaktywnego do różnych języków programowania. Programowanie reaktywne odnosi się do scenariusza, w którym program reaguje, gdy pojawiają się dane. Jest to koncepcja programowania oparta na zdarzeniach i zdarzenia mogą być propagowane do rejestrów obserwatorów.
Zgodnie z Reactive, połączyli najlepsze wzorce obserwatorów, wzorce iteratorów i wzorce funkcjonalne.
Wzorzec Observer wykonany prawidłowo. ReactiveX to połączenie najlepszych pomysłów ze wzorca Observer, wzorca Iterator i programowania funkcjonalnego.
Programowanie funkcjonalne
Programowanie funkcjonalne polega na budowaniu oprogramowania przy użyciu czystych funkcji. Czysta funkcja nie zależy od poprzedniego stanu i zawsze zwraca ten sam wynik dla tych samych przekazanych parametrów. Czyste funkcje pomagają uniknąć problemów związanych ze współdzielonymi obiektami, zmiennymi danymi i efektami ubocznymi często występującymi w środowiskach wielowątkowych.
Programowanie reaktywne
Programowanie reaktywne odnosi się do programowania sterowanego zdarzeniami, w którym strumienie danych przychodzą w sposób asynchroniczny i są przetwarzane w momencie nadejścia.
Funkcjonalne programowanie reaktywne
RxJava realizuje obie koncepcje razem, gdzie dane strumieni zmieniają się w czasie, a funkcja konsumenta odpowiednio reaguje.
Manifest reaktywny
Reactive Manifesto to dokument on-line potwierdzający wysoki standard systemów oprogramowania użytkowego. Zgodnie z manifestem, poniżej przedstawiono kluczowe atrybuty oprogramowania reaktywnego -
Responsive - Powinien zawsze reagować w odpowiednim czasie.
Message Driven - Powinny używać asynchronicznego przesyłania komunikatów między komponentami, aby zachować luźne sprzężenie.
Elastic - Powinien pozostawać responsywny nawet przy dużym obciążeniu.
Resilient - Powinien pozostawać responsywny nawet w przypadku awarii któregokolwiek komponentu.
Kluczowe komponenty RxJava
RxJava ma dwa kluczowe komponenty: Observables i Observer.
Observable - Reprezentuje obiekt podobny do Stream, który może wyemitować zero lub więcej danych, może wysłać komunikat o błędzie, którego prędkość można kontrolować podczas emisji zestawu danych, może wysyłać zarówno skończone, jak i nieskończone dane.
Observer- Subskrybuje dane sekwencji Observable i reaguje na pozycję obserwabli. Obserwatorzy są powiadamiani za każdym razem, gdy Observable emituje dane. Obserwator obsługuje dane jeden po drugim.
Obserwator nigdy nie jest powiadamiany, jeśli elementy nie są obecne lub nie jest zwracane wywołanie zwrotne dla poprzedniego elementu.