RxJava - Panoramica
RxJava è un'estensione basata su Java di ReactiveX. Fornisce l'implementazione o il progetto ReactiveX in Java. Di seguito sono riportate le caratteristiche chiave di RxJava.
Estende il pattern dell'osservatore.
Supporta sequenze di dati / eventi.
Fornisce operatori per comporre sequenze insieme in modo dichiarativo.
Gestisce internamente il threading, la sincronizzazione, la sicurezza dei thread e le strutture dati concorrenti.
Cos'è ReactiveX?
ReactiveX è un progetto che mira a fornire un concetto di programmazione reattiva a vari linguaggi di programmazione. La programmazione reattiva si riferisce allo scenario in cui il programma reagisce quando e quando vengono visualizzati i dati. È un concetto di programmazione basato su eventi e gli eventi possono propagarsi agli osservatori dei registri.
Secondo il Reactive, hanno combinato il meglio del pattern Observer, del pattern Iterator e del pattern funzionale.
Il modello Observer è stato eseguito correttamente. ReactiveX è una combinazione delle migliori idee del pattern Observer, del pattern Iterator e della programmazione funzionale.
Programmazione funzionale
La programmazione funzionale ruota attorno alla creazione del software utilizzando funzioni pure. Una funzione pura non dipende dallo stato precedente e restituisce sempre lo stesso risultato per gli stessi parametri passati. Pure functions aiuta ad evitare problemi associati a oggetti condivisi, dati mutabili ed effetti collaterali spesso prevalenti negli ambienti multi-threading.
Programmazione reattiva
La programmazione reattiva si riferisce alla programmazione guidata dagli eventi in cui i flussi di dati arrivano in modo asincrono e vengono elaborati quando arrivano.
Programmazione funzionale reattiva
RxJava implementa entrambi i concetti insieme, in cui i dati dei flussi cambiano nel tempo e la funzione del consumatore reagisce di conseguenza.
Il Manifesto Reattivo
Reactive Manifesto è un documento in linea che afferma l'elevato standard dei sistemi software applicativi. Come da manifesto, di seguito sono riportati gli attributi chiave di un software reattivo:
Responsive - Dovrebbe sempre rispondere in modo tempestivo.
Message Driven - Utilizzare il passaggio di messaggi asincrono tra i componenti in modo che mantengano l'accoppiamento libero.
Elastic - Dovrebbe rimanere reattivo anche sotto carico elevato.
Resilient - Dovrebbe rimanere reattivo anche se uno o più componenti si guastano.
Componenti chiave di RxJava
RxJava ha due componenti chiave: Observables e Observer.
Observable - Rappresenta un oggetto simile a Stream che può emettere zero o più dati, può inviare messaggi di errore, la cui velocità può essere controllata durante l'emissione di un insieme di dati, può inviare dati sia finiti che infiniti.
Observer- Sottoscrive i dati di sequenza di Observable e reagisce per elemento degli osservabili. Gli osservatori vengono informati ogni volta che Observable emette un dato. Un Observer gestisce i dati uno per uno.
Un osservatore non viene mai avvisato se gli elementi non sono presenti o se non viene restituita una richiamata per un elemento precedente.