OpenJDK es la versión libre de la plataforma de desarrollo Java bajo concepto de lenguaje orientado a objetos. Es el resultado de esfuerzos constantemente realizados por la empresa denominada Sun Microsystems. Esta implementación se encuentra catalogada dentro de la licencia GPL de GNU con una excepción de enlaces, por lo que algunos de los componentes de los folders de clases y sitios web de Java se excluyen de los términos de la licencia para poder ser considerados dentro de la versión estipulada como GNU.

OpenJDK
Información general
Tipo de programa Java Development Kit
Desarrollador Oracle Corporation
Lanzamiento inicial 8 de mayo de 2007
Licencia GPL+linking exception
Información técnica
Programado en
Plataformas admitidas máquina virtual Java
Versiones
Última versión estable 22 (info) ( 19 de marzo de 2024 (1 mes y 4 días))
Enlaces

OpenJDK es la implementación de referencia oficial desde Java SE 7.[1]

Historia editar

En 1995, Sun Microsystems lanza la versión 1.0 del JDK de Java bajo el lema de "Escribe una vez, ejecuta en todas partes", iniciando un capítulo importante en la industria de desarrollo de software. En 1998 la versión 1.1 tuvo dos millones de descargas.

Aunque ya era posible crear software libre con Java, ya que es un lenguaje de programación con una especificación abierta, para su ejecución depende de la máquina virtual Java, que era software no libre. Richard Stallman llamó a esta situación como "la trampa de Java",[2]​ pues aunque el programa desarrollado sea software libre, este puede encontrar dificultades para distribuirse en entornos de software libre. Esto provocó que en todas las distribuciones GNU/Linux la máquina virtual java no esté incluida, pues el único mecanismo legal era descargarla de la propia web de Sun.

Se crearon diversos proyectos para implementar una máquina virtual Java con licencia libre, entre los que destacan Kaffe[3]​ y Harmony[4]​ así como GCJ[5]​ que permiten compilar el código fuente Java en bytecodes y en código nativo. Para el desarrollo de las librerías base se creó el proyecto GNU Classpath.[6]

Desde 1998, Sun crea un proceso de desarrollo abierto para la tecnología Java, a través del programa Java Community Process. El programa ha evolucionado desde entonces, permitiendo un desarrollo cada vez más abierto de la plataforma Java bajo la licencia JRL.[7]​ En 2006, la versión Java SE 6 se realizó con una gran participación de la comunidad. Sin embargo, Sun se mostraba indeciso en la licencia con la que sería liberada, aunque se consideraba utilizar la licencia Common Development and Distribution License (CDDL) utilizada por OpenSolaris.

En agosto del 2006, Sun modificó su licencia de forma que pudiera incluirse el binario de la máquina virtual Java en distribuciones GNU/Linux.

El 13 de noviembre del 2006,[8]​ después de 10 años de desarrollo, Sun anuncia el lanzamiento de las versiones Java SE 6 y SE 7 bajo licencia GPL versión 2.[9][10]​ Al proyecto se le nombró OpenJDK e incluyó inicialmente la máquina virtual Java HotSpot, el compilador de Java javac y el sistema de ayuda JavaHelp 2.0. Anuncia también la liberación del resto de la plataforma a lo largo del primer semestre del 2007, con excepción de unos pocos componentes con problemas de licenciamiento ajenos a Sun.

Liberación de la biblioteca de clases editar

En cumplimiento de su promesa de liberar el Java Development Kit (JDK) basado casi íntegramente en código abierto y libre durante el primer semestre de 2007 [1], Sun liberó el código fuente completo de la Biblioteca de Clases de Java Class bajo licencia GPL el 8 de mayo de 2007, a excepción de algunas componentes limitadas licenciadas a Sun por terceros que rechazaron los términos de la GPL.[11]​ Entre las partes afectadas se contaban varias componentes importantes de la interfaz gráfica de usuario de Java (GUI). Sun declaró que tenía planificado reemplazar las restantes componentes de código no libre con implementaciones alternativas a fin de llegar a una biblioteca de clases completamente libre.[12]

Desarrollo del proyecto editar

El proyecto tiene su propia página web,[13]​ un portal para la comunidad de desarrollo,[14]blogs.[15]​ y cuenta con listas de correo.[16]​ Además tiene un canal IRC,[17]​ y un Wiki para promover ideas[18]​ y con una página para el reporte de errores.[19]

La herramienta que se utiliza para el desarrollo es NetBeans, que tiene una licencia Common Development and Distribution License (CDDL), y utiliza CVS como repositorio. El crecimiento del JDK y de NetBeans están íntimamente vinculados, pues comparten la misma comunidad de desarrollo. Para contribuir con el proyecto a través de parches, debe firmarse el convenio Sun Contributor Agreement (SCA). Los cambios en el lenguaje se controlan a través del Java Community Process.

Estructuras organizativas de decisión editar

La comunidad OpenJDK[20]​ incluye dos secciones, una pública, dónde se encuentra el proyecto OpenJDK entre otros, y una sección privada dónde solo se puede participar si se es miembro y se ha aceptado la licencia JRL.[21]​ Aunque los proyectos JDK6 y JDK7 se encuentran en la sección pública, mantienen una licencia JRL.

Es posible registrar un nuevo proyecto, que debe pasar por una etapa de incubación en el jdk-incubator[22]​ hasta que este lo suficientemente maduro.

Se pueden tomar dos roles en esta comunidad:

  • Desarrollador, que utiliza la API y las herramientas para crear aplicaciones. No contribuye con código en el JDK.
  • Contribuidor, es aquel desarrollador que ha firmado la Sun Contributor Agreement[23]​ y tiene la habilidad de realizar aportaciones como parches o mejoras en el código fuente.

Desde 1998 el desarrollo de la plataforma Java de Sun se realiza mediante el programa denominado Java Community Process[24]​ (JCP) coordinado por la Process Management Office. Cuenta con cerca de 700 miembros, los cuales realizan propuestas a través de documentos formales llamados Java Specification Requests (JSR). Actualmente existen 926 JSR de las cuales 90 están en desarrollo para la nueva versión de la plataforma.

JCP incluye grupos de expertos que revisan los JSR que se incluyen en la lista oficial.

Existen dos comités ejecutivos (EC) para las ediciones de la plataforma Java, Standard/Enterprise y Micro Edition. Realizan las aprobaciones del proceso y de los JSR que se desarrollarán.

Mejoras por parte de la comunidad editar

El 5 de noviembre de 2007, Red Hat anunció que había llegado a un acuerdo con Sun, firmando el contrato amplio de contribuidor de Sun (que regula la participación de todos los ingenieros de Red Hat en todos los proyectos de software abierto y libre encabezados por Sun), así como el contrato de licencia del "kit de compatibilidad tecnológica" Technology Compatibility Kit (TCK) para la comunidad OpenJDK de Sun (con lo que Red Hat obtenía acceso a las baterías de pruebas para determinar si acaso un proyecto basado en OpenJDK cumple con la especificación de Java SE 6).[25]

También en noviembre de 2007, se creó en OpenJDK el llamado Grupo de Portadores[26]​ con la misión de contribuir a los esfuerzos por el traspaso de OpenJDK a diferentes arquitecturas de procesador y sistemas operativos.

En diciembre de 2007, Sun cambió el control de versiones de OpenJDK de lo que había sido TeamWare a Mercurial, como parte del proceso de liberación de OpenJDK a las comunidades open source.[27][28]

OpenJDK tiene procedimientos relativamente estrictos para aceptar contribuciones de código: toda proposición debe ser revisada por dos ingenieros de Sun/Oracle y el contribuidor debe haber firmado el Contrato de Contribuidor de Sun/Oracle (SCA/OCA[29]​). Preferiblemente, debería existir también un conjunto de pruebas jtreg[30]​ que demuestre que el defecto en cuestión ha sido subsanado. Inicialmente el proceso de sumisión de parches externos era lento[31]​ y los ingresos a la base de código se realizaban exclusivamente por ingenieros de Sun. Este proceso se optimizó y en años recientes los parches simples y backports desde OpenJDK 7 a OpenJDK 6 se pueden llevar a cabo en horas y no días.[32]

