1. Programación Reactiva vs Sistemas Reactivos - giovany79/reactive GitHub Wiki

Que es la programación reactiva?

Primero que todo se debe hacer una diferenciación entre programación reactiva y sistemas reactivos

Sistemas Reactivos

El sistema reactivo es la foto completa de la solución, el rompecabezas completado. Es un estilo arquitectural que cumple conjunto de principios que permite a una aplicación reaccionar a cambios, ser escalable, recuperarse de las fallas. Para que un sistema sea considerado reactivo debe cumplir con el manifiesto reactivo.

Programación Reactiva

Programación reactiva es una pieza en el rompecabezas. Usar librerías reactivas o un estilo de programación reactiva no hace que la aplicación completa sea reactiva. Su principal objetivo es hacer un uso más eficiente de los recursos.

La programación reactiva está basada en la programación funcional ya que implementa el API Stream reactivo.

Depende de la libreria reactiva la cual es soportada a partir del JDK 9

Manifiesto Reactivo

El manifiesto reactivo establece un conjunto de patrones que deben cumplir las aplicaciones para ser consideradas reactivas:

  • Responsivos: El sistema responde a tiempo en la medida de lo posible
  • Resilientes: El sistema sigue respondiendo correctamente después de un fallo
  • Elásticos: El sistema se maniente responsivo independiente de la carga incrementando o reduciendo recursos
  • Orientado a mensajes: Se basan en el intercambio de mensajes asíncronos
  • Mantenible
  • Flexible

reactive manifesto

Manifesto Reactivo

Librerías Reactivas

  • RxJava: Es una implementación de la máquina virtual de Java de la extensión reactiva la cual es una librería para crear programas asíncronos y basado en eventos extendiendo el patrón observador. Actualmente está en la versión 3.X.

  • Reactor: Es una librería de cuarta generación para construir aplicaciones no bloqueantes en la JVM basado en la especificación Reactive Stream.

Frameworks Reactivos

  • Spring WebFlux: Framework contenido en la versión 5 de Spring para programación reactiva. Soporta Reactive Stream, backpressure y corre sobre servidores Netty, Undertow, y Servlet 3.1+ containers.

  • Akka: Es un framework para construir aplicaciones altamente concurrentes, resilientes basadas en mensaje para Java y Scala

  • Vert.x: Framework de eclipse para construir aplicaciones reactivas en la JVM. Soporta varios lenguajes como Java, Javascript, scala, Groovy, Ruby, Ceylon, Scala, Kotlin.

Referencias