RxJava - Descripción general
RxJava es una extensión de ReactiveX basada en Java. Proporciona implementación o proyecto ReactiveX en Java. A continuación se presentan las características clave de RxJava.
Extiende el patrón del observador.
Soporta secuencias de datos / eventos.
Proporciona operadores para componer secuencias juntas de forma declarativa.
Maneja el subproceso, la sincronización, la seguridad de subprocesos y las estructuras de datos concurrentes internamente.
¿Qué es ReactiveX?
ReactiveX es un proyecto que tiene como objetivo proporcionar un concepto de programación reactiva a varios lenguajes de programación. La programación reactiva se refiere al escenario donde el programa reacciona cuando aparecen los datos. Es un concepto de programación basado en eventos y los eventos pueden propagarse a los observadores de registros.
Según el Reactive, han combinado lo mejor del patrón Observer, el patrón Iterator y el patrón funcional.
El patrón Observer bien hecho. ReactiveX es una combinación de las mejores ideas del patrón Observer, el patrón Iterator y la programación funcional.
Programación funcional
La programación funcional gira en torno a la construcción del software utilizando funciones puras. Una función pura no depende del estado anterior y siempre devuelve el mismo resultado para los mismos parámetros pasados. Las funciones puras ayudan a evitar problemas asociados con objetos compartidos, datos mutables y efectos secundarios que a menudo prevalecen en entornos de subprocesos múltiples.
Programación reactiva
La programación reactiva se refiere a la programación impulsada por eventos en la que los flujos de datos vienen de forma asincrónica y se procesan cuando llegan.
Programación funcional reactiva
RxJava implementa ambos conceptos juntos, donde los datos de los flujos cambian con el tiempo y la función del consumidor reacciona en consecuencia.
El Manifiesto Reactivo
Reactive Manifesto es un documento en línea que establece el alto nivel de los sistemas de software de aplicación. Según el manifiesto, los siguientes son los atributos clave de un software reactivo:
Responsive - Siempre debe responder de manera oportuna.
Message Driven - Debe utilizar el paso de mensajes asincrónico entre componentes para que mantengan un acoplamiento suelto.
Elastic - Debe seguir respondiendo incluso bajo una carga alta.
Resilient - Debe seguir respondiendo incluso si falla algún componente.
Componentes clave de RxJava
RxJava tiene dos componentes clave: Observables y Observer.
Observable - Representa un objeto similar a Stream que puede emitir cero o más datos, puede enviar mensaje de error, cuya velocidad se puede controlar mientras emite un conjunto de datos, puede enviar datos finitos e infinitos
Observer- Se suscribe a los datos de secuencia de Observable y reacciona por elemento de los observables. Se notifica a los observadores cada vez que Observable emite un dato. Un observador maneja los datos uno por uno.
Nunca se notifica a un observador si los elementos no están presentes o no se devuelve una devolución de llamada para un elemento anterior.