Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=56ffe4d6-b89d-4077-aa57-3424d209c051

Java 11 ya está aquí: te toca pagar a Oracle o cambiarte a otras opciones

Hace justo un año Oracle lanzaba la esperadísima versión 9 de Java. Era la primera gran versión de la plataforma desde Java 8, aparecido más de cuatro años antes, en marzo de 2014. Lo cierto es que traía bastantes novedades, pero a pesar de ello muchas empresas todavía siguen usando Java 8 en sus desarrollos. Y es que el mundo Java tiende a moverse lento porque se utiliza sobre todo para aplicaciones de gestión y de backend en donde se prima la estabilidad por encima de todo.

El año pasado, con Java 9, Oracle se comprometió a lanzar una nueva versión de Java cada 6 meses, y de momento lo está cumpliendo aún a costa de que las nuevas versiones no traigan grandes novedades. En marzo de este año salió Java 10, sin apenas nada reseñable y que pasó sin pena ni gloria. Ahora lanzan Java 11. En esta ocasión, sin embargo, sí que viene con algo muy importante que deberíamos tener en cuenta si vamos a desarrollar: el cambio de licencia y el soporte a largo plazo asegurado para el JDK.

Cambios radicales: Kits de desarrollo de Java, licencias y precios

Un Kit de desarrollo de software (SDK) de Java es lo que nos permite desarrollar con la plataforma Java. Incluye una implementación concreta del estándar de la plataforma, así como herramientas y compiladores. Oracle ofrece uno oficial llamado JDK. Aparte del de Oracle existen otros, siendo el más conocido el OpenJDK, la versión open source del kit de desarrollo, apoyada principalmente por la propia Oracle.

El JDK 11 inicia una nueva era en la licencia de uso. Hasta ahora podías descargar y programar con el Kit de Desarrollo de Java oficial de Oracle y luego poner tu aplicación en producción o distribuirla sin tener que pagar nada al gigante del software. Sin embargo, a partir de Java 11 y del JDK 11, aunque puedes seguir desarrollando con él, tendrás que pagar una licencia a Oracle si quieres utilizarlo para poner las aplicaciones en producción. El coste es de 2,5 dólares al mes por cada usuario de escritorio, y de 25 dólares por procesador en el caso de aplicaciones de servidor. Aquí tienes la lista de precios oficial.

Actualización de febrero de 2023: en esta fecha Oracle anunció un nuevo modelo de licenciamiento que cobra por número de empleados en la empresa, no por usuarios o por procesadores. Quitan esa diferencia que te recomiendo que leas, las recomendaciones de más abajo en este artículo siguen siendo válidas.

Esto no afecta a versiones anteriores del JDK, por lo que si usas Java 8, 9 o 10 sigue siendo gratuito.

Además de la nueva licencia y el coste asociado, existe otra novedad: desde Java 9 Oracle se ha comprometido a sacar una nueva versión "mayor" de Java (y del JDK) cada 6 meses, con dos actualizaciones garantizadas entre ellas: una al mes del lanzamiento (la x.0.1) y otra al cabo de tres meses (la x.0.2). Después tendrás que actualizarte a la versión "mayor" siguiente, que sale a los 6 meses. Esto es un problema para muchas organizaciones puesto que un cambio de versión muchas veces supone problemas e inestabilidad. Es por eso que una gran mayoría de empresas sigue todavía con Java 8 a pesar de las nuevas versiones que han aparecido.

Bien, pues Java 11 es la primera versión de Java con un JDK denominado LTS o Long Term Support. Esto significa que Oracle garantiza que te dará soporte y actualizaciones para la versión durante 3 años, en lugar de tan solo 6 meses. Eso sí, a cambio de un "módico" precio (¿sabes cómo se lee "Oracle" del revés? Pues eso...).

Esto es muy interesante para las grandes empresas, porque se aseguran que tienen soporte y actualizaciones del JDK oficial durante bastante tiempo (aunque seguramente menos de lo que les gustaría), y no les importa pagar a Oracle por el privilegio del soporte y de las licencias de uso. Pero es un grave problema para los desarrolladores individuales y las empresas pequeñas.

 

¿Qué opciones tenemos?

Que no cunda el pánico. No es necesario que te quedes con el JDK 8 o 9 para no tener que pagar licencia, perdiéndote además las novedades que surjan en la plataforma. Además, es importante seguir avanzando...

