A raíz de un artículo escrito por Richard Stalman, Libre pero encadenado. La trampa de Java, hay a algunas personas que no les queda clara la siguiente pregunta: si programo en Java ¿le tengo que pagar algo a Oracle cuando empiece a comercializar mi software?.
En primer lugar decir que no hay que pagarle nada cuando desarrollas una aplicación de Java para comercializar y utilizas el SDK estándar de Oracle o versiones de código abierto como OpenJDK. La cantidad que debes pagar suma un montante total de cero.
Actualización Septiembre de 2018: a partir de Java 11 esto ha cambiado y sí que tienes que pagarla a Oracle si usas el JDK 11 o posterior. El camino a seguir ahora es utilizar el OpenJDK. Más información
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. Las recomendaciones de este artículo y el del septiembre de 2018 siguen siendo válidas.
Aquí toda la problemática de la Fundación GNU (ver el artículo del principio) viene dada de que ellos no quieren utilizar un software que esté vinculado a un código cerrado, es decir, software propietario. Para ilustrar el caso, ahí van unos ejemplos:
- nVidia ofrece controladores para la plataforma Linux. Dichos controladores son software propietario, en otras palabras nVidia tiene en su poder los archivos originales del código hecho con C++. Para la Fundación GNU el hecho de tener una dependencia y estar cautivo de un software que no puede ser mantenido ni editado por la comunidad supone un riesgo y un problema, ya que si la empresa desaparece, descontinua o cambia de controladores o lo que sea, te quedas con una instalación de Linux no-funcional (por ejemplo: nVidia dejó colgada a la comunidad de código abierto de Linux con controladores de la serie GTX 900).
- Mono es una ingeniería inversa de C#, de nuevo para evitar problemas si Microsoft cambia de criterio.
- GNU Octave es una implementación de código abierto de Matlab.
En resumidas cuentas, para la Fundación de Software GNU el problema realmente no está en el licenciamiento del software, porque no están en contra de que se cobre dinero por software. El fin último de la Fundación de Software GNU es una instalación de Linux "pura". Todos los componentes, controladores, software... que se ejecuten sobre una instalación en Linux deberían ser de código abierto, y preferiblemente bajo una licencia de código abierto GNU.
Obviamente hay muchas personas que consideran que este enfoque es muy radical y existen muchos otros puntos de vista. Al otro lado del espectro, hay algo denominado la licencia de código abierto BSD que es muy laxa. Por ejemplo, permite en principio que las empresas puedan coger software de código abierto BSD y crear su propio software propietario partiendo de aquél, bajo unos requisitos mínimos. Por poner un ejemplo, Apple es una empresa que se beneficia de software bajo licencia BSD para hacer software propietario.
Así que si te estás planteando la opción de comercializar algo que has programado en Java, no tienes que pagarle nada a Oracle usando el SDK estándar.
Nota: este artículo es una traducción de la respuesta de Koen Samyn en Quora a la misma pregunta.
Nota 2: en realidad la licencia de Oracle es más complicada si vas a crear, por ejemplo, sistemas embebidos o hacer que tu aplicación se ejecute en sistemas que no son de "propósito general". Puedes ver una interesante presentación que profundiza sobre esto, aquí: The challenges of Oracle Java Licensing (en inglés)-
Fecha de publicación: