Menú de navegaciónMenú
Categorías

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

?id=cf602216-46da-4b6e-b113-c35cdeea0e24

Java - 15 años de dominio de Oracle: lo bueno, lo feo y lo malo

👆👆👆 Suscríbete a nuestro podcast. Y mejor aún, a nuestro boletín mensual: todo cosas útiles que no encontrarás en otro lado, una vez al mes.

Java es una de las piezas fundamentales de la tecnología moderna. Hoy en día esperamos que cualquier plataforma de desarrollo trabaje en cualquier sistema operativo, y lo damos por sentado, pero hace 30 años no era así. Y, por eso, en su momento, su famoso lema de "Write once, run everywhere" la hizo muy popular.

Hoy en día es una plataforma omnipresente. La encontrarás en todas partes: desde tu DNI electrónico y otras smartcards, hasta en Data Centers, y millones de programas que se ejecutan en tu ordenador y en móviles Android.

Pero hace justo 15 años se produjo algo que iba a cambiar por completo el futuro de la plataforma: Oracle compró a la empresa creadora de Java. Y las cosas nunca iban a ser iguales.

Hoy vamos a repasar qué ha pasado y qué implicaciones ha tenido y tendrá Oracle sobre Java.

Un poco de historia

Sun Microsystems era un "empresón" tecnológico de la época, con sus propios procesadores (Sparc) y otro hardware, su propio sistema operativo UNIX (Solaris), los dueños de VirtualBox... y hasta fueron los desarrolladores del sistema de archivos ZFS. Pero la joya de la corona de Sun era, sin duda, la plataforma de desarrollo más popular de la época y quizá de hoy en día: Java.

Oracle compró Sun Microsystems en abril de 2009 por 7.400 millones de dólares de la época (unos 10.800 millones de 2024). Este movimiento sorprendió a muchos en la industria tecnológica que vieron peligrar muchos de los productos de la empresa, ya que Oracle no tiene fama precisamente de tratar bien a sus adquisiciones. ¿Sería Oracle capaz de gestionar el legado tecnológico de Sun? ¿Y qué pasaría con Java, el lenguaje de programación multiplataforma que se había convertido en un estándar de facto?

Y Larry Ellison, el controvertido CEO de Oracle, lo tenía claro: habían comprado Sun por Java, y afirmó públicamente que Java era "el activo de software más importante que habían adquirido nunca".

Dos meses después de la adquisición, el ambiente en la conferencia JavaOne de 2009 era de una mezcla de emoción y preocupación. Los desarrolladores querían respuestas sobre el futuro de Java bajo el nuevo dueño Oracle. Ellison apareció en el escenario del evento JavaOne con Scott McNealy, presidente de Sun Microsystems. En su intervención McNealy, se hizo una pregunta retórica que estaba en la mente de todos los presentes: "esto de Oracle ¿es bueno para Java?", dejando la respuesta en el aire.

Aunque Sun tan solo ingresaba poco más de 200 millones al año por Java en 2008, Ellison tenía claro que Oracle iba a ingresar mucho más (de hecho, se estima que hoy en día les genera miles de millones, aunque no hay datos exactos). ¿Mantendrían su compromiso con la naturaleza open source de Java, que había sido liberado como código abierto tan solo 2 años antes? ¿Seguirían impulsando su desarrollo técnico? ¿O lo convertirían en un producto cerrado y estancado como ya había pasado antes con otras compras?

Al final veremos la respuesta a estas preguntas, que no son tan directas de contestar como parece...

Los primeros años turbulentos

Los primeros años de Java bajo la gestión de Oracle estuvieron llenos de conflictos y desafíos.

Uno de los eventos más significativos fue al año siguiente, cuando la fundación Apache se retiró oficialmente del Java Community Process (JCP), el proceso a través del cual se definen las especificaciones técnicas de la plataforma. Apache tenía varios desacuerdos con Oracle sobre cuestiones de licencia y control; en concreto citaban "un cambio inaceptable de las reglas del producto". Fue un movimiento muy simbólico que ponía en entredicho la apertura real del proceso JCP. Generó preocupaciones sobre la gobernanza de Java y la dirección que tomaría bajo Oracle.

