stringtranslate.com

Armonía apache

Apache Harmony es una implementación de Java libre y de código abierto retirada , desarrollada por la Apache Software Foundation . [1] Fue anunciado a principios de mayo de 2005 y el 25 de octubre de 2006, la junta directiva votó para convertir a Apache Harmony en un proyecto de nivel superior. El proyecto Harmony logró (a febrero de 2011) un 99% de completitud para J2SE 5.0 , y un 97% para Java SE 6. [ 2] El sistema operativo Android ha sido históricamente un usuario importante de Harmony, aunque desde Android Nougat depende cada vez más de las bibliotecas OpenJDK . [3]

El 29 de octubre de 2011, el líder del proyecto, Tim Ellison, inició una votación para decidir si se debía retirar el proyecto. El resultado fue de 20 a 2 a favor, [4] y el proyecto se retiró el 16 de noviembre de 2011. [5] [6]

Historia

Iniciación

El proyecto Harmony fue inicialmente concebido como un esfuerzo para unir a todos los desarrolladores de las implementaciones libres de Java . Muchos desarrolladores esperaban que fuera el proyecto por encima de [ aclaración necesaria ] las comunidades GNU , Apache y otras. Los desarrolladores de GNU fueron invitados y participaron durante la planificación preparatoria inicial. [7] Apache decidió entonces no usar código de GNU Classpath porque quería que Harmony estuviera disponible bajo la Licencia Apache v2. [8] Los desarrolladores de Apache escribirían entonces las clases necesarias desde cero y esperarían las grandes donaciones de código necesarias de las empresas de software . Varios malentendidos al comienzo del proyecto y propuestas de grandes empresas como IBM para donar grandes cantidades de código existente, llevaron a algunas personas en la comunidad libre de Java a ver el proyecto como un consorcio corporativo en lugar de un proyecto Apache. [9]

Un punto importante de incompatibilidad entre los proyectos GNU Classpath y Apache Harmony eran sus licencias incompatibles: la Licencia Pública General GNU de Classpath con la excepción de enlace versus la Licencia Apache de Harmony . [9]

Dificultades para obtener una licencia TCK de Sun

El 10 de abril de 2007, la Apache Software Foundation envió una carta abierta al CEO de Sun Microsystems , Jonathan Schwartz, con respecto a su incapacidad para adquirir una licencia aceptable para el Kit de compatibilidad tecnológica (TCK) de Java SE 5, un kit de prueba necesario para el proyecto para demostrar la compatibilidad con la especificación de Java SE 5, como lo requiere la licencia de especificación de Sun para Java SE 5. [10] Lo que hace que la licencia sea inaceptable para la Apache Software Foundation es el hecho de que impone restricciones de derechos a través de límites en el "campo de uso" disponible para los usuarios de Harmony, que no cumple con las reglas del Proceso de la Comunidad Java . [11]

Sun respondió en un blog de la empresa [12] [13] que tenía la intención de crear una implementación de código abierto de la plataforma Java bajo GPL , incluido el TCK, pero que su prioridad era hacer que la plataforma Java fuera accesible a la comunidad Linux bajo GPL lo más rápido posible.

Esta respuesta desencadenó algunas reacciones, ya sea criticando a Sun por no responder "de manera suficientemente abierta" a una carta abierta, [14] o más bien a Apache Software Foundation ; algunos piensan que ASF actuó imprudentemente al exigir agresivamente algo que podrían haber obtenido con más diplomacia de Sun, especialmente considerando el cronograma de la biblioteca de clases de apertura. [15] [16]

Sun lanzó OpenJDK en mayo de 2007, junto con una licencia específica para permitir la ejecución de TCK en el contexto de OpenJDK para cualquier implementación GPL derivada sustancialmente de OpenJDK. [17] Esto no cubre Apache Harmony, que no tiene licencia GPL. El 9 de diciembre de 2010, la Apache Software Foundation renunció al Comité Ejecutivo del Proceso Comunitario de Java, [18] en protesta por la dificultad de obtener una licencia aceptable para Apache para su uso con el proyecto Harmony. [19]

Uso en el SDK de Android

