Me quedé en Java 8 ¿Que hago?. Capitulo 1: La licencia de Java

Una sugerencia que recibí via Instagram fue discutir acerca de como «montarse nuevamente en el caballo», específicamente el caballo de Java. La razón es relativamente simple, Java 8 fue un divisor de aguas en el ecosistema de Java dada la introducción de programación funcional, mejoras al lenguaje y la relativa velocidad luego de que Oracle tomara el liderazgo en el desarrollo de Java.

Siendo así, me gustaría compartirles mi visión de los 10 puntos más importantes que han pasado desde entonces en Java y sobre todo ¿Como puedo actualizarme siendo un desarrollador Java si ya me quedé atras?. Lo dividiere en 10 capitulos para que cada capítulo sea lo suficientemente informativo pero al mismo tiempo no sea tedioso.


Se que esto también se lo pueden preguntar a Deepseek pero a veces hace falta el calor humano en esta información.

Capitulo 1: La licencia de Java

TL;DR: El modelo de licenciamiento cambió tres veces, pero Java sigue siendo gratis de usar si así gustas

Entendamos primero que la plataforma Java son tres cosas:

  1. El lenguaje de programación Java
  2. Las bibliotecas estándar de Java -e.g. Swing, AWT, NIO-
  3. La máquina virtual de Java

Antes de su liberación, la plataforma Java de Sun Microsystems era gratis para utilizar en producción pero no era software libre, es decir las empresas, universidades y usuarios no podían contribuir a su desarrollo tal y como lo harian con el Kernel linux (Sun tenia su propio proceso) y las empresas que así lo consideraran oportuno podían pagar soporte comercial.

No entanto, existian comunidades y empresas creando su propia JVM y su propio classpath para ejecutar programas escritos en Java. Para usar el nombre Java era necesario pagarle una licencia a Sun a excepción de proyectos libres. Siendo así, existian dos grandes familias:

  1. Los Java propietarios (creados y mantenidos por fabricantes bajo sus propios procesos): Como Sun HotSpot, IBM J9, Excelsior Jet
  2. Los Java Libres (creados como una implementación de software libre): Donde destacaron proyectos como GNU Classpath y Apache Harmony

En este punto de la historia aunque teniamos Java libres, para fines prácticos el código que funcionaba en Java propietario, no siempre funcionaba en Java libre. Esta YA NO ES LA SITUACIÓN ACTUAL, todo cambió en 2007.

Momento clave 1: Java libre

El 08 de mayo de 2007 Sun Microsystems liberó Java bajo la licencia GPL, es decir Java se convertía en un proyecto desarrollado como software libre y continua así hasta la fecha. A partir de acá, el modelo de desarrollo de Java por parte de Sun (y posteriormente Oracle) cambió, lo que hizo que floreciera el concepto de distribuciones de Java en dos niveles:

Un listado medianamente completo de distribuciones Java está disponible en el blog de Bellsoft.

A excepción de cosas muy especificas, un programa escrito para/con el Java de Oracle al día de hoy se ejecutara bien en OpenJDK y viceversa, un programa escrito para/con OpenJDK se ejecutará bien en Oracle HotSpot. La elección de la maquina virtual de Java al día de hoy tiene más relación con el costo de soporte, proveedor preferido y software que exija el uso de una u otra JVM en particular.

Momento clave 2: Oracle HotSpot (El Java de Oracle) deja de ser gratuito para su uso en producción

Como bien se resalta en los sitios oficiales de Oracle:

A partir de abril de 2019 la licencia de Oracle HotSpot cambió hacia la licencia Oracle Technology Network, y a partir de ese punto (hasta el siguiente cambio), el Java de Oracle solo es gratuito para los siguientes usos:

  • Uso personal
  • Uso en desarrollo
  • Un uso aprobado por Oracle
  • Uso en Oracle Cloud Infrastructure

Este cambio en la licencia aplica entonces a versiones de Java 8 superiores a java 1.8.202 (enero 2018), Java 11 y 17. Si se desea utilizarlo en producción es necesaria una suscripción Universal de Java SE.

Dicho esto, esta licencia solo aplica a la compilación de Oracle, especificamente Oracle HotSpot. Otras distribuciones del Java de Oracle son consideradas libres y de uso gratuito si así lo decide «el fabricante».

Momento clave 3: Se aceleran los ciclos de lanzamiento de Java

Aunque estrictamente hablando esto no tiene que ver con la licencia, si es un dato importante.

A partir de Java 9 tenemos versiones de Java cada 6 meses, es decir OpenJDK (el proyecto libre) cierra y lanza una versión nueva cada 6 meses. Lo cual tiene sentido para tener nuevas características, pero no necesariamente sera lo mejor para cargas de trabajo en producción.

Entre estas versiones algunos fabricantes (Oracle) denomina a una versión como LTS, lo cual significa que le brindara soporte después de los 6 meses. Pueden consultar el calendario de Oracle en el sitio oficial.

No todos los fabricantes siguen el mismo calendario, por ejemplo este es el calendario de AWS Correto.

Momento clave 4: Oracle HotSpot (El Java de Oracle) vuelve a ser gratuito para su uso en producción … temporalmente

Como podrán imaginarse el cambio hacia la licencia OTN no ha sido del todo popular, entonces Oracle publicó una nueva licencia denominada No Fee Terms and Conditions que si permite el uso gratuito Oracle HotSpot en producción.

Sin embargo este uso gratuito es temporal y solo aplica para versiones lanzadas hasta un año despúes de la siguiente versión LTS. Y de ahi en adelante las versiones LTS que Oracle lance seran lanzadas bajo la licencia OTN. Esto se aclara con mayor detalle en el Oracle FAQ de licencias.

Por ejemplo para Java 17, su lanzamiento bajo NFTC finalizó en septiembre 2024, un año despues del lanzamiento de Java 21.
De nuevo, esta licencia aplica unicamente a Oracle HotSpot, otras distribuciones de Java cuentan con sus propios terminos y condiciones, así como calendarios.

Comentario adicional: ¿Es Oracle evil?

Con los años mi opinión acerca de Oracle ha cambiado.

Durante el tiempo que pasó todo esto, he visto a proyectos importantes dejar de ser software libre (en el estricto sentido de la Open Source Initiative), mencionaremos a Redis, Mongo DB, Elasticsearch, Terraform lo cual creó forks duros que no tienen colaboración.

En el casó de Oracle pasó todo lo contrario y al día de hoy un monton de empresas siguen contribuyendo a OpenJDK. Por ejemplo estas son las empresas que contribuyeron a Java 21.


Por mi, Oracle debe hacer tanto dinero con Java como le sea posible para seguir teniendo desarrollo, y en cierta forma es mejor a que Java deje de ser software libre. El «trato» es bastante simple, Oracle no nos obliga a usar su JVM fuera de sus productos y a cambio nos pide pagar la licencia si usamos su distribución. De la misma forma tampoco limita a otros el lanzar su propia distribución.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *