Diferencia entre revisiones de «Licencia de Java»

De FdIwiki ELP
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
+
{{Licencia de Java}}
fuente: http://dirkriehle.com/2011/06/30/the-java-ip-story/
+
  
  
 +
== Introducción==
 
[[Java]] es una marca que engloba varias tecnologías, que han evolucionado a lo largo del tiempo.  
 
[[Java]] es una marca que engloba varias tecnologías, que han evolucionado a lo largo del tiempo.  
 
 
Principalmente se puede dividir en tres grandes partes: ‘Lenguaje Java’, ‘Librerías Java’ (Java ClassPath) y  ‘Plataforma Java’.  
 
Principalmente se puede dividir en tres grandes partes: ‘Lenguaje Java’, ‘Librerías Java’ (Java ClassPath) y  ‘Plataforma Java’.  
 
 
Hay una ramificación de la Plataforma Java, que se llama Java EE que tiene entre otros una ampliación del Lenguaje, ClassPath y Plataforma.  
 
Hay una ramificación de la Plataforma Java, que se llama Java EE que tiene entre otros una ampliación del Lenguaje, ClassPath y Plataforma.  
 
 
La tecnología de Java Servlets y Java Server son muy cercanos a JavaEE, excepto que tienen alternativas libres.
 
La tecnología de Java Servlets y Java Server son muy cercanos a JavaEE, excepto que tienen alternativas libres.
 
Este escrito no trata de JavaEE ni de servlets y server (p.e. sobre Tomcat). Más bien se hablará sobre Lenguaje Java, Java ClassPath y Plataforma Jva
 
Este escrito no trata de JavaEE ni de servlets y server (p.e. sobre Tomcat). Más bien se hablará sobre Lenguaje Java, Java ClassPath y Plataforma Jva
 
 
Un lenguaje, como tal, no es patentable n tiene copyright, (aún así, Oracle ha intentado cobrar a Google por una implementación muy parecida de sus APIs ).
 
Un lenguaje, como tal, no es patentable n tiene copyright, (aún así, Oracle ha intentado cobrar a Google por una implementación muy parecida de sus APIs ).
 
 
Para ejecutar un programa escrito en lenguaje Java,  necesitamos ante nada, librerías (Java ClassPath) y una plataforma, que integra Java Hotspot (máquina virtual) y javac (compilador a código objeto de Java).
 
Para ejecutar un programa escrito en lenguaje Java,  necesitamos ante nada, librerías (Java ClassPath) y una plataforma, que integra Java Hotspot (máquina virtual) y javac (compilador a código objeto de Java).
  
Línea 22: Línea 17:
 
Licencia:CC BY 3.0
 
Licencia:CC BY 3.0
  
 
+
==¿Qué es Java?==
 
+
 
Java tiene múltiples componentes.
 
Java tiene múltiples componentes.
 
Java, el lenguaje de programación, que se ha convertido en un estándar.
 
Java, el lenguaje de programación, que se ha convertido en un estándar.
Línea 29: Línea 23:
 
JDK, que es el JRE junto a sus librerías y entorno de ejecución y alguna herramientas más.
 
JDK, que es el JRE junto a sus librerías y entorno de ejecución y alguna herramientas más.
 
además, hay muchas librerías de terceros y Entornos de Desarrollo Integrados.
 
además, hay muchas librerías de terceros y Entornos de Desarrollo Integrados.
 
 
Java existe en varios formatos orientados a diferentes entornos de ejecución, entre los cuales: sistemas embebidos, escritorio y sistemas empresariales.
 
Java existe en varios formatos orientados a diferentes entornos de ejecución, entre los cuales: sistemas embebidos, escritorio y sistemas empresariales.
 
 
Java, como lenguaje de programación, está mutando muy lentamente. Sin embargo, las librerías están avanzando rápidamente. Para que éstas sean útiles a La Industria,  el JCP, Proceso de Comunidad de Java, define especificaciones y desarrolla implementaciones de referencia y paquetes de testeo de compatibilidad. El JCP fue puesto en marcha por Sun y juntó los principales actores de la Industria, interesados en Java. Para participar en el proceso, los fabricantes deben firmar un JSPA, Acuerdo de Participación en Especificaciones de Java. Las especificaciones individuales son llamadas JSR’s (Solicitud de Especificación de Java).
 
Java, como lenguaje de programación, está mutando muy lentamente. Sin embargo, las librerías están avanzando rápidamente. Para que éstas sean útiles a La Industria,  el JCP, Proceso de Comunidad de Java, define especificaciones y desarrolla implementaciones de referencia y paquetes de testeo de compatibilidad. El JCP fue puesto en marcha por Sun y juntó los principales actores de la Industria, interesados en Java. Para participar en el proceso, los fabricantes deben firmar un JSPA, Acuerdo de Participación en Especificaciones de Java. Las especificaciones individuales son llamadas JSR’s (Solicitud de Especificación de Java).
 +
==Licencias iniciales de Java==
 
En su origen, Sun y ahora Oracle, posee las siguientes propiedades intelectuales:
 