La máquina virtual que se utiliza en la plataforma Android de Google ( Dalvik hasta la versión 4.4, y su sucesor, Android Runtime (ART)) utiliza un subconjunto de Harmony para el núcleo de su biblioteca de clases . [20] [21] Sin embargo, Dalvik no se alinea con los perfiles de la biblioteca de clases de Java SE ni de Java ME (por ejemplo , las clases J2ME , AWT y Swing no son compatibles).

Android 7.0 “Nougat” reemplazó a Harmony con OpenJDK . [3]

Fin del proyecto

El 11 de octubre de 2010, IBM , por lejos el mayor participante en el proyecto, decidió unirse a Oracle en el proyecto OpenJDK , cambiando efectivamente sus esfuerzos de Harmony a la implementación de referencia de Oracle . [22] [23] Bob Sutor, jefe de Linux y código abierto de IBM, escribió en su blog que "IBM cambiará su esfuerzo de desarrollo del Proyecto Apache Harmony a OpenJDK". [24] En marzo de 2011, Tim Ellison de IBM anunció que renunció como presidente de gestión de proyectos para Harmony [25] [26] Después de la desvinculación de IBM, el nivel de actividad del proyecto disminuyó considerablemente. [27]

El 29 de octubre de 2011, el líder del proyecto, Tim Ellison, inició una encuesta en la lista de correo harmony-dev para decidir si se debía retirar el proyecto. El resultado, el 3 de noviembre, fue de 20 a 2 a favor de la retirada. [4] El 16 de noviembre de 2011, la junta directiva de la Apache Software Foundation aprobó una moción para dar por terminado el proyecto. [28] Un director, Larry Rosen , emitió un voto en contra, basándose en el momento más que en los méritos de la propuesta; por lo demás, fue unánime. [28] El proyecto se retiró el 16 de noviembre de 2011. [5]

Equipo de desarrollo

Al principio, Apache Harmony recibió algunas contribuciones de código importantes de varias empresas. Se han llevado a cabo discusiones sobre el desarrollo en listas de correo abiertas. Más tarde, los mentores de la fundación Apache Software hicieron un gran esfuerzo para que el proceso de desarrollo se ajustara más al "estilo Apache", [29] [30] y parece que sus esfuerzos tuvieron éxito.

Último estado de desarrollo

Apache Harmony fue aceptado entre los proyectos oficiales de Apache el 29 de octubre de 2006.

Arquitectura

La máquina virtual de capa de ejecución dinámica consta de los siguientes componentes:

  1. El núcleo de la VM: con sus subcomponentes concentra la mayoría de las funciones de control de la JVM.
  2. La capa de portabilidad : oculta detalles específicos de la plataforma de otros componentes de la máquina virtual detrás de una única interfaz y se basa en la capa Apache Portable Runtime .
  3. El recolector de basura : asigna objetos Java en la memoria del montón y recupera objetos inalcanzables utilizando varios algoritmos
  4. Administrador de ejecución : selecciona el motor de ejecución para compilar un método, maneja los perfiles y la lógica de recompilación dinámica.
  5. Biblioteca de clases : es una biblioteca estándar de Java.
  6. El administrador de subprocesos que maneja los subprocesos del sistema operativo
  7. El motor de ejecución: consta de lo siguiente:
    1. El compilador just-in-time para la compilación y ejecución de código de método.
    2. El intérprete para una depuración más sencilla.

Plataforma de soporte y sistema operativo

El proyecto proporcionó una implementación portátil que facilita el desarrollo en muchas plataformas y sistemas operativos. El enfoque principal estuvo puesto en los sistemas operativos Windows y Linux en arquitecturas x86 y x86-64. [31]

Cobertura de la biblioteca de clases

Las donaciones esperadas de las empresas de software se recibieron efectivamente. Apache Harmony ahora contiene el código funcional, incluido el código Swing , AWT y Java 2D , que fueron aportados por Intel .

En febrero de 2011 , el proyecto Harmony alcanzó un grado de completitud del 99% para JDK 5.0 y del 97% para Java SE 6. [ 2]

