5 Reasons to Love RxJava

Las extensiones reactivas (Rx) son un conjunto de métodos e interfaces que proporcionan una forma rápida, fácil de mantener y de entender para resolver los problemas de los desarrolladores de Java. Ha acertado, Rx es un conjunto de herramientas que le ayudan a escribir un código elegante y más sencillo.

En el caso de Java, añadir la librería Rx le permite orquestar múltiples acciones que suceden debido a ciertos eventos en el sistema. Además, le quita el dolor de usar callbacks y una horrible gestión de estado global.

Cuando sólo empiece a trabajar con RxJava, puede pensar que es muy difícil de entender y que este conjunto de nuevas herramientas no le ayudará mucho. Pero con el tiempo aprenderá las múltiples ventajas que ofrece RX:

Intuitividad – la descripción de acciones en Rx utiliza el mismo estilo que en la programación funcional, por ejemplo, Java Streams. Si se trata de Rx, le da la posibilidad de utilizar transformaciones funcionales sobre flujos de eventos.

Ampliabilidad – RxJava puede ser ampliado por operadores del usuario.

Declaratividad – las transformaciones funcionales se anuncian de forma declarativa.

Composibilidad – los operadores en RxJava se ensamblan fácilmente para realizar operaciones difíciles.

Convertibilidad – los operadores en RxJava pueden transformar tipos de datos filtrando, procesando y expandiendo flujos de datos.

Rx está construido sobre el patrón Observador. Los elementos clave son el Observador y el Suscriptor. Observable es la clase base. Esta clase contiene la parte principal de la implementación de Rx e incluye todos los operadores básicos.

Entonces, ¿por qué RxJava?

1. Flujos asíncronos

Pongamos un ejemplo:

Necesita enviar una solicitud a la base de datos y después de que se haya realizado tiene que empezar inmediatamente a recoger tanto los mensajes como los ajustes. Una vez completado el trabajo, necesita mostrar un mensaje de bienvenida.

Si queremos hacer lo mismo en Java SE y Android, tenemos que seguir los siguientes pasos:

  1. Ejecute 3-4 AsyncTasks diferentes
  2. Cree un semáforo que espere a que se completen ambas peticiones (ajustes y mensajes)
  3. Crear campos a nivel de objetos para almacenar los resultados

Podemos minimizar todas estas operaciones trabajando con RxJava. En este caso, el código parece un hilo que se encuentra en un lugar y se construye sobre la base de un paradigma funcional.

Alternativamente, podemos utilizar la vinculación opcional:

2. Enfoque funcional

Si está familiarizado con la programación funcional, como los conceptos de mapa y cremallera, trabajar con RxJava le resultará además mucho más fácil. Podemos decir que la programación funcional es el uso activo de funciones como parámetros y resultados en otras funciones. Por ejemplo, map es una función de orden superior, utilizada en muchos lenguajes de programación. Aplica esta función a cada elemento de la lista, devolviendo una lista de resultados. Así es como se ve:

3. El almacenamiento en caché es fácil

El siguiente fragmento de código utiliza el método de almacenamiento en caché de tal manera que sólo una copia guarda el resultado después de haber tenido éxito por primera vez.

4. Operadores con programadores

Hay una variedad de operadores que requieren denotar Programador para operar. Al mismo tiempo, tienen sus métodos sobrecargados que utilizan computation(), delay () como Scheduler Aquí está el ejemplo:

Podemos ver el siguiente resultado a pesar de que no indicamos ningún Scheduler.
A pesar de que no indicamos ningún Programador, el resultado será el siguiente

Si quiere evitar el uso del programador de cálculo, debe indicar los programadores necesarios como tercer argumento.

Además de delay(), hay muchos otros operadores que pueden modificar el programador: intervalo (), temporizador (), sobrecargas de buffer (), debounce (), skip (), take (), timeout (), etc.

5. Uso de los objetos

Trabajando con Objetos, debe tener en cuenta, que por defecto la secuencia de cambios en los datos, enviados al sujeto onNext se ejecutaría(implementaría) en el mismo hilo, que se utilizó para llamar al método onNext(), hasta que el operador observeOn() no apareciera en esta secuencia.

Aquí se mencionan tanto observeOn como subscribeOn, pero el resultado será el siguiente

Esto significa, que cuando nos suscribimos a subject devuelve el valor inmediatamente y luego se procesa en un hilo de Shedulers.io (). Y luego, cuando el siguiente mensaje llega a subject, utilizamos el hilo donde se llamó a onNext().

Conclusión

El uso de Rx nos ayuda a resolver los siguientes problemas:

  • Resolver el problema del almacenamiento en caché de forma sencilla (sin crear clases de almacenamiento en caché
  • Deshágase de la AsyncTask estándar, combine las peticiones y procese los resultados durante su recepción
  • La fuga de memoria se redujo en un 90%
  • Reducir la cantidad de líneas de código y aumentar la respuesta de una aplicación No es necesario escribir muchos AsyncTask diferentes, RxJava permite combinar métodos sin problemas.

Como puede ver, RxJava es una herramienta nueva y realmente afilada para trabajar con peticiones e hilos de red, para procesar las respuestas y para evitar las fugas de memoria.

Acerca de Redwerk

Desde 2005, Redwerk proporciona servicios de programación externalizados para un amplio espectro de industrias como el comercio electrónico, la automatización de negocios, la salud electrónica, los medios de comunicación y el entretenimiento, el gobierno electrónico, el desarrollo de juegos y, por supuesto, para las startups y la innovación. Nuestro dedicado equipo de desarrolladores offshore, con su abundante experiencia, siempre encuentra las mejores soluciones técnicas para proyectos de cualquier tamaño. Redwerk se dedica al desarrollo de aplicaciones iOS y Android personalizadas desde cero. Respetamos el tiempo de nuestros clientes, por lo que siempre cumplimos los plazos.