En su origen, Sun y ahora Oracle, posee las siguientes propiedades intelectuales:
 
la marca registrada Java, que le permite impedir a otros etiquetar sus productos con el nombre de ‘Java’ , en el ámbito de las TIC.
 
la marca registrada Java, que le permite impedir a otros etiquetar sus productos con el nombre de ‘Java’ , en el ámbito de las TIC.
 
varios paquetes de testeo de JSR; así se reservan el control del output del JCP,  a fin de poder certificar las implementaciones de componentes de Java nuevos.
 
varios paquetes de testeo de JSR; así se reservan el control del output del JCP,  a fin de poder certificar las implementaciones de componentes de Java nuevos.
 
muchos patentes dentro de la implementación del lenguaje central de Java y del entorno de ejecución.
 
muchos patentes dentro de la implementación del lenguaje central de Java y del entorno de ejecución.
 
 
Estos derechos de propiedad, han sido usados en varios casos.
 
Estos derechos de propiedad, han sido usados en varios casos.
 
  
 
Para  empezar, repasemos algunos momentos clave en a historia de Java. Java fue lanzado en 1996, bajo una licencia restrictiva. Los desarrolladores podían usar Java, pero este no era de código abierto. Con el interés de la Industria, al alza, Sun anunció y formalizó el JCP en 1998 para ayudar Java avanzar, implicando otros actores de la Industria.
 
Para  empezar, repasemos algunos momentos clave en a historia de Java. Java fue lanzado en 1996, bajo una licencia restrictiva. Los desarrolladores podían usar Java, pero este no era de código abierto. Con el interés de la Industria, al alza, Sun anunció y formalizó el JCP en 1998 para ayudar Java avanzar, implicando otros actores de la Industria.
 
 
Microsoft fue uno de los actores que integró, de forma temprana, Java en su plataforma. Ya en 1997, Sun inició una demanda judicial contra Microsoft, por no respetar el acuerdo de licencia, y en 2001 la ganó. Desde entonces, Java ha eliminado Java de su plataforma, dejando a terceros que hagan la integración (de java).
 
Microsoft fue uno de los actores que integró, de forma temprana, Java en su plataforma. Ya en 1997, Sun inició una demanda judicial contra Microsoft, por no respetar el acuerdo de licencia, y en 2001 la ganó. Desde entonces, Java ha eliminado Java de su plataforma, dejando a terceros que hagan la integración (de java).
  
 
Una primera implementación, de código abierto, de las herramientas Java , entorno y librerías, fue iniciado en forma del proyecto  GNU Classpath; a día de hoy, aún, no ha sido completado. El proyecto usa licencia GPL con ‘excepción Classpath’, que permite que aplicaciones enlacen a dichas librerías, sin tener que adoptar la licencia GPL. (nota del traductor: no confundir con LGPL, que ademas permite ingeniería inversa del programa principal)
 
Una primera implementación, de código abierto, de las herramientas Java , entorno y librerías, fue iniciado en forma del proyecto  GNU Classpath; a día de hoy, aún, no ha sido completado. El proyecto usa licencia GPL con ‘excepción Classpath’, que permite que aplicaciones enlacen a dichas librerías, sin tener que adoptar la licencia GPL. (nota del traductor: no confundir con LGPL, que ademas permite ingeniería inversa del programa principal)
 
 
Otra implementación de código abierto, de Java fue empezada al abrigo de ASF, Apache Software Foundation, en 2005, con el nombre de ‘Project Harmony’. Sun, ahora Orcale, ofrece a la comunidad-sn-animo-de-lucro, certificación gratuita de Java, si aceptan ciertas restricciones de uso. El ASF, siguiendo la filosofía de código abierto, rehusó  la oferta, perdiendo el derecho de usar la marca ‘Java’.
 
Otra implementación de código abierto, de Java fue empezada al abrigo de ASF, Apache Software Foundation, en 2005, con el nombre de ‘Project Harmony’. Sun, ahora Orcale, ofrece a la comunidad-sn-animo-de-lucro, certificación gratuita de Java, si aceptan ciertas restricciones de uso. El ASF, siguiendo la filosofía de código abierto, rehusó  la oferta, perdiendo el derecho de usar la marca ‘Java’.
 
 
Sun , mismo, liberó la mayor parte de sus utilidades, librerías y entorno de ejecución Java en 2006, acabandolo en 2007, bajo la licencia de código abierto GPLv2. LLamado el OpenJDK, esta es por el momento, la única implementación de código abierto de Java disponible a día de hoy.
 
Sun , mismo, liberó la mayor parte de sus utilidades, librerías y entorno de ejecución Java en 2006, acabandolo en 2007, bajo la licencia de código abierto GPLv2. LLamado el OpenJDK, esta es por el momento, la única implementación de código abierto de Java disponible a día de hoy.
  
 
+
==Modelo de Negocio de Java==
 
Contaré tres historias, en las cuáles la propiedad intelectual y la estrategia de negocio confluyen:
 
Contaré tres historias, en las cuáles la propiedad intelectual y la estrategia de negocio confluyen:
 
La guerra de plataformas, Java contra Windows
 
La guerra de plataformas, Java contra Windows
Línea 58: Línea 46:
  
 
Los temas de propiedad intelectual y sistema legal, tienen la costumbre de aburrir mucho.. Espero que este no sea el caso.
 
Los temas de propiedad intelectual y sistema legal, tienen la costumbre de aburrir mucho.. Espero que este no sea el caso.
 
 
El eslogan (y promesa) inicial , de marketing, de Java a los desarrolladores de software fue “escribir una vez, ejecutar en cualquier sitio” (“write once, run anywhere”). Describe la estrategia básica de la Industria,  la ‘Estrategia de Plataforma”
 
El eslogan (y promesa) inicial , de marketing, de Java a los desarrolladores de software fue “escribir una vez, ejecutar en cualquier sitio” (“write once, run anywhere”). Describe la estrategia básica de la Industria,  la ‘Estrategia de Plataforma”
 
En una estrategia de plataforma, un fabricante de software intenta convertir su producto en una plataforma propiamente dicha sobra  la que todo el mundo programa. Programando aplicaciones sobre la plataforma de alguien, conlleva a que estas aplicaciones pasan a depender de dicha plataforma, y siempre que una copia de la aplicación es comprada, hay que comprar también una copia de la plataforma.
 
En una estrategia de plataforma, un fabricante de software intenta convertir su producto en una plataforma propiamente dicha sobra  la que todo el mundo programa. Programando aplicaciones sobre la plataforma de alguien, conlleva a que estas aplicaciones pasan a depender de dicha plataforma, y siempre que una copia de la aplicación es comprada, hay que comprar también una copia de la plataforma.
 
Eso es por qué Windows es tan poderoso y Bill Gates se enriqueció tanto.
 
Eso es por qué Windows es tan poderoso y Bill Gates se enriqueció tanto.
 
 
Java pone en jaque la plataforma Windows, ocultando enteramente la interfaz de programación de Windows, i.e. la API Win32, detrás de las librerías de clases de Java. De ahí que aplicaciones puedan ser implementadas usando las librerías de Java nada más, sin tener conocimientos de plataforma Windows o Linux , por ejemplo. Eso hizo las aplicaciones ‘portables’ a varios sistemas operativos y llevó al grito de guerra “write once, run anywhere”.
 
Java pone en jaque la plataforma Windows, ocultando enteramente la interfaz de programación de Windows, i.e. la API Win32, detrás de las librerías de clases de Java. De ahí que aplicaciones puedan ser implementadas usando las librerías de Java nada más, sin tener conocimientos de plataforma Windows o Linux , por ejemplo. Eso hizo las aplicaciones ‘portables’ a varios sistemas operativos y llevó al grito de guerra “write once, run anywhere”.
 
Por supuesto, Java estaba intentando convertirse en la plataforma líder, ocultando el S.O. base, ya sea Windows o MacOS. Scott McNealy, el CEO  de Syn, quizás quería ser tan rico como Bill Gates.
 
Por supuesto, Java estaba intentando convertirse en la plataforma líder, ocultando el S.O. base, ya sea Windows o MacOS. Scott McNealy, el CEO  de Syn, quizás quería ser tan rico como Bill Gates.
 
A Microsoft no le gustaba la estrategia Java de Sun, ya que reduciría la dependencia de la API Win32 de las aplicaciones, y Windows no estaría tan necesario. Aún así, los clientes seguían pidiendo Java para Windows. Finalmente, Microsoft escuchó a sus clientes: obtuvo licencia Java de Sun y la desplegó en la plataforma Windows.
 
A Microsoft no le gustaba la estrategia Java de Sun, ya que reduciría la dependencia de la API Win32 de las aplicaciones, y Windows no estaría tan necesario. Aún así, los clientes seguían pidiendo Java para Windows. Finalmente, Microsoft escuchó a sus clientes: obtuvo licencia Java de Sun y la desplegó en la plataforma Windows.
 
 
Según una demanda judicial de 1997, por Sun, Microsoft lo había hecho infringiendo el acuerdo de licencia. Sun afirmó que Microsoft modificó el JDK al omitir librerías que eran necesaria para ejecutar el propio Java. Eso obligaba a los programadores a invocar la API de Win32. Esta jugada estratégica buscaba imponer la plataforma Windows que Java estaba intentando ocultar .
 
Según una demanda judicial de 1997, por Sun, Microsoft lo había hecho infringiendo el acuerdo de licencia. Sun afirmó que Microsoft modificó el JDK al omitir librerías que eran necesaria para ejecutar el propio Java. Eso obligaba a los programadores a invocar la API de Win32. Esta jugada estratégica buscaba imponer la plataforma Windows que Java estaba intentando ocultar .
 
 
Sun ganó la demanda en 2001, obligando Microsoft a pagar perjuicios. A posteriori, Microsoft eliminó Java de su plataforma e introdujo tecnologías alternativas. Hoy por hoy, Java en Windows es fabricado por terceros.
 