Además, también hubo una demanda muy larga entre Oracle y Google por el uso de Java en la creación de Android. Oracle acusó a Google de infringir sus derechos de autor y patentes relacionadas con Java. Este litigio no solo acaparó titulares, sino que también creó incertidumbre en la comunidad de desarrolladores sobre el futuro de Java y su ecosistema.

Para muchos desarrolladores y empresas, Java estaba dejando de ser una plataforma verdaderamente abierta e independiente y ponía en peligro su futuro.

Las bondades de Oracle a los mandos de Java

A pesar de estos problemas, la plataforma Java comenzó a estabilizarse con el tiempo. Oracle se esforzó en mantener un flujo constante de mejoras y actualizaciones en las principales versiones de Java. Esta dedicación ayudó a restaurar la confianza en la comunidad de desarrolladores y a asegurar que Java siguiera siendo relevante y robusto para el desarrollo empresarial.

Para empezar, impulsó un ritmo constante de mejoras y nuevas funcionalidades a través de los principales lanzamientos de Java. Algo que contrastaba con la anterior imprevisibilidad, cuando se podían pasar entre 3 y 6 años sin actualizaciones relevantes.

Además, a partir de Java 11, Oracle estableció un ciclo predecible de lanzamientos cada 6 meses, con una nueva versión con soporte extendido cada 2 años, y parches de seguridad trimestrales. Aunque a mí una versión "major" cada 6 meses me parece una barbaridad, sí que es cierto que esto proporciona una predictibilidad que antes no existía, lo que permite prepararse y adaptarse con tiempo a las novedades.

Este cambio del proceso de lanzamiento de nuevas versiones vino acompañado por un cambio en las licencias del que te hablamos en su día y que, básicamente implica que si no eres una empresa grande dispuesta a pagar a Oracle, debes utilizar el OpenJDK en tus desarrollos si no quieres gastar dinero en licencias.

Desde el punto de vista técnico, Oracle introdujo con cada versión nuevas características de lenguaje, mejoras en el entorno de ejecución, mejoras de rendimiento en la máquina virtual y soporte para tecnologías emergentes como Docker.

También hay que reconocerles que siguieron impulsando el progreso de la plataforma y realizando los necesarios trabajos de mantenimiento y seguridad. Con Sun, había problemas de seguridad que llevaban años sin parchearse y Java era un coladero. Esto con Oracle se acabó y para mí es lo más importante que hicieron por la plataforma.

Oracle aportó estabilidad, previsibilidad y un compromiso real con el avance técnico de Java. Algo que sin duda benefició a las empresas y a los desarrolladores que confiaban en esta tecnología.

Principales mejoras e innovaciones introducidas por Oracle

Durante estos 15 años de gestión de Oracle, Java ha visto la introducción de cantidad de mejoras e innovaciones (algunas extraídas de otros lenguajes y plataformas, todo hay que decirlo) que han fortalecido la plataforma y aumentado su atractivo.

