El lanzamiento de Java 11 trajo consigo una polémica que no abordamos en su momento en MuyLinux, un cambio de licencia por parte de Oracle que lo ha convertido en una tecnología de pago en caso de usarlo en ciertas circunstancias. Esta nueva situación ha hecho saltar las alarmas entre buena parte de la comunidad de desarrolladores. Por nuestra parte, intentaremos despejar algunas dudas en este artículo.
Es más que conocido que Java ha tenido desde siempre (incluso cuando estaba bajo Sun) una “relación controvertida” con el Open Source y el software libre. Si bien el código fuente siempre estuvo disponible para el público, no se convirtió en una tecnología verdaderamente Open Soruce hasta 2006, cuando fue publicado bajo la licencia GPLv2. A esto se suma la adquisición de Sun por parte de Oracle, lo que activó la desconfianza de muchos usuarios, desarrolladores y empresas sobre el futuro de Java.
Una alarma innecesaria
El anuncio de que Java 11 es de pago ha llenado Internet de publicaciones advirtiendo de las posibles y presuntas desastrosas consecuencias que podría tener dicho movimiento realizado por Oracle, algo a lo que se han sumado recomendaciones de migraciones a otras tecnologías, con Python aparentemente como la más destacada.
En MuyLinux vamos a intentar arrojar cierta luz sobre este cambio por parte de Oracle, y para ello tomaremos como referencia la misma advertencia del gigante de las bases de datos.
En la nueva licencia de Java se puede leer lo siguiente, que además es la parte que está generando controversia:
Además, usted no podrá:
- Utilizar los programas para procesamiento de datos ni para ningún propósito comercial, de producción o comercial interno que no sea desarrollo, prueba, creación de prototipos y demostración de la aplicación.
- Eliminar o modificar ninguna marca del programa ni ningún aviso de los derechos de autor de Oracle o del licenciante.
- Hacer que los programas estén disponibles de cualquier manera para cualquier tercero (que no sean contratistas que actúen en su nombre según lo establecido en este acuerdo).
- Asignar este acuerdo o distribuir, otorgar o transferir los programas o un interés en ellos a cualquier tercero, excepto lo que está expresamente permitido en este acuerdo para contratistas (lo anterior no se interpretará en el sentido que limita los derechos que de otro modo podría tener con respecto a la Tecnología de Terceros Licenciada por Separado).
- Causar o permitir ingeniería inversa (al menos que sea requerida para interoperabilidad por la ley).
- Crear, modificar o cambiar el comportamiento de las clases, interfaces o subpaquetes que de alguna manera sean identificados como “java”, “javax”, “sun”, “oracle” o convenciones similares especificadas por Oracle para cualquier designación de convención de denominación.
Sobre los precios, Oracle se cobra mediante suscripción 2,50 dólares estadounidenses por instancia de escritorio al mes y 25 dólares mensuales por cada procesador cuando su implementación comercial de Java es utilizada en servidores y soluciones Cloud.
Como vemos, parece que Oracle ha impuesto muchas restricciones a la versión comercial de Java, sin embargo, en el aviso también se puede leer que la compañía “también ofrece este software bajo licencia GPL en jdk.java.net/11”. Si se pulsa en el primer enlace el usuario podrá comprobar que dirige a OpenJDK, un proyecto muy conocido dentro de los círculos de Linux, pero aparentemente un gran desconocido entre los usuarios de Windows y Mac.
Java es más libre bajo Oracle que bajo Sun
Esta afirmación puede sonar muy atrevida, pero la realidad es que tiene su fundamento. Si bien OpenJDK nació como un intento de crear una implementación software libre de Java, Oracle tomó hace años la decisión de convertirlo en la base de la implementación comercial de la tecnología que nos ocupa, y esto es así desde Java 7 (blog de Oracle y anuncio de OpenJDK).
Java 7 apareció en verano de 2011. Esto quiere decir que los usuarios de Linux no tienen por qué, al menos en un principio, descargar el JDK de Oracle, ya que desde la mencionada fecha OpenJDK es la base de la implementación oficial de Java. Eso motivó por parte de la compañía a descontinuar los DLJ, además de arrastrar a aplicaciones como NetBeans a ser compatibles con OpenJDK, por lo que instalando el paquete «openjdk-11-jdk» en Ubuntu o «java-11-openjdk-devel» en Fedora u openSUSE se puede desarrollar con la última versión de NetBeans sin ningún problema (recomendamos encarecidamente usar la versión de la web de Apache en lugar de la suministrada por los repositorios).
OpenJDK también puede ser instalado en Windows y Mac, así que no hay nada que impida su utilización de forma libre y gratuita más allá de Linux. De hecho, en Internet surgió hace años una iniciativa llamada Adopt OpenJDK, la cual obviamente ha recibido un fuerte impulso tras el cambio de licencia de Oracle.
¿Ha marcado Google el camino a seguir?
Antes de la polémica surgida tras el lanzamiento de Java 11, ya hubo una compañía que decidió dar el salto hacia la implementación plenamente libre en detrimento de la comercial, Google.
Google lleva muchos años librando una disputa legal por una supuesta vulneración de patentes denunciada por Oracle. Para poner cierta distancia de las tecnologías de su rival, Google decidió basar la implementación de Java de Android en OpenJDK para así librarse de la API propietaria de Oracle, todo con el fin de protegerse en caso de perder una eternizada disputa judicial que actualmente se encuentra apelada por parte del gigante del buscador.
OpenJDK está publicado bajo GPLv2
Como ya hemos dicho, desde hace años OpenJDK es la base de la implementación comercial de Java. Esto quiere decir que el cambio de licencia impulsado por Oracle en Java 11 no tendría que generar ningún impacto negativo grave entre los desarrolladores y las empresas.
Por otro lado, las corporaciones suelen ir rezagadas (a veces bastante) en lo que se refiere a implementar la última versión de muchas tecnologías, así que muy posiblemente el cambio de licencia no les impacte a corto plazo.
Sin embargo, el tema de las licencias dentro del ecosistema de Java no ha sido algo que se haya librado de la polémica, ya que una restricción impuesta en la licencia de TCK, la cual solo permitía su utilización en implementaciones de Java publicadas bajo GPL y que sustancialmente deriven de OpenJDK, ha podido ser el detonante de la descontinuación de Apache Harmony.