Sun ganó la demanda en 2001, obligando Microsoft a pagar perjuicios. A posteriori, Microsoft eliminó Java de su plataforma e introdujo tecnologías alternativas. Hoy por hoy, Java en Windows es fabricado por terceros.
 
+
==OpenJDK y Opencore==
 
Sabiendo que Sun lanzó Java como código abierto en 2007 y sabiendo que había implementaciones alternativas, uno se pregunta cómo Sun pensaba sacar dinero de Java. La respuesta de eso es el modelo actual de ‘open core’.
 
Sabiendo que Sun lanzó Java como código abierto en 2007 y sabiendo que había implementaciones alternativas, uno se pregunta cómo Sun pensaba sacar dinero de Java. La respuesta de eso es el modelo actual de ‘open core’.
 
 
El lanzamiento de OpenJDK, por Sun, en 2007, dio a los desarrolladores un entorno de desarrollo y ejecución bajo la licencia GPLv2. La licencia incluye un anexo llamado ‘Classpath Exception’ que permite a fabricante de software acoplar sus aplicaciones con el OpenJDK sin tener que abrir el código de sus aplicaciones.
 
El lanzamiento de OpenJDK, por Sun, en 2007, dio a los desarrolladores un entorno de desarrollo y ejecución bajo la licencia GPLv2. La licencia incluye un anexo llamado ‘Classpath Exception’ que permite a fabricante de software acoplar sus aplicaciones con el OpenJDK sin tener que abrir el código de sus aplicaciones.
 
 
Para no perder su (posible) flujo de ganancias , Sun hace dos cosas, que juntas , presentan la estrategia de propiedad intelectual ‘core’ (núcleo) detrás de ‘open core model’:
 
Para no perder su (posible) flujo de ganancias , Sun hace dos cosas, que juntas , presentan la estrategia de propiedad intelectual ‘core’ (núcleo) detrás de ‘open core model’:
 
Sun tiene el copyright completo y de ahí la propiedad sobre la base de código OpenJDK. Cualquier colaborador externo tiene que firmar un acuerdo conjunto de copyright. Aunque esto favorece contribuciones de código, asegura que Sun sigue siendo el dueño del JDK.
 
Sun tiene el copyright completo y de ahí la propiedad sobre la base de código OpenJDK. Cualquier colaborador externo tiene que firmar un acuerdo conjunto de copyright. Aunque esto favorece contribuciones de código, asegura que Sun sigue siendo el dueño del JDK.
 
Sun, usa su derechos de propiedad para ofrecer OpenJDK bajo una licencia comercial a aquellos que no gustan el GPL (licencia dual ), y a la vez proveyendo funcionalidad (código cerrado)  adicional . (modelo open core).
 
Sun, usa su derechos de propiedad para ofrecer OpenJDK bajo una licencia comercial a aquellos que no gustan el GPL (licencia dual ), y a la vez proveyendo funcionalidad (código cerrado)  adicional . (modelo open core).
 
+
De ahí que , para obtener tanto funciones mejoradas, los desarrolladores de aplicaciones Java deben pagar una licencia comercial.
De ahí que , para obtener tant funciones mejoradas, los desarrolladores de aplicaciones Java deben pagar una licencia comercial.
+
 
+
 
En sus inicios , Java , para ganar contra Microsoft, necesitaba realizar un crecimiento rápido y ventas en los años noventa.
 
En sus inicios , Java , para ganar contra Microsoft, necesitaba realizar un crecimiento rápido y ventas en los años noventa.
 
 
Java creció tan rápido, debido a que Sun colaboró con otros actores de la Industria.  Eso fue realizado mediante el JCP, Proceso de Comunidad de Java. En aquel proceso, compañías como IBM, SAP, y cualquiera al que le importase , podía influir en el desarrollo de Java a través de especificaciones de librerías y asegurarse de la interoperabilidad con sus productos.
 
Java creció tan rápido, debido a que Sun colaboró con otros actores de la Industria.  Eso fue realizado mediante el JCP, Proceso de Comunidad de Java. En aquel proceso, compañías como IBM, SAP, y cualquiera al que le importase , podía influir en el desarrollo de Java a través de especificaciones de librerías y asegurarse de la interoperabilidad con sus productos.
 
 
Un output tangible del JCP es una serie de JSR’s, Solicitudes de Espeficaciones de Java. Cada JSR especifica una librería o componente similar. A cada especificación JSR  le corresponde un TCK, Kit de Compatibilidad Tecnológica. Un TCK es, de facto, un paquete de pruebas que comprueba una implementación de la librería con la especificación. Si la librería aprueba, es considerada una implementación válida. Un TCK de Java combina varios TCK’s en un paquete de pruebas completo, para una configuración de Java determinada.
 