Hasta hace poco, el OpenJDK era el patito feo de los SDKs de Java. El JDK oficial tenía más cosas, era más estable y además gratuito, por lo que el JDK siempre ha sido la opción por defecto para programar con Java

Sin embargo, sabiendo los cambios de licencias que estaban preparando, Oracle ha trabajado muy duro para hacer que el OpenJDK se haya equiparado en todos los aspectos al JDK, hasta el punto de que se puede decir que el OpenJDK y el JDK son idénticos desde un punto de vista técnico, desde la versión 11.

Debido a ello, ahora el OpenJDK debería ser tu opción por defecto para programar en Java.

¿Cuál es la pega entonces? Nos pasamos al OpenJDK y punto ¿no?

Dos problemas... y sus soluciones

Fundamentalmente el uso del OpenJDK implica que tienes que lidiar con dos posibles problemas: las actualizaciones y el soporte.

En teoría, el OpenJDK seguirá la cadencia de lanzamientos que describíamos antes: una versión grande cada 6 meses con dos intermedias programadas. Si quieres soporte a más largo plazo, en teoría, no lo obtendrás y tendrás que ir subiendo de versión.

En cuanto al soporte tienes dos opciones:

  1. Tratar de que te ayude, gratis, la comunidad del OpenJDK
  2. Pagarle a alguien para que te dé soporte comercial (aunque Oracle no es la única opción (tienes a IBM o a Redhat que también lo dan), sí es la fuente y la que la mayor parte de las empresas usarán)

Esto puede ser un problema para algunas empresas, sobre todo si buscan estabilidad, y es a lo que juega Oracle con su JDK: ¿quieres soporte y actualizaciones a largo plazo? Pues paga.

Por suerte, siempre suele haber solución para casi todo.

En primer lugar, la comunidad de OpenJDK está hablando de que habrá al menos actualizaciones públicas de cada versión durante 4 años (más incluso que el LTS del JDK). Lo malo es que eso incluye tan solo el código fuente, y si queremos el producto final (clases base, herramientas, compiladores...) tendríamos que compilarlo nosotros mismos, lo cual no siempre es fácil, y mucho menos directo. Por suerte existe una comunidad dentro de OpenJDK llamada AdoptOpenJDK cuyo objetivo es precisamente facilitar el uso de este proporcionando versiones compiladas del OpenJDK para descarga y usos directos. A través de este proyecto podemos descargar cualquier versión del OpenJDK compilado para su uso en múltiples sistemas operativos. ¡Genial!

En cuanto al soporte... eso es harina de otro costal. O pagamos por él o tendremos que confiar en la comunidad. Por suerte es una comunidad grande y fuerte, y con los cambios de licencia de Java 11 aún lo será más, así que no deberíamos tener problema. Por otro lado, Stackoverflow es tu mejor amigo, ya sabes...

En resumen

Con Java 11 se inaugura una nueva era en la plataforma Java. Ahora el JDK ya no es gratuito y deberás pagar una licencia mensual por usuario o por procesador si quieres usarlo en producción. Además, el soporte técnico también es de pago y si lo quieres a largo plazo (3 años). Java 11 de hecho es la primera versión LTS (soporte a largo plazo) oficial de la plataforma Java.

Esto no significa que Java deje de ser gratuito, ni es una gran tragedia para la plataforma tampoco. Para la mayoría de desarrolladores y empresas no habrá una gran diferencia. El desarrollo se trasladará a OpenJDK (que ahora es equiparable al JDK) en lugar de al tradicional JDK de Oracle, y el soporte se obtendrá de la comunidad. Para ciertas grandes empresas y administraciones, el hecho de pagar no les importará y de hecho será una ventaja porque tendrán garantizada la estabilidad y el soporte directo de Oracle durante unos años.

Aún así Java sigue y seguirá siendo el lenguaje más popular del mundo, y el que más puestos de trabajo genera, así que merece la pena aprenderlo bien.

¡Ya estás tardando en actualizar tus herramientas de desarrollo Java y el SDK subyacente para usar OpenJDK!

