Spring 5 is coming!

springNewLogo_long.png

 

El pasado mes de julio, justo una semana antes del SpringOne Platform 2016, Juergen Hoeller anunciaba Spring Framework 5.0 milestone. Aún es pronto para sacar conclusiones, pues las milestone hacen referencia a versiones preliminares donde se van añadiendo nuevas features o corrigiendo errores de las ya existentes.

No obstante, con la quinta milestone publicada hace sólo unas semanas (23 de febrero, 2017) hay información más que suficiente para analizar lo que está por venir en este popular framework de desarrollo.

Java 8

Si bien es cierto que Java 8 es compatible con Spring desde la versión 4, esta no se usaba para el core de dicho framework con el objetivo de mantener la retrocompatibilidad con versiones anteriores. Con Spring 5, Java 8 pasa a ser requisito mínimo, lo que le permitrá exprimir todo su potencial.

De la mano de esta integración con Java 8, esta nueva versión se construye sobre JDK 9+, posicionándose de cara a las mejoras de concurrencia, el nuevo modelo de inyección de dependencias de Java (JSR-330) y las nuevas especificaciones que llegan con JEE8 (Servlet 4.0 y JMS 2.1).

Functional Programming

Desde el punto de vista de desarrollador, una de las principales novedades de Java 8 es, sin duda, la llegada de las expresiones lambdas, que nos abren la puerta a lo que conocemos como programación funcional o declarativa y que nos van a permitir llevar nuestro código un paso más allá en cuanto a precisión, legibilidad y mantenibilidad.

JUnit 5 (JUnit Lambda)

La nueva generación del framework para automatización de pruebas por excelencia, también se construye sobre Java 8 y fundamentalmente sobre las expresiones lambdas mencionadas anteriormente. De hecho, antes de conocerse como JUnit 5, el proyecto se denominó inicialmente JUnit Lambda.

Esta nueva generación introduce nuevas e interesantes formas de crear test rápidos como Test-Factories o Test-Extensions que impulsarán el principio D.R.Y (Don't repeat yourself!) dentro del contexto de nuestros tests.

Reactive Programming

La programación reactiva es un nuevo paradigma orientado a programar, basado en flujos de datos. Estos flujos son los encargados de transmitir los cambios a nuestra aplicación, desencadenando en una serie de eventos.

El concepto existe desde hace mucho, aunque en los últimos años, especialmente con el auge de las nuevas arquitecturas de microservicios, está cobrando especial importancia. Sin embargo, Java, al menos hasta su versión 9, no es un lenguaje que soporte la programación reactiva nativamente, lo que ha provocado la aparición de numerosos proyectos que proveen una capa reactiva a estas aplicaciones. Entre ellos, tal como se anunció en la primera milestone, tenemos a Spring Framework 5. 

Conclusiones

En resumen, parece que hay nuevas tendencias en el desarrollo de aplicaciones backend / java que pueden tener un papel muy importante en el futuro. Estamos acostumbrados a descubrir nuevos frameworks de JS constantemente y ahora parece que el mundo Java podría sufrir una revolución similar, con nuevas metodologías y paradigmas de programación.

Cada uno de los conceptos que hemos visto en este post (lambda, JUnit5, functional and reactive programming) merecen sin duda un post exclusivo para descubrir todo lo que pueden aportarnos en nuestros nuevos desarrollos.

En cuanto a Spring, establecer Java 8 como requisito mínimo puede suponer una barrera para la actualización de aquellas aplicaciones que actualmente usan Spring bajo el paraguas de una versión 7 o anterior de Java. Sin embargo, una vez analizadas las nuevas features, parece obvio pensar que es un cambio necesario.

Registrate al webinar

Referencias:

  1. Reactive Programming with Spring 5.0 M1 (link)
  2. New in Spring 5: Functional Web Framework(link)
  3. Spring Framework 5.0 M1 released (link)
  4. Spring Framework 5.0 M5 released (link)