Un output tangible del JCP es una serie de JSR’s, Solicitudes de Espeficaciones de Java. Cada JSR especifica una librería o componente similar. A cada especificación JSR  le corresponde un TCK, Kit de Compatibilidad Tecnológica. Un TCK es, de facto, un paquete de pruebas que comprueba una implementación de la librería con la especificación. Si la librería aprueba, es considerada una implementación válida. Un TCK de Java combina varios TCK’s en un paquete de pruebas completo, para una configuración de Java determinada.
 
 
Cualquiera con una implementación Java que quiera la licencia de marca de Java de Oracle, tiene que pasar el Java TCK correspondiente.
 
Cualquiera con una implementación Java que quiera la licencia de marca de Java de Oracle, tiene que pasar el Java TCK correspondiente.
 
 
 
Un rápido crecimiento y el modelo ‘open core’ significaba que podría haber un volumen de negocio significante.
 
Un rápido crecimiento y el modelo ‘open core’ significaba que podría haber un volumen de negocio significante.
  
 
Había solamente una amenaza a estas ganancias: implementaciones alternativas. estas implementaciones de Java incluyendo JVM, herramientas, y librerías de clases. La primera de las implementaciones , el  proyecto GNU Classpath, empezó en 1998. Una implementación alternativa posterior el el proyecto ‘Apache Harmony’.
 
Había solamente una amenaza a estas ganancias: implementaciones alternativas. estas implementaciones de Java incluyendo JVM, herramientas, y librerías de clases. La primera de las implementaciones , el  proyecto GNU Classpath, empezó en 1998. Una implementación alternativa posterior el el proyecto ‘Apache Harmony’.
 
 
Debido a la amplia participación de la industria, Sun y luego Oracle, no podía cerrar nuevamente Java, dado que era el lenguaje dominante en entorno empresarial. De ahí que Oracle provee una manera muy clara, para que la Industria adquiera una licencia de Java para etiquetar su propia implementación de Java.
 
Debido a la amplia participación de la industria, Sun y luego Oracle, no podía cerrar nuevamente Java, dado que era el lenguaje dominante en entorno empresarial. De ahí que Oracle provee una manera muy clara, para que la Industria adquiera una licencia de Java para etiquetar su propia implementación de Java.
 +
Hoy por hoy, Oracle,  provee la licencia de  marca Java , en dos variantes diferentes:
  
Hoy por hoy, Oracle,  provee la licencia de  marca Java , en dos variantes diferentes:
 
 
A clientes de pago, una licencia completa, si la implementación pasa el Java TCK.
 
A clientes de pago, una licencia completa, si la implementación pasa el Java TCK.
 +
 
Para proyectos gratuitos, tales como GNU Classpath o Apache Harmony, una licencia limitada es otrogada.
 
Para proyectos gratuitos, tales como GNU Classpath o Apache Harmony, una licencia limitada es otrogada.
  
 
La opción 1 funciona muy bien, economicamente, para Oracle. La  opción 2 no es realmente viable para proyectos Open Source, ya que , es un intento de limitar el alcance de estos proyectos.
 
La opción 1 funciona muy bien, economicamente, para Oracle. La  opción 2 no es realmente viable para proyectos Open Source, ya que , es un intento de limitar el alcance de estos proyectos.
CC
 
 
Con OpenJDK, Oracle provee una completa implementación de código abierto de Java. Además, Sun, ahora Oracle, hizo dos jugadas estratégicas para mermar implementaciones alternativas:
 
Con OpenJDK, Oracle provee una completa implementación de código abierto de Java. Además, Sun, ahora Oracle, hizo dos jugadas estratégicas para mermar implementaciones alternativas:
 
La elección de GPLv2 (editada en 1991) , ya que cubre bien poco las licencias
 
La elección de GPLv2 (editada en 1991) , ya que cubre bien poco las licencias
 
Las restricciones de uso, en la licencia de marca, para proyectos de código abierto.
 
Las restricciones de uso, en la licencia de marca, para proyectos de código abierto.
 
 
Una implementación, de código abierto, de Java , que quiera llamarse ‘Java’ tiene que superar el Java TCK apropiado. El uso del TCK y la marca Java son gratuitamente permitidos, sólo si el proyecto (más bien la organización que lo lleva) acepta ciertas limitaciones de uso para dicho proyecto.  Hoy por hoy (2011), la principal limitación es que las implementaciones alternativas no pueden pueden ser usadas para desarrollo en sistemas embebidos. Aplicaciones empresariales, por otro lado, son permitidas.
 
Una implementación, de código abierto, de Java , que quiera llamarse ‘Java’ tiene que superar el Java TCK apropiado. El uso del TCK y la marca Java son gratuitamente permitidos, sólo si el proyecto (más bien la organización que lo lleva) acepta ciertas limitaciones de uso para dicho proyecto.  Hoy por hoy (2011), la principal limitación es que las implementaciones alternativas no pueden pueden ser usadas para desarrollo en sistemas embebidos. Aplicaciones empresariales, por otro lado, son permitidas.
 
 
Un ejemplo de implementación alternativa es Apache Harmony, que provee una implementación completa bajo licencia Apache 2.0.
 