¡Ah!, y por cierto, si te preguntas qué novedades hay de verdad en la plataforma... quitando la palabra clave var (copiada descaradamente de C#), el nuevo recolector de basura y el "Flight Recorder" el framework para recopilar datos para diagnosticar aplicaciones, poco hay que contar...

Referencias

Fecha de publicación:
José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Lenguajes y plataformas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (11) -

José Manuel Alarcón
José Manuel Alarcón

Sin duda una gran opción (le predicas a un converso: lo mío es .NET), pero si ya programas en Java es más fácil simplemente usar el OpenJDK.

Responder

Carlos Guzmán
Carlos Guzmán

Es una locura lo que quiere hace Java, pero bueno ellos son los que mandan sobre este lenguaje, igual trabajar con OpenJDK lo venimos haciendo los que trabajamos con Linux desde hace rato, vamos a ver como resulta...

Responder

Denilson Roquel
Denilson Roquel

Como usuario de linux, yo siempre he usado jdk.
Por lo menos es lo que en la universidad recomiendan.

Responder

Open JDK ya lleva mucho tiempo siendo muy maduro, por eso no entendi el "hasta el punto de que se puede decir que el OpenJDK y el JDK son idénticos desde un punto de vista técnico, desde la versión 11". Respecto a la palabra var para type inference, realmente no es exclusiva de C#, la usa Kotlin, Scala... etc, etc. Atribuir a que fue una copia descarada de C# me parecio algo ignorante.

Respecto a los features, realmente te son muchos y muy buenos, fijarse solo en var (que tampoco es un features de Java 11, sino de Java 10) o en el garbage collector tambien me parece profunda ignorancia.

Ej. Ahora Java funciona tambien como un motor de scripting, ahora puedes ejecutar un .java como si se tratase de un script Ruby, Python o Node. Y no me refiero a JShell, me refiero a "java myScript.java".

Responder

José Viera
José Viera

Pregunta, es necesario ofender? "profunda ignorancia"

Si no te gusta puedes escribir tus propios post en tu propio blog, es muy fácil criticar pero lo importante aquí es aportar.

Responder

Hay ciertas barbaridades que deberías aclarar.
Openjdk no lo gestiona Oracle, afortunadamente.
Las librerías de openjdk son mejores y más estables desde java6, es decir, desde q los programadores de verdad se cansaron de la basura de Sun/Oracle.
Openjdk tiene actualizaciones y hay foros y comunidades que resuelven los problemas antes que Oracle
Te reto a q me demuestres q abres una incidencia a Oracle respecto de Java y que te los resuelven. Eso se acabó con Sun.
Nadie usa Oracle jdk a nivel profesional. Ningún proyecto de fundación apache hacen su uso
Java está muriendo según los planes de Oracle q no le interesa y no sabe cómo sacar dinero.

Java 8 es la última cosa razonable en la que murió Java. Ahora a lo que venga.

Responder

Como dices semejante barbaridad todos los desarrollos que hace oracle  usan java por default  asi que oracle va seguir manteniendo java  por mucho tiempo

Responder

Oye gracias, muy buen contenido e investigación del tema.
Excelente!

Responder

Yo pienso que si bien Java seguirá siendo fuerte, ya se viene la decadencia. Algunas empresas se plantearan seriamente si empezar nuevos desarrollos en Java. Google acaba de quitar millones de dispositivos de la prioridad de Java, pues ha hecho de Kotlin el lenguaje de desarrollo oficial de Android, sin duda en parte esto causado por los problemas de Oracle. Claro Kotlin compila a Javabytecode , y Google sigue usando un tipo de máquina virtual, pero aún así se ve que van alejándose de Java.

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Roberto:

Kotlin no es EL lenguaje de desarrollo oficial de Android, sino UN lenguaje de desarrollo oficial de Android. La preposicón cambia mucho el significado. Y Kotlin es un lenguaje compatible con Java que de hecho por debajo utiliza las clases de Java (depende de sus bibliotecas de clases, y en el caso de Android de las mismas clases base del sistema), por lo que por debajo lo que sigue habiendo es Java. Kotlin simplemente te facilita mucho la vida porque tiene una sintaxis mucho más sencilla.

Lo del cobro por el JDK que menciona el post ha sido una revolución, pero como comento también en él, el impacto tampoco va a ser tan grande gracias a que ahora el OpenJDK está a la par con el JDK oficial de Oracle. Sólo afectará a empresas grandes que queiran usar el JDK y su soporte, pero a todos los demás, salvo cambiar al OpenJDK, no les afectará lo más mínimo.

Dudo que la demanda de programadores de Java vaya a caer en el futuro cercano. Y dudo que ninguna empresa quiera a alguien que solo programe en Kotlin pero non sepa nada de Java (pero esto es una opinión personal, claro está).

Saludos.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.