El progreso del proyecto Apache Harmony se puede seguir en comparación con J2SE 1.4 y Java SE 5.0. [32] Además, hay una rama para Harmony v6.0 en desarrollo para Java SE 6.0.

Los desarrolladores de Apache Harmony integran varios proyectos de código abierto existentes y probados en campo para alcanzar su objetivo (no reinventar la rueda ). Muchos de estos proyectos son maduros y conocidos, y otras partes de la biblioteca tuvieron que escribirse desde cero.

Esta es una lista de componentes de código abierto existentes que se utilizan en el proyecto Apache Harmony; algunos de ellos estaban en uso antes de que comenzara el proyecto.

Documentación

Harmony está menos documentado que las alternativas de implementación libre de Java. Por ejemplo, en GNU Classpath cada método de la clase central CORBA (ORB) tiene el comentario explicativo tanto en la clase API abstracta estándar [33] como en la implementación. [34] En el proyecto Yoko, utilizado por Harmony, [35] la mayoría de los métodos tanto en la declaración estándar [36] como en la clase de implementación [37] no estaban documentados a fines de octubre de 2006. Además, GNU Classpath admitía características CORBA antiguas y nuevas (igual que la implementación de Sun). Harmony, por el contrario, dejó el método central del estándar anterior ( ORB.connect(Object)) completamente sin implementar.

Herramientas

Una implementación completa de la plataforma Java también necesita un compilador que traduzca el código fuente de Java en bytecodes , un programa que administre los archivos JAR , un depurador , un visor de subprogramas y un complemento para el navegador web , por nombrar algunos. Harmony tiene el compilador , el visor de subprogramas , jarsigner, javah, javap, keytool , policytool y unpack200 . [38]

Soporte de máquinas virtuales

Harmony tiene siete implementaciones de máquinas virtuales que ejecutan Harmony Class Library, todas ellas donaciones de grupos externos:

A fines de noviembre de 2006, el soporte de lenguaje proporcionado por estas máquinas virtuales aún era incompleto y las instrucciones de compilación recomendaban utilizar J9, propiedad de IBM, para ejecutar el conjunto de pruebas de la biblioteca de clases. Sin embargo, esto ya no es necesario (a partir de julio de 2007).

En cuanto al resto del proyecto, el desarrollo de la máquina virtual DRLVM se ha estancado (a partir de mayo de 2011). [42]

Estado de la solicitud

Desde su concepción, Harmony creció en su capacidad para ejecutar aplicaciones Java no triviales. [43] A julio de 2007 , las aplicaciones compatibles incluyen:

Sin embargo, la biblioteca incompleta de Harmony le impidió lanzar algunas otras aplicaciones:

Véase también

