¿Java es libre / de código abierto o no?

33

El 13 de noviembre de 2006, Sun lanzó gran parte de Java como software libre y de código abierto (FOSS), bajo los términos de la Licencia Pública General de GNU (GPL). El 8 de mayo de 2007, Sun terminó el proceso, haciendo que todo el código central de Java esté disponible en términos de distribución de software libre / código abierto , aparte de una pequeña porción de código sobre la cual Sun no tenía los derechos de autor.

OpenJDK (Open Java Development Kit) es una implementación gratuita y de código abierto del lenguaje de programación Java. Es el resultado de un esfuerzo que Sun Microsystems comenzó en 2006. La implementación está licenciada bajo la Licencia Pública General de GNU (GNU GPL) con una excepción de enlace.

  • ¿Por qué todavía hay personas que dicen que Java no es de código abierto o libre como en la libertad de expresión?
  • ¿Me estoy perdiendo de algo?
  • ¿Java sigue siendo propietario?
Tulains Córdova
fuente
No sé exactamente si solo la implementación de Sun JVM o incluso la tecnología (bytecode) está protegida, pero todas las bibliotecas principales (java.xy) son gratuitas. Por lo tanto, si alguien crea una especificación de código de bytes y una VM diferentes, debe usar las bibliotecas existentes de forma gratuita. ¡Vaya, Google lo hizo con Dalvik!
ern0

Respuestas:

37

El problema es que para llamar a algo "Java", debe obtener la certificación de conformidad con la especificación de Java.

Uno de los requisitos previos para obtener esta certificación es ejecutar su JVM a través de un conjunto de pruebas: Java Technology Compatibility Kit (TCK) . Este conjunto de pruebas NO es de código abierto.

Por lo tanto, puede crear una JVM que se comporte de una manera muy similar a Java y ser completamente de código abierto, pero, si desea llamarla "Java JVM", debe comprar el paquete de certificación con una licencia de código abierto. Para muchos defensores del código abierto, esto es un completo no iniciador.

James Anderson
fuente
77
Esa es una de las razones por las que se detuvo Apache Harmony (que era una implementación JVM bastante completa e independiente) . Es una lástima que Sun / Oracle haya actuado de esta manera (y todavía actúe de esta manera). Lo que hizo Google ("casi copiar" Java) es probablemente un resultado directo de esto también.
Joachim Sauer
1
Además, el conjunto de pruebas es el Java Platform TCK (también hay otros TCK para tecnologías relacionadas con Java).
Joachim Sauer
44
Además, si crea una JVM exitosa, Oracle podría demandarlo por violación de derechos de autor y violación de patentes . Como si demandaron a Google por Android.
MarkJ
2
¿La ley de nombres es relevante para llamar a algo de código abierto? No puedo crear mi propio navegador y llamarlo Firefox tampoco. Creo que para la pregunta lo primero es entenderlo ... qué significa el término "Java", la especificación del lenguaje, la implementación de jvm, ... y quién lo llama no abierto ...
johannes
@johannes: ¡bienvenido al hogar de código abierto de pedantes y charlatanes! Para muchos en la comunidad de código abierto, estas distinciones son importantes. Testigo Apaches abandonando el proyecto Harmony. Para otros de una inclinación más práctica, tener un entorno Java Like que funcione es "lo suficientemente bueno" como el Dalvik VM en el corazón de todos los dispositivos Android.
James Anderson el
15

Debería haber leído esta respuesta antes de eliminarla sobre cuál usar. La respuesta principal decía:

Acerca de Java 7, tenga en cuenta que JDK7 y OpenJDK7 tendrán una base de código ( casi ) idéntica.

Observe el casi resaltado.

Del artículo vinculado desde esa respuesta:

[…] Pero hay algún código en el que hay reemplazos de código abierto donde todavía usamos el código fuente cerrado anterior. Esto es principalmente en fuente y rasterización de gráficos. El antiguo código de rasterización de código cerrado, aunque está gravado, ha tenido más de 10 años de corrección de errores y ajuste fino, etc. Buena calidad como el código cerrado existente.

Además, de las preguntas frecuentes de Java :

El Kit de desarrollo de Java (JDK) se puede descargar y usar de forma gratuita para la programación comercial, pero no para redistribuirlo .

Entonces, no es de código abierto . Solo casi.

Además, incluso si fuera completamente de código abierto, el modelo de desarrollo y la gobernanza no lo harían. Sin embargo, eso no es un problema de licencia.

Gallaecio
fuente
1
"descarga y uso gratuitos, pero no redistribución" significa que el software "no es software libre", pero aún puede ser de "código abierto". El código abierto simplemente implica que tiene acceso al código fuente. El software libre (según lo definido por la FSF y otros) también requiere el derecho de redistribuir.
un CVn
66
@ MichaelKjörling La definición OSI ciertamente requiere derechos de redistribución.
luiscubal
1

En 1997, Sun Microsystems se acercó a la ECMA para formalizar el Java, pero pronto se retiró del proceso. El estándar Java en realidad se controla a través del Proceso de la Comunidad Java .

Aunque en 2006, Sun Microsystems lanzó la mayor parte de Java bajo los términos de GPL, pero la implementación oficial actual es propiedad de Oracle.

Como Java carece de cualquier estandarización formal reconocida por ECMA, ISO / IEC, ANSI u otra organización de estándares de terceros, la implementación de Oracle es el estándar de facto. Sin embargo, hay implementaciones alternativas como GNU Compiler para Java, GNU Classpath, IcedTea-Web, etc.

Sajad Deyargaroo
fuente
77
-1: desde Java 7, la implementación de referencia oficial es OpenJDK de la GPL.
Michael Borgwardt
2
Hable sobre Java, obtendrá -1 :( OpenJDK es de código abierto pero la implementación en Java.com es BCL, como se mencionó anteriormente y aquí . Primero, no hay cambios en nuestra política frente a Apache Harmony. OCTLA es un programa que permite acceso a TCK para implementaciones derivadas de OpenJDK con licencia bajo GPL y solo está destinado para ese propósito. En segundo lugar, la implementación de Oracle (lo que encontrará en java.com o java.oracle.com) permanecerá solo bajo la licencia BCL. Finalmente, para ser completamente claro, el código fuente de OpenJDK permanece bajo GPL.
Sajad Deyargaroo