Blog
Rumbo a Java 11
Desde el punto de vista de negocio, muchas veces se descuida la elección de tecnologías, ya que suele ser competencia exclusiva de IT. Nada más lejos de la realidad, la tecnología que escojamos para nuestros desarrollos tiene un impacto directo en los resultados. ¿Cómo de rápido podemos desarrollar nuevas features? ¿Hay perfiles disponibles en el mercado? ¿Qué coste tienen esos perfiles? Estas y otras preguntas son las que deberemos responder en las conversaciones entre IT y negocio para que la tecnología sea un apoyo y no un escollo que vencer.
En el caso de Java, es el lenguaje más utilizado en aplicaciones corporativas, casi un estándar de facto. Hay multitud de perfiles, con distintos niveles de dominio, está muy consolidado y hay una gran comunidad que desarrolla librerías y frameworks.
¿Por qué migrar?
Los avances en tecnología son cada vez más rápidos. El modelo que se venía utilizando hasta ahora por el que se liberaba una nueva versión de Java cada varios años con bastantes cambios grandes, no podía competir con ese avance vertiginoso.
Oracle, ha querido responder a las necesidades de los usuarios de Java incorporando nuevas funcionalidades cada menos tiempo. Para ello, liberará nuevas versiones cada seis meses y cada tres años una con soporte a largo plazo (LTS). Java 11 sustituye a Java 8 como LTS. Esto supone que toda versión anterior queda fuera de ese soporte, actualizaciones de seguridad o parches en general.Especialmente interesante es la tasa de adopción de las nuevas versiones de Java. Si nos fijamos en una encuesta realizada por Baeldung, podemos observar que casi un 85% de los proyectos desarrollados en Java utilizan la versión 8. Como ya hemos dicho, esa versión quedará sin soporte en cuanto la versión 11 sea liberada. Esto está justificado precisamente por ser la versión que cuenta con soporte. Por lo tanto, nos centraremos en los cambios entre estas dos versiones.
Fuente: https://www.baeldung.com
¿Qué me aporta?
Además del soporte, Java 11 nos aporta bastante cambios respecto a Java 8, algunos presentes en las versiones 9 y 10 intermedias. Las principales, a nivel de máquina virtual son:
- Es la siguiente versión que cuenta con soporte extendido (LTS).
- Soporte completo para contenedores (incluído Docker).
- Mejoras en el comportamiento de garbage collectors y nuevos modos de funcionamiento.
- Mejoras en el uso y gestión de memoria.
- Optimización de herramientas de profiling para optimización de código.
- Nuevo compilador.
- Soporte para estándar de seguridad TLS 1.3.
- JShell y soporte para scripts.
¿Y cómo migramos?
Todos los ejemplos que encontramos por Internet son con aplicaciones bastante sencillas, pero todos tienen un denominador común. Lo primero que haremos será ejecutar nuestro código en la nueva versión solucionando las incompatibilidades. Después pasaremos a compilar el código de forma nativa a la nueva versión. Por último, empezaremos a usar el nuevo sistema de módulos.
A nivel de código incluye ventajas para agilizar los desarrollos. Por ejemplo, han incorporado nuevos métodos para trabajar con las librerías nativas de Java y facilitar ciertas operaciones u optimizar cómo funcionaban. También incluyen de forma nativa nuevos estándares de conexión o acceso a nuevos paradigmas, como programación reactiva y asincronía de forma nativa.
¿Pero a qué precio?
Como no todo pueden ser cosas buenas, esta migración tiene un coste. El uso de Java suele ir de la mano de frameworks y no todos están preparados para soportar algunos de los cambios previstos. Digamos por ejemplo Spring, uno de los más utilizados. En el caso de Spring, si queremos utilizar Java 11, la primera versión en soportarlo es Spring 5.1. y si hablamos de SpringBoot, la 2.1.
A los cambios que tengamos que realizar en nuestro código deberemos añadir los derivados de uso y configuración del framework o librerías que utilicemos y que tendremos que actualizar.
Conclusiones
Puede parecer que es un cambio sencillo, pero os garantizo que requiere un esfuerzo. ¿Merece la pena? Creemos que sí, por los beneficios que hemos comentado y sobre todo, porque Oracle no va a dar marcha atrás en su ritmo de actualización, y si no nos subimos al carro ahora nos quedaremos atrás, anclados en versiones obsoletas, tratando de avanzar mientras nuestros competidores nos adelantan. Y por supuesto, tampoco seremos atractivos para nuestros equipos.