Referencias

  1. ^ "Preguntas frecuentes originales del lanzamiento del proyecto". harmony.apache.org . Consultado el 27 de febrero de 2011 . Comenzamos con Java SE 5, ya que es la primera versión de Java SE para la cual la licencia permite una implementación de código abierto, pero continuaremos con Java SE 6 y cualquier versión posterior que siga.
  2. ^ ab "Estado del componente de la biblioteca de clases". harmony.apache.org . Consultado el 27 de febrero de 2011 .
  3. ^ ab Amadeo, Ron (7 de enero de 2016). «Android N cambia a OpenJDK, Google le dice a Oracle que está protegido por la GPL». Ars Technica . Condé Nast . Consultado el 1 de julio de 2016 .
  4. ^ ab Ellison, Tim (3 de noviembre de 2011). "Trasladar Apache Harmony al ático (actualizado)". org.apache.harmony.dev. Archivado desde el original el 14 de diciembre de 2013.URL alternativa archivada el 7 de febrero de 2013 en Wayback Machine
  5. ^ ab Ellison, Tim (16 de noviembre de 2011). "La junta aceptó la resolución del ático". org.apache.harmony.dev. Archivado desde el original el 14 de diciembre de 2013. Consultado el 27 de noviembre de 2011 .URL alternativa archivada el 14 de marzo de 2013 en Wayback Machine
  6. ^ "El fin de (Apache) Harmony". The H. 4 de noviembre de 2011.
  7. ^ Mark Wielaard (9 de mayo de 2005). "¡Harmony!". Archivado desde el original el 16 de mayo de 2008. Consultado el 21 de octubre de 2010. Apache ha preparado una propuesta para su discusión en torno a una implementación j2se totalmente libre, a la que llaman "Harmony". No se trata (por el momento) de código, sino de encontrar una dirección para llegar a semejante bestia. Se pidió a Dalibor, Tom, Jeroen y a mí que los ayudáramos en esa discusión y, posiblemente, que les mostráramos cómo configurar una buena arquitectura para ello.
  8. ^ Geir Magnusson Jr. (24 de mayo de 2006). "Una propuesta para una implementación libre de Java". Apache .
  9. ^ de Mark Wielaard (24 de mayo de 2006). "Hacia un Java libre". LWN.net . Todo esto significa que, a pesar de que ahora hay algo de código disponible donado por Intel, no hay una cooperación práctica entre los proyectos de software libre originales que respaldaban a Harmony y el proyecto ahora conocido como Apache Harmony. Todo esto hizo que algunas personas pensaran en Harmony como un consorcio de empresas disfrazado de un proyecto ASF y no como un proyecto comunitario completo.
  10. ^ "Carta abierta a Sun Microsystems - JCK". apache.org.
  11. ^ Según ASF, 1) un responsable de la especificación no puede imponer ninguna condición contractual o pacto que limite o restrinja el derecho de cualquier licenciatario a crear o distribuir dichas Implementaciones Independientes (sección 5.C.III), y 2) un responsable de la especificación debe licenciar toda la propiedad intelectual necesaria libre de regalías para cualquier implementación compatible de una especificación (sección 5.B).
  12. ^ "En el registro". Archivado desde el original el 21 de abril de 2007.
  13. ^ "De Sun a Apache: "El proceso de código abierto es un viaje" - Java IoT". Archivado desde el original el 9 de julio de 2008. Consultado el 14 de abril de 2007 .
  14. ^ "El silencio de un sol abierto". Ian Skerrett . 16 de abril de 2007.
  15. ^ "Mark J. Wielaard » Blog Archive » OpenJCK" . Consultado el 27 de agosto de 2023 .
  16. ^ Gilbert, Dave (16 de abril de 2007). «Cinco razones por las que Apache lamentará esa carta abierta». Archivado desde el original el 18 de abril de 2007. Consultado el 8 de marzo de 2008 .
  17. ^ "Acuerdo de licencia de TCK de la comunidad OpenJDK V 1.1" (PDF) . Sun Microsystems . Consultado el 8 de marzo de 2008 . Sujeto a y condicionado a que su Implementación del Licenciatario se derive sustancialmente del Código OpenJDK y, si dicha Implementación se ha distribuido o se distribuirá a un tercero, se distribuya bajo la Licencia GPL, Sun otorga por la presente al Licenciatario, en la medida de los Derechos de propiedad intelectual de Sun en el TCK, una licencia mundial, personal, no exclusiva, intransferible y limitada para usar el TCK internamente y únicamente con el propósito de desarrollar y probar la Implementación del Licenciatario.
  18. ^ "La ASF dimite del Comité Ejecutivo del JCP". Apache Software Foundation. 9 de diciembre de 2010.
  19. ^ "Apache abandona el grupo de gobierno de Java en protesta por los abusos de Oracle". Ars Technica. 9 de diciembre de 2010.
  20. ^ "El SDK de Android de Google pasa por alto Java ME en favor de Java Lite y Apache Harmon". infoq.com. 12 de noviembre de 2007. Consultado el 31 de mayo de 2009. En lugar de proporcionar una versión completa de Java SE o Java ME, Google ha divergido en dos frentes. En primer lugar, se proporciona un subconjunto limitado de los paquetes básicos de Java. (...) Al seguir esta ruta, Android sigue los pasos de otro proyecto de Google, GWT, que utiliza Java como lenguaje de desarrollo pero no es compatible con el JDK completo.
  21. ^ "Índice de paquetes". Open Handset Alliance . Archivado desde el original el 27 de junio de 2009. Consultado el 31 de mayo de 2009 .
  22. ^ "Oracle e IBM colaboran para acelerar la innovación en Java a través de OpenJDK". Oracle Corporation . Archivado desde el original el 14 de octubre de 2010. Consultado el 22 de octubre de 2010 .
  23. ^ Ryan Paul (13 de octubre de 2010). «Guerras de Java: IBM se une a OpenJDK mientras Oracle rechaza Apache Harmony». Ars Technica . Archivado desde el original el 19 de octubre de 2010. Consultado el 22 de octubre de 2010 .
  24. ^ Bob Sutor. "IBM se une a la comunidad OpenJDK y ayudará a unificar los esfuerzos de código abierto en Java". Archivado desde el original el 18 de octubre de 2010. Consultado el 22 de octubre de 2010. IBM trasladará su esfuerzo de desarrollo del Apache Project Harmony a OpenJDK . Para aquellos que deseen hacer lo mismo, trabajaremos juntos para que la transición sea lo más sencilla posible. IBM seguirá participando activamente en otros proyectos de Apache.
  25. ^ Tim Ellison (14 de marzo de 2011). «Reinicio del proyecto Harmony» . Consultado el 20 de marzo de 2011 .
  26. ^ "¿Cuál es el futuro de Apache Harmony?". infoq.com. 14 de marzo de 2011. Consultado el 20 de marzo de 2011 .
  27. ^ "Archivos de listas de correo: [email protected]". apache.org . Consultado el 11 de septiembre de 2011 .
  28. ^ ab "Board of Directors Meeting Minutes". Apache Software Foundation. 16 de noviembre de 2011. Consultado el 8 de agosto de 2012. Larry desea que se tenga en cuenta que no está en contra de la rescisión, simplemente hubiera preferido tener más tiempo para trabajar en el mensaje.
  29. ^ Leo Simons (24 de julio de 2006). "Nos gustaría que todo el desarrollo se produjera aquí mismo". Archivado desde el original el 29 de septiembre de 2007. Consultado el 28 de julio de 2006 .
  30. ^ "El estilo apache". Archivado desde el original el 21 de agosto de 2006. Consultado el 28 de julio de 2006 .
  31. ^ Equipo de documentación de Harmony. "Apache Harmony: plataformas compatibles". harmony.apache.org.
  32. ^ "Resultados de la comparación entre JDK_5.0 y Harmony_5.0". people.apache.org . Consultado el 27 de agosto de 2023 .
  33. ^ Ruta de clase [ enlace muerto permanente ]
  34. ^ Ruta de clase [ enlace muerto permanente ]
  35. ^ "Harmony utiliza los últimos frascos Yoko..." 27 de septiembre de 2006.
  36. ^ "Licencia". apache.org . Consultado el 27 de agosto de 2023 .
  37. ^ "Licencia". apache.org . Consultado el 27 de agosto de 2023 .
  38. ^ "Apache Harmony - Hoja de ruta del proyecto". harmony.apache.org . Consultado el 27 de agosto de 2023 .
  39. ^ "[general] JRockit H27.2.1 para la biblioteca de clases Harmony ya está disponible".
  40. ^ "¡Anunciamos Jikes RVM 3.0 + Apache Harmony!".
  41. ^ "Desarrollador Janet".
  42. ^ "Subversion Commits". harmony.apache.org . Consultado el 28 de mayo de 2011 .
  43. ^ "Application_Status". apache.org. Archivado desde el original el 10 de agosto de 2007. Consultado el 4 de noviembre de 2006 .
  44. ^ "Las pruebas unitarias de Eclipse superan la prueba DRLVM - Harmony Wiki". Archivado desde el original el 8 de febrero de 2007 . Consultado el 4 de noviembre de 2006 .
  45. ^ "Apache_Tomcat". apache.org. Archivado desde el original el 10 de febrero de 2007. Consultado el 4 de noviembre de 2006 .
  46. ^ "JUnit". apache.org.
  47. ^ "Apache_Ant". apache.org. Archivado desde el original el 10 de febrero de 2007. Consultado el 4 de noviembre de 2006 .
  48. ^ "Armonía Apache". apache.org.

Enlaces externos