Un ejemplo de implementación alternativa es Apache Harmony, que provee una implementación completa bajo licencia Apache 2.0.
 
 
La definición de Software de Código Abierto prohíbe la imposición al usuario de limitaciones de uso. Las limitaciones que impone Oracle  no son aceptables por un proyecto de software libre que se precie. (Lo mismo se puede decir del Software Libre).
 
La definición de Software de Código Abierto prohíbe la imposición al usuario de limitaciones de uso. Las limitaciones que impone Oracle  no son aceptables por un proyecto de software libre que se precie. (Lo mismo se puede decir del Software Libre).
  
 
Se ha llegado a un Terminus para implementaciones libres y abiertas y no-limitadas de Java.
 
Se ha llegado a un Terminus para implementaciones libres y abiertas y no-limitadas de Java.
 
 
¿Y por qué no se hace un fork de OpenJDK, arrebatandolo de las manos de Oracle?
 
¿Y por qué no se hace un fork de OpenJDK, arrebatandolo de las manos de Oracle?
 
Para hacer un fork, tenemos dos opciones
 
Para hacer un fork, tenemos dos opciones
Línea 123: Línea 93:
  
 
Por ahora
 
Por ahora
 +
 +
==Fuentes==
 +
*http://dirkriehle.com/2011/06/30/the-java-ip-story/

Revisión de 11:40 22 ene 2015

Plantilla:Licencia de Java


Introducción

Java es una marca que engloba varias tecnologías, que han evolucionado a lo largo del tiempo. Principalmente se puede dividir en tres grandes partes: ‘Lenguaje Java’, ‘Librerías Java’ (Java ClassPath) y ‘Plataforma Java’. Hay una ramificación de la Plataforma Java, que se llama Java EE que tiene entre otros una ampliación del Lenguaje, ClassPath y Plataforma. La tecnología de Java Servlets y Java Server son muy cercanos a JavaEE, excepto que tienen alternativas libres. Este escrito no trata de JavaEE ni de servlets y server (p.e. sobre Tomcat). Más bien se hablará sobre Lenguaje Java, Java ClassPath y Plataforma Jva Un lenguaje, como tal, no es patentable n tiene copyright, (aún así, Oracle ha intentado cobrar a Google por una implementación muy parecida de sus APIs ). Para ejecutar un programa escrito en lenguaje Java, necesitamos ante nada, librerías (Java ClassPath) y una plataforma, que integra Java Hotspot (máquina virtual) y javac (compilador a código objeto de Java).


Este artículo, es principalmente una traducción del Artículo de Dirk Riehle (licencia CC): Traducción : R. Daton Fuente: Dirk Rihle Licencia:CC BY 3.0

¿Qué es Java?

Java tiene múltiples componentes. Java, el lenguaje de programación, que se ha convertido en un estándar. JRE, que contiene la infraestructura necesaria para ejecutar aplicaciones Java. JDK, que es el JRE junto a sus librerías y entorno de ejecución y alguna herramientas más. además, hay muchas librerías de terceros y Entornos de Desarrollo Integrados. Java existe en varios formatos orientados a diferentes entornos de ejecución, entre los cuales: sistemas embebidos, escritorio y sistemas empresariales. Java, como lenguaje de programación, está mutando muy lentamente. Sin embargo, las librerías están avanzando rápidamente. Para que éstas sean útiles a La Industria, el JCP, Proceso de Comunidad de Java, define especificaciones y desarrolla implementaciones de referencia y paquetes de testeo de compatibilidad. El JCP fue puesto en marcha por Sun y juntó los principales actores de la Industria, interesados en Java. Para participar en el proceso, los fabricantes deben firmar un JSPA, Acuerdo de Participación en Especificaciones de Java. Las especificaciones individuales son llamadas JSR’s (Solicitud de Especificación de Java).

Licencias iniciales de Java

En su origen, Sun y ahora Oracle, posee las siguientes propiedades intelectuales: la marca registrada Java, que le permite impedir a otros etiquetar sus productos con el nombre de ‘Java’ , en el ámbito de las TIC. varios paquetes de testeo de JSR; así se reservan el control del output del JCP, a fin de poder certificar las implementaciones de componentes de Java nuevos. muchos patentes dentro de la implementación del lenguaje central de Java y del entorno de ejecución. Estos derechos de propiedad, han sido usados en varios casos.

Para empezar, repasemos algunos momentos clave en a historia de Java. Java fue lanzado en 1996, bajo una licencia restrictiva. Los desarrolladores podían usar Java, pero este no era de código abierto. Con el interés de la Industria, al alza, Sun anunció y formalizó el JCP en 1998 para ayudar Java avanzar, implicando otros actores de la Industria. Microsoft fue uno de los actores que integró, de forma temprana, Java en su plataforma. Ya en 1997, Sun inició una demanda judicial contra Microsoft, por no respetar el acuerdo de licencia, y en 2001 la ganó. Desde entonces, Java ha eliminado Java de su plataforma, dejando a terceros que hagan la integración (de java).