Algunas de estas mejoras incluyen:

  • Modularidad (Java 9): esta es seguramente una de las innovaciones más significativas: el sistema de módulos aparecido con Java 9, conocido como Proyecto Jigsaw. Este sistema permite a los desarrolladores dividir nuestras aplicaciones en módulos independientes, mejorando la mantenibilidad y el rendimiento del código. Además, facilita la creación de aplicaciones más seguras y optimizadas al permitir la inclusión de solo los módulos necesarios. En nuestro curso de Java tenemos un módulo entero, bastante extenso, dedicado a esta funcionalidad.
  • La palabra clave var (Java 10): que permite la inferencia de tipos en las variables locales. Esto simplifica la escritura del código al reducir la necesidad de declarar explícitamente el tipo de cada variable, haciendo el código más limpio y conciso. Esto lo tenemos también hace años en .NET, en el lenguaje C#, y ayuda sobre todo a competir con lenguajes como JavaScript en plataformas como Node.js o Deno.
  • Recolector de Basura Z (Java 11): El Z Garbage Collector (ZGC) se diseñó para mejorar la gestión de memoria en aplicaciones de gran escala. ZGC es un recolector de basura de baja latencia, diseñado para manejar grandes cantidades de datos con un impacto mínimo en el rendimiento de la aplicación.
  • Switch Expressions (Java 12): esta mejora permite usar expresiones switch de una manera más concisa y potente, simplificando el código y haciéndolo más legible.
  • Hilos virtuales (Java 21): de lo que te hablé en un artículo hace poco (Hilos virtuales en Java: la revolución del rendimiento en la plataforma Java) y que permite gestionar millones de hilos de ejecución sin exceder el límite de hilos existentes en el sistema operativo, mejorando enormemente el rendimiento de cierto tipo de aplicaciones. Tenemos un módulo estupendo en el curso de Java también.
  • Nuevas APIs y mejoras en las existentes: Con cada nueva versión, Java ha añadido y mejorado diversas APIs. Por ejemplo, la API de Streams, que revolucionó la forma en que los desarrolladores manejan colecciones de datos, permitiendo operaciones más limpias y eficientes.
  • Mejoras en el Rendimiento y la Seguridad: como dije antes, Oracle ha puesto un fuerte énfasis en mejorar el rendimiento y la seguridad de Java, uno de sus mayores problemas tradicionalmente. Las optimizaciones en el compilador Just-In-Time (JIT) y la inclusión de nuevas características de seguridad han hecho que las aplicaciones Java sean más rápidas y seguras.

Estas innovaciones han asegurado que Java continúe siendo una plataforma relevante y potente, capaz de adaptarse con los años a las nuevas necesidades. Las mejoras técnicas no solo han facilitado el trabajo de los desarrolladores, sino que también han ayudado a mantener a Java como una opción de primera línea en el desarrollo de software.

Aunque la cadencia de lanzamientos cada seis meses ha traído mejoras regulares, muchos todavía creemos que el ritmo de innovación de Java ha sido insuficiente comparado con otros lenguajes y plataformas. De hecho, suelo hacer un artículo de revisión de novedades en cada versión y, si sigues nuestro blog, verás que me suelo quejar de que, como en el chiste, sacan versiones cada seis meses haga falta o no, porque muchas llevan muy pocas cosas sustanciales. Eso sí, los que valoran ante todo la estabilidad y la compatibilidad hacia atrás, están contentos, y también me incluyo entre ellos. Es un equilibrio complicado, lo reconozco.

Los vaivenes en licencias y costes

A pesar de los innegables avances técnicos, las suspicacias sobre las verdaderas intenciones de Oracle con Java nunca llegaron a disiparse del todo.

En 2018, con Java 11 (como comenté antes), la compañía anunció que dejaría de ofrecer actualizaciones públicas gratuitas para Java 8 a partir de enero de 2019. Un movimiento que desató las alarmas en toda la comunidad. A partir de 2019, mantener Java 8 actualizado requeriría obligatoriamente una suscripción de pago a Oracle. Las empresas se veían forzadas a elegir entre pagar por las actualizaciones o quedar desprotegidas ante fallos de seguridad.

Este cambio brusco causó un auténtico terremoto en el ecosistema Java. Muchos desarrolladores y organizaciones vieron confirmadas sus peores sospechas sobre las intenciones comerciales de Oracle. La reacción no se hizo esperar. En cuestión de meses, surgió una oleada de distribuciones OpenJDK alternativas ofrecidas por otros proveedores como Amazon, Azul, IBM o Red Hat, e incluso Microsoft, entre otros. Todas ellas ofrecen lo mismo: una versión actualizada, compatible y totalmente gratuita de OpenJDK, con soporte empresarial opcional. Pero sin los costes ni ataduras de la licencia comercial de Oracle.