Radiografía editar

El análisis de acuerdo al modelo de estimación de costes COCOMO con el que se calcula un estimación del costo de producción del software bajo un modelo de Ingeniería de Software cerrado. Aplicando la herramienta SLOCCount:[33]

Estimación de costos javac
Concepto Valor
Total de líneas de código 90.812
Años de desarrollo 1,76
Esfuerzo persona-año 12,96
Costo estimado de desarrollo 3.073.916 dólares

Para tener un estimado de los costes se toma en consideración el salario de 56.286 dólares/año, que es el salario promedio de un programador en los Estados Unidos y luego se multiplica ese resultado por 2,40 que incluye cualquier gasto extra diferente de los programadores como pueden ser: luz, teléfono, papelería, etc.

Lenguajes de programación utilizados en javac
Lenguaje Líneas de código %
Java 88,346 97,28%
sh 2,466 0,10%

Estas son las tablas correspondientes a HotSpot:

Estimación de costos HotSpot
Concepto Valor
Total de líneas de código 475.290
Años de desarrollo 3,40
Esfuerzo persona-año 129,37
Costo estimado de desarrollo 17.476.249 dólares
Lenguajes de programación utilizados en HotSpot
Lenguaje Líneas de código %
cpp 376.211 79.15%
java 87.585 18.43%
ansic 8.614 1.81%
asm 1.724 0.36%
sh 1.156 0.24%

Véase también editar

Referencias editar

  1. «Java Platform, Standard Edition 7 Reference Implementations». Archivado desde el original el 18 de diciembre de 2016. Consultado el 21 de enero de 2012. 
  2. Libre pero encadenado - La trampa de Java
  3. Página del proyect Kaffe
  4. Página del proyecto Harmony
  5. Página del proyecto GCF Archivado el 31 de agosto de 2012 en Wayback Machine.
  6. Página del proyecto GNU Classpath
  7. Licencia JRL
  8. (13-11-2006). Sun Opens Java Archivado el 13 de marzo de 2012 en Wayback Machine. (OGG Theora). Webcast from the Sun Opens Java event. (en inglés)
  9. Sun Opens Java (en inglés)
  10. GNU General Public License
  11. (08.05.2007). Open JDK is here! (en inglés)
  12. Ver p.ej. en Graphics Rasterizer Project una componente en proceso de reemplazo.
  13. Página del proyecto OpenJDK
  14. «Portal de la comunidad de desarrollo del proyecto OpenJDK». Archivado desde el original el 16 de febrero de 2011. Consultado el 29 de diciembre de 2006. 
  15. Blogs del proyecto OpenJDK
  16. Listas de correo del proyecto OpenJDSK
  17. irc.oftc.net #openjdk
  18. «Wiki de OpenJDK para promover ideas». Archivado desde el original el 9 de enero de 2007. Consultado el 29 de diciembre de 2006. 
  19. Página de OpenJDK para el reporte de errores
  20. «Comunidad OpenJDK». Archivado desde el original el 6 de enero de 2007. Consultado el 29 de diciembre de 2006. 
  21. Licencia JRL
  22. «jdk-incubator». Archivado desde el original el 8 de julio de 2007. Consultado el 29 de diciembre de 2006. 
  23. Sun Contributor Agreement
  24. Java Community Process
  25. Broad contributor agreement and TCK License pave way for a fully compatible, free and open source Java Development Kit for Red Hat Enterprise Linux
  26. Porters Group
  27. James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 1 Entrevista a James Gosling, octubre de 2006
  28. Mercurial OpenJDK Questions Archivado el 14 de febrero de 2008 en Wayback Machine. 12.12.2007
  29. Sun Microsystems Inc. Contributor Agreement
  30. Regression Test Harness for the OpenJDK platform: jtreg
  31. Classpath hackers frustrated with slow OpenJDK process Archivado el 4 de abril de 2019 en Wayback Machine. Andy Tripp, 16.07.2007
  32. Backporting changeset from 7 to 6 for bugfix Joe Darcy, 10.06.2010
  33. SLOCCount

Enlaces externos editar