OpenJDK

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
OpenJDK6
openjdk.java.net
OpenJDK logo.png
Información general
Desarrollador(es) Oracle Corporation
Última versión estable OpenJDK6 Build b27
26 de octubre de 2012 (4 años, 10 meses y 24 días)
Género Biblioteca
Programado en C++ y Java
Sistema operativo Multiplataforma
Plataforma Máquina virtual Java
Licencia GPL+linking exception
[editar datos en Wikidata]
OpenJDK7
openjdk.java.net
OpenJDK logo.png
Información general
Desarrollador(es) Oracle Corporation
Última versión en pruebas OpenJDK7 Build b147
27 de junio de 2011 (6 años, 2 meses y 22 días)
Género Biblioteca
Programado en C++ y Java
Sistema operativo Multiplataforma
Plataforma Máquina virtual Java
Licencia GPL+linking exception
[editar datos en Wikidata]

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 ultiman de los términos de la licencia para poder ser considerados dentro de la versión estipulada como GNU.

OpenJDK es la implementación de referencia oficial de 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 ésta 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
  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
  6. Página del proyecto GNU Classpath
  7. Licencia JRL
  8. (13-11-2006). Sun Opens Java (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
  15. Blogs del proyecto OpenJDK
  16. Listas de correo del proyecto OpenJDSK
  17. irc.oftc.net #openjdk
  18. Wiki de OpenJDK para promover ideas
  19. Página de OpenJDK para el reporte de errores
  20. Comunidad OpenJDK
  21. Licencia JRL
  22. jdk-incubator
  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 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 Andy Tripp, 16.07.2007
  32. Backporting changeset from 7 to 6 for bugfix Joe Darcy, 10.06.2010
  33. SLOCCount

Enlaces externos[editar]