Una primera implementación, de código abierto, de las herramientas Java , entorno y librerías, fue iniciado en forma del proyecto GNU Classpath; a día de hoy, aún, no ha sido completado. El proyecto usa licencia GPL con ‘excepción Classpath’, que permite que aplicaciones enlacen a dichas librerías, sin tener que adoptar la licencia GPL. (nota del traductor: no confundir con LGPL, que ademas permite ingeniería inversa del programa principal) Otra implementación de código abierto, de Java fue empezada al abrigo de ASF, Apache Software Foundation, en 2005, con el nombre de ‘Project Harmony’. Sun, ahora Orcale, ofrece a la comunidad-sn-animo-de-lucro, certificación gratuita de Java, si aceptan ciertas restricciones de uso. El ASF, siguiendo la filosofía de código abierto, rehusó la oferta, perdiendo el derecho de usar la marca ‘Java’. Sun , mismo, liberó la mayor parte de sus utilidades, librerías y entorno de ejecución Java en 2006, acabandolo en 2007, bajo la licencia de código abierto GPLv2. LLamado el OpenJDK, esta es por el momento, la única implementación de código abierto de Java disponible a día de hoy.

Modelo de Negocio de Java

Contaré tres historias, en las cuáles la propiedad intelectual y la estrategia de negocio confluyen: La guerra de plataformas, Java contra Windows Obtener ganancias con el modelo Open Core Luchar con la competencia utilizando Patentes y restricciones de uso

Los temas de propiedad intelectual y sistema legal, tienen la costumbre de aburrir mucho.. Espero que este no sea el caso. El eslogan (y promesa) inicial , de marketing, de Java a los desarrolladores de software fue “escribir una vez, ejecutar en cualquier sitio” (“write once, run anywhere”). Describe la estrategia básica de la Industria, la ‘Estrategia de Plataforma” En una estrategia de plataforma, un fabricante de software intenta convertir su producto en una plataforma propiamente dicha sobra la que todo el mundo programa. Programando aplicaciones sobre la plataforma de alguien, conlleva a que estas aplicaciones pasan a depender de dicha plataforma, y siempre que una copia de la aplicación es comprada, hay que comprar también una copia de la plataforma. Eso es por qué Windows es tan poderoso y Bill Gates se enriqueció tanto. Java pone en jaque la plataforma Windows, ocultando enteramente la interfaz de programación de Windows, i.e. la API Win32, detrás de las librerías de clases de Java. De ahí que aplicaciones puedan ser implementadas usando las librerías de Java nada más, sin tener conocimientos de plataforma Windows o Linux , por ejemplo. Eso hizo las aplicaciones ‘portables’ a varios sistemas operativos y llevó al grito de guerra “write once, run anywhere”. Por supuesto, Java estaba intentando convertirse en la plataforma líder, ocultando el S.O. base, ya sea Windows o MacOS. Scott McNealy, el CEO de Syn, quizás quería ser tan rico como Bill Gates. A Microsoft no le gustaba la estrategia Java de Sun, ya que reduciría la dependencia de la API Win32 de las aplicaciones, y Windows no estaría tan necesario. Aún así, los clientes seguían pidiendo Java para Windows. Finalmente, Microsoft escuchó a sus clientes: obtuvo licencia Java de Sun y la desplegó en la plataforma Windows. Según una demanda judicial de 1997, por Sun, Microsoft lo había hecho infringiendo el acuerdo de licencia. Sun afirmó que Microsoft modificó el JDK al omitir librerías que eran necesaria para ejecutar el propio Java. Eso obligaba a los programadores a invocar la API de Win32. Esta jugada estratégica buscaba imponer la plataforma Windows que Java estaba intentando ocultar . Sun ganó la demanda en 2001, obligando Microsoft a pagar perjuicios. A posteriori, Microsoft eliminó Java de su plataforma e introdujo tecnologías alternativas. Hoy por hoy, Java en Windows es fabricado por terceros.

OpenJDK y Opencore

