featured image

Dejer de ser fanboy de Java hace mucho tiempo por diferentes motivos pero aún así he ido siguiendo de cerca los progresos y tras un par de años de desconexión total encuentro un artículo anunciando algo extraño con la licencia de Java 11. ¿Sabes de qué va la noticia?

En principio en la frase me chocó mucho el número. Cuando yo comencé a programar recuerdo la salida de Java 5 en 2004 como un gran evento por introducir simplemente sprintf para formatear números dentro de cadenas de texto. No es solo la única ventaja que aportaba Java 5 pero sí había que tener en cuenta que llegaba algo más de dos años después de la versión anterior y 9 años después de la primera versión.

En la entrada acerca de lo que nos traería Java 7 en 2011 hablaba de una versión que había sido lanzada después de 5 años de Java 6. Es decir, entre una versión y otra de Java ha habido una gran cantidad de tiempo dedicada a estabilizar la versión en curso y preparar nuevas mejoras. Muchas de ellas para construir nuevas versiones que aparecerían años más tarde.

La versión 8 de Java llegó en marzo de 2014, unos 3 años después de la versión anterior y tras ciertas noticias sobre si Oracle estaba rompiendo Java parece que dentro de Oracle quisieron responder y realizaron una serie de cambios.

En septiembre de 2017 y aprovechando la salida de la versión 9 de Java aprovecharon para agregar en el comunicado de lanzamiento una nota de cambio de política y ciclos de lanzamientos cada 6 meses (como Ubuntu). Las liberaciones han ido cumpliendo el calendario y vimos el lanzamiento de Java 10 en marzo de 2018 y recientemente el lanzamiento de Java 11 en septiembre de 2018. También se ha planificado la liberación de Java 12 para el siguiente marzo de 2019 según la página del historial de versiones de Java en Wikipedia.

Pero además este último lanzamiento viene con polémica extra. Ciertos blogs ha hecho correr como la pólvora que para poder usar Java 11 y siguientes versiones habrá que pagar de una forma muy alarmista en sus títulos pero explicando mejor el porqué habrá que pagar. El blog de JetBrains lo explica muy bien. Podemos leer que es cierto el cambio de política de Oracle con respecto al mantenimiento pero no con respecto a tener que pagar para usar Java en realidad.

Lo que podemos leer en el blog de JetBrains es la división de Java en dos plataformas diferentes:

  • Oracle’s JDK (comercial): esta versión es gratuita para desarrollo y pruebas pero hay que pagar para poder usarla en producción.
  • Oracle’s OpenJDK (abierta y gratuita): esta versión sigue siendo la de siempre, abierta y gratuita y no requiere de ningún pago.

A día de hoy ambas versiones en Java 11 son idénticas. La única diferencia de momento está en el soporte. Cuando Java 12 salga a la luz solo recibirán actualizaciones y soporte las versiones Oracle’s JDK 11 que hayan pagado mientras que las versiones abiertas deberán actualizar a la nueva versión para poder recibir actualizaciones de seguridad.

Mientras que esta política bien se adecua a la ideología de liberación continua e integración continua donde será más fácil realizar cambios en nuestros proyectos para adecuarlos a la nueva versión de Java porque se producen en menor grado y de forma más frecuente también es cierto que estos cambios no repercuten en una mejora de valor de las aplicaciones mantenidas y solo consiste en un gasto recurrente en infraestructura para adecuar los proyectos a la última versión en ejecución de Java.

Mientras hay quienes se llevan las manos a la cabeza por la cantidad de horas que probablemente haya que invertir tan solo en cambiar la versión, compilar y cruzar los dedos para que no salgan muchos problemas. Hay otros que pueden ver este cambio como una forma más de hacer negocio y vender un soporte de mantenimiento de adaptabilidad a sus clientes para mantenerlos dentro de la zona segura.

Obivamente también existe la opción de sopesar comprar la licencia de Oracle y evitar realizar estas actualizaciones de forma obligatoria.

¿Qué te parece a ti el cambio de Oracle con respecto a Java? ¿Crees que potenciará su actividad y mejoras? ¿Es solo una estrategia comercial para intentar llevarse un poco más de dinero? ¿Crees que afecta mucho a quienes usan JVM pero no Java directamente (como Scala, Groovy, JRuby, Jython, …)? ¡Déjanos tu comentario!