Tras el fin de las actualizaciones públicas gratuitas en 2019, Oracle introdujo una nueva licencia. Java seguía siendo libre para uso personal y desarrollo, pero los usuarios comerciales necesitaban una suscripción de pago.

Pero la historia no terminó ahí. En 2023, Oracle dio un nuevo viraje con una cuarta modificación importante de licencias en solo cuatro años. Ahora, las organizaciones deben comprar una licencia para todos sus empleados, incluso si solo uno tiene instalado Java. Un cambio que, según los informes, ha multiplicado los costes por 2 o hasta por 12 veces para algunas empresas.

Además, las presiones por auditorías de uso parecen haber aumentado. Gartner estima que para 2026 más del 20% de las organizaciones con aplicaciones Java serán auditadas por Oracle, enfrentándose a posibles cargos millonarios.

Estos constantes cambios en licencias y precios han provocado verdaderos dolores de cabeza para los departamentos de TI y sus presupuestos. Planificar gastos se ha vuelto una tarea casi imposible debido a la falta de transparencia y a la complejidad de las licencias.

Muchas empresas ahora se ven obligadas a explorar estrategias de optimización de costes, migrando a distribuciones OpenJDK alternativas o renegociando contratos para reducir su exposición a Oracle.

Debido a todo esto, hoy en día, según el último informe del estado de Java de la empresa Azul, el 60% de las empresas ya utiliza una distribución no perteneciente a Oracle.

En cualquier caso tú, como desarrollador individual o en una empresa de tamaño pequeño o mediano no deberías preocuparte demasiado: simplemente utiliza el OpenJDK o cualquiera de las variantes de otras empresas que he mencionado, y lo tienes gratuito y con 100% de compatibilidad garantizada.

Conclusiones

En definitiva, la respuesta a la pregunta de Scott McNealy de 2009: "¿Es esto de Oracle algo bueno para Java?" al final ha resultado ser un , pero con matices.

Java sin duda ha sido bueno para Oracle. Los expertos de la industria estiman que los ingresos por el soporte de Java para Oracle, han aumentado en un orden de magnitud desde que Oracle comenzó a monetizar Java agresivamente en 2019.

Oracle ha hecho un buen trabajo manteniendo Java omnipresente y popular. Con todos los lenguajes para elegir, podría haber caído en desgracia, pero "kudos" para Oracle por haberlo mantenido actualizado y relevante para los desarrolladores.

Sin embargo, los cambios en las licencias y los precios de Oracle Java parecen haber afectado duramente a todo el ecosistema. Es difícil confiar en un socio de software que cambia los precios y las licencias cada uno o dos años.

Pero por suerte, y a pesar de esto, gracias a la comunidad OpenJDK que ofrece alternativas sólidas a Oracle, Java sigue siendo uno de las plataformas de programación más populares. El último informe sobre el estado de Java de Azul encontró que un abrumador 98% de las empresas continúan usando Java en sus aplicaciones o infraestructura de software, y una clara mayoría de esas organizaciones indican que Java es la columna vertebral de la mayoría (60%+) de sus aplicaciones.

Oracle seguirá teniendo una gran influencia en el futuro de Java, agregando nuevas características para extender su longevidad. Al mismo tiempo, la JVM es tremendamente versátil y los desarrolladores disfrutan de su flexibilidad sin sacrificar el rendimiento. La comunidad OpenJDK sigue siendo fuerte y continúa impulsando la plataforma.

Visto desde este punto de vista, Oracle ha sido bueno para Java y el futuro de la plataforma sigue siendo optimista.

Y recuerda que si quieres aprender Java, tenemos formación online tanto de la plataforma Java desde cero, como formación online sobre Spring y Spring Boot.

José M. Alarcón Aguí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é M. Alarcón Aguín
Archivado en: General

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ú

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.