Sabiendo que Sun lanzó Java como código abierto en 2007 y sabiendo que había implementaciones alternativas, uno se pregunta cómo Sun pensaba sacar dinero de Java. La respuesta de eso es el modelo actual de ‘open core’. El lanzamiento de OpenJDK, por Sun, en 2007, dio a los desarrolladores un entorno de desarrollo y ejecución bajo la licencia GPLv2. La licencia incluye un anexo llamado ‘Classpath Exception’ que permite a fabricante de software acoplar sus aplicaciones con el OpenJDK sin tener que abrir el código de sus aplicaciones. Para no perder su (posible) flujo de ganancias , Sun hace dos cosas, que juntas , presentan la estrategia de propiedad intelectual ‘core’ (núcleo) detrás de ‘open core model’: Sun tiene el copyright completo y de ahí la propiedad sobre la base de código OpenJDK. Cualquier colaborador externo tiene que firmar un acuerdo conjunto de copyright. Aunque esto favorece contribuciones de código, asegura que Sun sigue siendo el dueño del JDK. Sun, usa su derechos de propiedad para ofrecer OpenJDK bajo una licencia comercial a aquellos que no gustan el GPL (licencia dual ), y a la vez proveyendo funcionalidad (código cerrado) adicional . (modelo open core). De ahí que , para obtener tanto funciones mejoradas, los desarrolladores de aplicaciones Java deben pagar una licencia comercial. En sus inicios , Java , para ganar contra Microsoft, necesitaba realizar un crecimiento rápido y ventas en los años noventa. Java creció tan rápido, debido a que Sun colaboró con otros actores de la Industria. Eso fue realizado mediante el JCP, Proceso de Comunidad de Java. En aquel proceso, compañías como IBM, SAP, y cualquiera al que le importase , podía influir en el desarrollo de Java a través de especificaciones de librerías y asegurarse de la interoperabilidad con sus productos. Un output tangible del JCP es una serie de JSR’s, Solicitudes de Espeficaciones de Java. Cada JSR especifica una librería o componente similar. A cada especificación JSR le corresponde un TCK, Kit de Compatibilidad Tecnológica. Un TCK es, de facto, un paquete de pruebas que comprueba una implementación de la librería con la especificación. Si la librería aprueba, es considerada una implementación válida. Un TCK de Java combina varios TCK’s en un paquete de pruebas completo, para una configuración de Java determinada. Cualquiera con una implementación Java que quiera la licencia de marca de Java de Oracle, tiene que pasar el Java TCK correspondiente. Un rápido crecimiento y el modelo ‘open core’ significaba que podría haber un volumen de negocio significante.

Había solamente una amenaza a estas ganancias: implementaciones alternativas. estas implementaciones de Java incluyendo JVM, herramientas, y librerías de clases. La primera de las implementaciones , el proyecto GNU Classpath, empezó en 1998. Una implementación alternativa posterior el el proyecto ‘Apache Harmony’. Debido a la amplia participación de la industria, Sun y luego Oracle, no podía cerrar nuevamente Java, dado que era el lenguaje dominante en entorno empresarial. De ahí que Oracle provee una manera muy clara, para que la Industria adquiera una licencia de Java para etiquetar su propia implementación de Java. Hoy por hoy, Oracle, provee la licencia de marca Java , en dos variantes diferentes:

A clientes de pago, una licencia completa, si la implementación pasa el Java TCK.

Para proyectos gratuitos, tales como GNU Classpath o Apache Harmony, una licencia limitada es otrogada.

La opción 1 funciona muy bien, economicamente, para Oracle. La opción 2 no es realmente viable para proyectos Open Source, ya que , es un intento de limitar el alcance de estos proyectos. Con OpenJDK, Oracle provee una completa implementación de código abierto de Java. Además, Sun, ahora Oracle, hizo dos jugadas estratégicas para mermar implementaciones alternativas: La elección de GPLv2 (editada en 1991) , ya que cubre bien poco las licencias Las restricciones de uso, en la licencia de marca, para proyectos de código abierto. Una implementación, de código abierto, de Java , que quiera llamarse ‘Java’ tiene que superar el Java TCK apropiado. El uso del TCK y la marca Java son gratuitamente permitidos, sólo si el proyecto (más bien la organización que lo lleva) acepta ciertas limitaciones de uso para dicho proyecto. Hoy por hoy (2011), la principal limitación es que las implementaciones alternativas no pueden pueden ser usadas para desarrollo en sistemas embebidos. Aplicaciones empresariales, por otro lado, son permitidas. Un ejemplo de implementación alternativa es Apache Harmony, que provee una implementación completa bajo licencia Apache 2.0. La definición de Software de Código Abierto prohíbe la imposición al usuario de limitaciones de uso. Las limitaciones que impone Oracle no son aceptables por un proyecto de software libre que se precie. (Lo mismo se puede decir del Software Libre).

Se ha llegado a un Terminus para implementaciones libres y abiertas y no-limitadas de Java. ¿Y por qué no se hace un fork de OpenJDK, arrebatandolo de las manos de Oracle? Para hacer un fork, tenemos dos opciones Si quieres poner la marca ‘Java’ en tu fork, tendrías que pasar el TCK y aceptar las limitaciones de uso de Oracle. Ya que has aceptado distribuir el software bajo licencia GPLv2, aceptar estas limitaciones(a usuario final) te lleva a violar dicha licencia ( que es incompatible con las limitaciones) Si te da igual la marca ‘Java’, puedes obviar la certificación. Eso sí, sin certificación, no obtienes licencias de las patentes de software embebidas en el código de OpenJDK. Luego, cualquier propietario de alguna de esas patentes, al que no le gustes, puede demandar a tus clientes, que a su vez te demandarán por no disponer cobertura de patentes. La unica esperanza es que Google Dalvik supere las demandas de Oracle … Pero es que a su vez, Dalvik tampoco es completamente libre. (nota del traductor: Google ha perdido… está migrando sus usuarios de Dalvik a ART )

Otro Terminus , nuevamente.

Por ahora

Fuentes