Proyecto de integración y compilación relacionado con Java
IcedTea es un proyecto de desarrollo e integración para OpenJDK lanzado por Red Hat en junio de 2007. [3] IcedTea también incluye algunas bibliotecas complementarias: IcedTea-Web es una implementación de software libre de Java Web Start y el complemento de subprograma para navegador web Java . IcedTea-Sound es una colección de complementos para el subsistema de sonido de Java, incluido el proveedor PulseAudio que solía incluirse con IcedTea. La Free Software Foundation recomienda que todos los programadores Java utilicen IcedTea como su entorno de desarrollo. [4]
Históricamente, el objetivo inicial del proyecto IcedTea era hacer que el software OpenJDK, que Sun Microsystems lanzó como software libre en 2007, fuera utilizable sin necesidad de software propietario y, por lo tanto, hacer posible agregar OpenJDK a Fedora y otras distribuciones de Linux que insisten en el software libre. Este objetivo se cumplió y una versión de IcedTea basada en OpenJDK se empaquetó con Fedora 8 en noviembre de 2007. En abril de 2008 se lanzó por primera vez [5] una nueva variante, IcedTea6, que se basa en las versiones de compilación de Sun de OpenJDK6, una bifurcación de OpenJDK con el objetivo de ser compatible con el JDK6 existente. Se lanzó en Ubuntu y Fedora en mayo de 2008. El paquete IcedTea en estas distribuciones ha cambiado de nombre a OpenJDK utilizando el aviso de marca registrada OpenJDK. En junio de 2008, la compilación de Fedora pasó las rigurosas pruebas TCK de Sun [6] en x86 y x86-64 . IcedTea 2, la primera versión basada en OpenJDK 7, se lanzó en octubre de 2011. [7] IcedTea 3, la primera versión basada en OpenJDK 8, se lanzó en abril de 2016. [8] El soporte para IcedTea 1 se abandonó en enero de 2017. [9]
Historia
Este proyecto fue creado después de que Sun publicara bajo licencias de código abierto su HotSpot Virtual Machine y el compilador Java en noviembre de 2006, y la mayor parte del código fuente de la biblioteca de clases en mayo de 2007. Sin embargo, partes de la biblioteca de clases, como la representación de fuentes, la gestión del color y el soporte de sonido, solo se proporcionaron como complementos binarios propietarios. Esto se debió a que el código fuente de estos complementos estaba protegido por derechos de autor de terceros, en lugar de Sun Microsystems. [10] [11] Las partes publicadas se publicaron bajo los términos de la Licencia Pública General de GNU , una licencia de software libre .
Debido a la falta de estos componentes, no fue posible crear OpenJDK únicamente con componentes de software libre . Sun intentó negociar con los titulares de las licencias para permitir que este código se publicara bajo una licencia de software libre o, en su defecto, reemplazar estos elementos propietarios con implementaciones alternativas. Con los complementos reemplazados, la biblioteca de clases sería completamente libre. Sun ha seguido utilizando el código propietario en sus versiones binarias certificadas. [12]
Tras el anuncio, se inició el proyecto IcedTea y se anunció formalmente el 7 de junio de 2007, [13] con un repositorio de compilación proporcionado por el equipo GNU Classpath . El equipo no podía llamar a su producto de software " OpenJDK " porque se trata de una marca registrada que era propiedad de Sun Microsystems . En su lugar, decidieron utilizar el nombre temporal "IcedTea" . [14]
El 5 de noviembre de 2007, Red Hat firmó el Acuerdo de Colaboración de Sun y la Licencia del Kit de Compatibilidad Tecnológica Comunitaria (TCK) de OpenJDK. El comunicado de prensa sugería que esto beneficiaría al proyecto IcedTea. [15] Simon Phipps sugirió la posibilidad de que IcedTea se alojara en openjdk.java.net, [16] y Mark Reinhold señaló que la firma de la cesión de derechos de autor podría permitir a Red Hat contribuir con partes de IcedTea a Sun para su inclusión en el JDK principal. [17] [18]
Desde entonces, una serie de parches de IcedTea han llegado a OpenJDK. [19] [20]
En junio de 2008, se anunció que IcedTea6 (como la versión empaquetada de OpenJDK en Fedora 9 ) había pasado las pruebas (TCK) y podía afirmar que era una implementación de Java 6 totalmente compatible. [21] El proyecto continúa rastreando el desarrollo de OpenJDK 6, OpenJDK 7 y OpenJDK 8 en repositorios separados, y contribuye con parches upstream [22]
cuando es posible; el estado actual de cada parche de IcedTea se mantiene en la wiki de IcedTea.
Objetivos
El proyecto IcedTea comenzó con dos objetivos:
para hacer posible que el compilador GNU para Java compilara el código OpenJDK. OpenJDK planteó la cuestión inicial de que estuviera escrito en Java. Por lo tanto, los desarrolladores necesitaban un compilador Java y un entorno de ejecución que ya estuvieran en funcionamiento para poder compilar OpenJDK. Originalmente, solo el Sun JDK propietario existente cumplía ese requisito. Las distribuciones libres como Fedora no pueden depender de herramientas propietarias para compilar paquetes, por lo que el proyecto IcedTea tuvo que hacer posible la compilación del código utilizando software libre. Cuando esto se hizo, la versión IcedTea resultante de OpenJDK se pudo utilizar para compilarse a sí misma, evitando así la necesidad de utilizar software no libre para compilaciones futuras. [13] [23]
para proporcionar equivalentes gratuitos de los complementos binarios que existían en OpenJDK porque Sun no pudo liberar todo el código fuente. A partir de marzo de 2008, esto ya no es necesario para IcedTea6, ya que las compilaciones de OpenJDK 6 se pueden compilar sin complementos binarios. Con el lanzamiento de b10, [24] que reemplaza el soporte de sonido propietario con el del proyecto Gervill, se puede construir una implementación completa de Java 1.6 sin complementos binarios. El único complemento binario restante es para el soporte de SNMP , que es un proveedor opcional para la arquitectura JMX y no forma parte de la especificación. A partir de b53 en abril de 2009, [25] lo mismo es cierto para OpenJDK 7. Fuera del núcleo de OpenJDK, los complementos binarios aún son necesarios para utilizar applets de Java Web Start que se ejecutan utilizando el complemento del navegador (distinto de los complementos básicos discutidos anteriormente); a partir de 2013, el único código fuente disponible que logra este objetivo es el proyecto IcedTea-Web.
Otros beneficios
IcedTea también proporciona un sistema de compilación más familiar al proporcionar un contenedor alrededor de los makefiles de OpenJDK utilizando las herramientas GNU Autotools . Esto elimina la necesidad de recordar numerosas variables de entorno para configurar la compilación. (Las compilaciones actuales de IcedTea establecen aproximadamente cuarenta de esas variables para la compilación OpenJDK subyacente). También ha proporcionado un lugar para el trabajo inicial en características que eventualmente aparecerán en las compilaciones principales de OpenJDK como Gervill [26] y para el trabajo en puertos a otras plataformas.
Web de té helado
IcedTea-web proporciona un complemento de navegador web Java de software libre. Fue el primero en funcionar en navegadores de 64 bits bajo Linux de 64 bits, una característica que el JRE propietario de Sun abordó más tarde. [27] Esto lo hace adecuado para habilitar el soporte para applets de Java en Mozilla Firefox de 64 bits , entre otros. IcedTea-web también proporciona una implementación gratuita de Java Web Start ( Java Network Launching Protocol (JNLP) ). Sun había prometido lanzar su complemento y la implementación de Web Start como parte de OpenJDK. [28] A pesar de la presión de la comunidad, [29] Sun Microsystems no tuvo éxito en hacerlo antes de que la empresa fuera adquirida por Oracle . El desarrollo del complemento IcedTea-web continúa, con la última versión del complemento de próxima generación que admite Chromium de Google [30] además de Firefox. Desde 2011, el desarrollo se lleva a cabo en el proyecto independiente IcedTea-Web. [31] A partir de abril de 2013, Oracle ha mantenido el código base del complemento de Java como totalmente propietario, [32] a diferencia del resto de OpenJDK. A partir de diciembre de 2017, IcedTea-Web 1.7.1 agrega soporte para jdk9.
A partir de octubre de 2018, Oracle anunció que el soporte público de Java Web Start finalizará con Java SE 11. [ 33] En marzo, el código fuente de icedtea-web fue donado al proyecto AdoptOpenJDK . [34] En base a esto, las fuentes y la gestión de problemas de IcedTea-Web se migraron a GitHub. Uno de los objetivos de la migración es proporcionar una integración para las versiones de Java 8 de AdoptOpenJDK y proporcionar instaladores independientes del proveedor de JDK para IcedTea-Web. El proyecto de integración es una cooperación entre la comunidad AdoptOpenJDK, Red Hat y Karakun AG. El proyecto para los instaladores se llama OpenWebStart y la primera información se puede encontrar aquí.
Progreso y disponibilidad
Desde junio de 2007, IcedTea pudo compilarse a sí mismo y pasar una parte significativa de Mauve , la suite de pruebas GNU Classpath. [35] En mayo de 2008, se agregó soporte a IcedTea para ejecutar las pruebas de regresión Sun jtreg . [36]
IcedTea se ha vuelto popular entre los encargados del mantenimiento de paquetes de las siguientes distribuciones de Linux. Actualmente (a fecha de abril de 2012):
IcedTea es la JVM predeterminada en Ark Linux [37] y Arch Linux . [38]
Se puede compilar y ejecutar en Debian . [39] Los paquetes ingresaron en estado inestable el 12 de julio de 2008. A partir de mayo de 2022, los paquetes icedtea-netx y icedtea-netx-common están disponibles en los repositorios oficiales de Debian al menos para Debian 9 a 12. [40]
IcedTea[7] estaba disponible en Fedora 8 y IcedTea6 apareció en Fedora 9 a 17 como java-1.6.0-openjdk. [41] Un paquete java-1.7.0-openjdk que usaba el bosque OpenJDK de IcedTea 2.x, pero no su sistema de compilación, apareció por primera vez en Fedora 16. [42]
Los paquetes binarios y fuente de IcedTea 3.x están disponibles en el repositorio oficial de Gentoo . Se sigue manteniendo un paquete fuente de IcedTea 2.x en el repositorio de superposición de Java. La instalación de una aplicación Java por defecto incluye IcedTea en lugar de oracle-jdk porque se puede instalar sin trabajo adicional por parte del usuario, ya que los usuarios tienen que aceptar manualmente el EULA de Oracle para descargar oracle-jdk.
IcedTea está disponible en Ubuntu 7.10 (Gutsy Gibbon), desde el repositorio "universe", [43] y IcedTea6 en 8.04 (Hardy Heron). [44] A partir de Ubuntu 11.04, solo está disponible IcedTea.
Arquitectura
OpenJDK contenía aproximadamente (en el momento de su lanzamiento en mayo de 2007) un 4% de código engorroso, [14] que sólo se empaquetaba como complementos binarios. Estos eran necesarios para compilar y utilizar el JDK. OpenJDK 6 se lanzó con sólo un 1% de código engorroso, y desde entonces también se ha reemplazado el soporte de sonido engorroso. IcedTea6 se basa en esta versión. IcedTea todavía proporciona su propio complemento de navegador web y soporte Web Start, ya que la implementación de Sun sigue siendo propietaria .
IcedTea 1.x y 2.x pueden compilar OpenJDK usando soluciones basadas en GNU Classpath como GCJ y, opcionalmente, se inicia a sí mismo usando la máquina virtual Java HotSpot y el compilador Java javac que acaba de construir. [45] Por ahora, la construcción de IcedTea 3.x requiere el uso de IcedTea 2.x o 3.x, o una construcción de OpenJDK 7 u 8 de otra fuente.
Soporte de plataforma
Los puertos entre arquitecturas de HotSpot (la máquina virtual de OpenJDK) son difíciles, porque el código contiene mucho lenguaje ensamblador , además del núcleo C++ . [46] El proyecto IcedTea ha desarrollado un puerto genérico del intérprete de HotSpot llamado Hotspot de ensamblador cero (o zero ), [47] con casi nada de código ensamblador. [48] [49] Este puerto está destinado a permitir que la parte del intérprete de HotSpot se adapte muy fácilmente a cualquier arquitectura de procesador Linux . [50] El código de Hotspot de ensamblador cero se utilizó para todos los puertos no x86 de HotSpot ( PPC , IA-64 , S390 y ARM ) a partir de la versión 1.6 de IcedTea7. [51] [52] [53]
El proyecto IcedTea también ha desarrollado un compilador just-in-time independiente de la plataforma llamado Shark for HotSpot, que utiliza LLVM , para complementar a Zero . [49] [54] Esto se incluyó en OpenJDK en agosto de 2010. [55] Un JIT para ARM32 se incluyó por primera vez en 1.6.0 [56] y 2.1.1. [57] Un puerto nativo para AArch64 de Red Hat [58] apareció en 2.4.6 [59] y un puerto nativo PPC64 de SAP/IBM [60] se incluirá en 2.5.0. [61] El puerto PPC/AIX está incluido en OpenJDK desde la versión 8u20, [62] y el puerto AArch64 se incluirá desde la versión 9. [63]
^ "[SEGURIDAD] ¡Ya está disponible IcedTea 3.31.0 para OpenJDK 8!". mail.openjdk.java.net . 20 de abril de 2024 . Consultado el 20 de abril de 2024 .
^ "[SEGURIDAD] ¡Ya está disponible IcedTea 2.6.28 para OpenJDK 7!". mail.openjdk.java.net . 8 de noviembre de 2021 . Consultado el 26 de abril de 2022 .
^ Fitzsimmons, Thomas (8 de junio de 2007). «Créditos» . Consultado el 8 de junio de 2007 .
^ "Libre pero encadenado: la trampa de Java - Proyecto GNU - Free Software Foundation".
^ Angel, Lillian (4 de abril de 2008). «Lanzamiento de IcedTea6 1.1». Archivado desde el original el 31 de octubre de 2008. Consultado el 12 de julio de 2008 .
^ Sharples, Rich (19 de junio de 2008). "Java es finalmente libre y abierto". Archivado desde el original el 20 de junio de 2008. Consultado el 19 de junio de 2008 .
^ Hughes, Andrew John (19 de octubre de 2011). "¡Ya está disponible IcedTea 2.0!". Archivado desde el original el 14 de febrero de 2012. Consultado el 31 de enero de 2012 .
^ Hughes, Andrew John (10 de abril de 2016). «¡Ya está disponible IcedTea 3.0!». Archivado desde el original el 21 de abril de 2016. Consultado el 12 de abril de 2016 .
^ Hughes, Andrew John (11 de enero de 2017). «Interrupción del soporte para IcedTea 1.x». Archivado desde el original el 13 de enero de 2017. Consultado el 12 de enero de 2017 .
^ "¡Open JDK ya está aquí!". Sun Microsystems. 8 de mayo de 2007. Consultado el 9 de mayo de 2007 .
^ "Preguntas frecuentes de Sun sobre OpenJDK". Archivado desde el original el 26 de mayo de 2007. Ahora Sun está publicando en código abierto la mayoría de los componentes restantes del JDK, con la excepción de unos pocos componentes que, con la ayuda de la comunidad, esperamos que puedan volver a implementarse de modo que el 100% del código común de OpenJDK esté disponible como software libre... Sun seguirá utilizando ese código en versiones comerciales hasta que sea reemplazado por alternativas de código abierto completamente funcionales.
^ ab Haley, Andrew (7 de junio de 2007). "Repositorio de compilación experimental en icedtea.classpath.org". Archivado desde el original el 20 de agosto de 2007. Consultado el 9 de junio de 2007 .
^ ab Fitzsimmons, Thomas (18 de mayo de 2007). "Planes para OpenJDK" . Consultado el 22 de mayo de 2007 .
^ "Red Hat y Sun colaboran para promover la tecnología Java de código abierto". Red Hat . 5 de noviembre de 2007. Archivado desde el original el 25 de agosto de 2007. Consultado el 6 de noviembre de 2007 .
^ Phipps, Simon (5 de noviembre de 2007). «Red Hat se une a OpenJDK». Archivado desde el original el 22 de febrero de 2008. Consultado el 14 de noviembre de 2007 .
^ Reinhold, Mark (5 de noviembre de 2007). "¡Bienvenido, Red Hat!". Archivado desde el original el 22 de febrero de 2008. Consultado el 14 de noviembre de 2007 .
^ Haley, Andrew (16 de mayo de 2008). «Proyecto de código abierto: OpenJDK». Archivado desde el original el 10 de octubre de 2008. Consultado el 21 de mayo de 2008 .
^ "Bug ID 6523403: OSS CMM: Es necesario proporcionar la biblioteca lcms con los perfiles ICC del sistema operativo PYCC y LINEAR_RGB" . Consultado el 12 de julio de 2008 .
^ "Bug ID 6604044 Java se bloquea al hablar con la segunda pantalla X" . Consultado el 12 de julio de 2008 .
^ Sharples, Rich (19 de junio de 2008). "Java es finalmente libre y abierto". Archivado desde el original el 20 de junio de 2008.
^ Haley, Andrew (1 de abril de 2009). "Nuevo proyecto: deshacerse de los parches locales de IcedTea" . Consultado el 5 de septiembre de 2009 .
^ Wielaard, Mark (7 de junio de 2007). "Repositorio de compilación experimental en icedtea.classpath.org". Archivado desde el original el 19 de junio de 2007. Consultado el 9 de junio de 2007 .
^ Wielaard, Mark (30 de mayo de 2007). "Se publicó el código fuente de OpenJDK6 b10" . Consultado el 12 de julio de 2008 .
^ "Cambios en OpenJDK7 b53". 2 de abril de 2009. Archivado desde el original el 6 de abril de 2009. Consultado el 5 de septiembre de 2009 .
^ "Gervill: Wiki: Inicio — Proyecto Kenai". Archivado desde el original el 28 de junio de 2013.
^ Notas de la versión de Java SE 6 Update 12. Java.sun.com. Consultado el 18 de julio de 2013.
^ Darcy, Joe (8 de junio de 2009). "OpenJDK y el nuevo complemento" . Consultado el 5 de septiembre de 2009 .
^ Hughes, Andrew John (21 de agosto de 2009). "Plugin y webstart de código abierto: ¿cuándo?" . Consultado el 5 de septiembre de 2009 .
^ Bhole, Deepak (26 de agosto de 2009). "Complemento Java de IcedTea con Chromium y Firefox 3.6A1" . Consultado el 5 de septiembre de 2009 .
^ Bhole, Deepak (2 de febrero de 2011). "¡Primera versión de IcedTea-Web!" . Consultado el 4 de abril de 2011 .
^ "¿Dónde encontrar el código fuente del complemento de navegador de código cerrado?". 14 de abril de 2013.
^ "Actualización de la hoja de ruta del cliente Java" (PDF) . Marzo de 2018. Consultado el 29 de diciembre de 2018. Oracle no incluirá Java Web Start en Java SE 11 (18.9 LTS) y versiones posteriores.
^ Adams, George (30 de abril de 2019). "What's up at AdoptOpenJDK" (Qué pasa en AdoptOpenJDK). Medium . Consultado el 30 de abril de 2019 .
^ Kung, Francis (12 de junio de 2007). "Resultados de la prueba de funcionamiento de Mauve" . Consultado el 12 de junio de 2007 .
^ Wielaard, Mark. "jtreg testing integrated" (Prueba integrada de jtreg) . Consultado el 12 de julio de 2008 .
^ "Paquetes de Ark Linux". Ark Linux. Archivado desde el original el 14 de marzo de 2008. Consultado el 23 de febrero de 2008 .
^ "JRE y JDK se trasladan a la comunidad". Arch Linux . Consultado el 30 de julio de 2009 .
^ "Instrucciones de construcción de Debian". Wiki de IcedTea. Archivado desde el original el 23 de mayo de 2008. Consultado el 21 de mayo de 2008 .
^ "Debian -- Resultados de búsqueda de paquetes -- icedtea".
^ "java-1.6.0-openjdk.git". Archivado desde el original el 28 de marzo de 2014. Consultado el 28 de marzo de 2014 .
^ "java-1.7.0-openjdk.git". Archivado desde el original el 28 de marzo de 2014. Consultado el 28 de marzo de 2014 .
^ "Ubuntu – Detalles de icedtea-java7-jre en gutsy". Paquetes de Ubuntu . Consultado el 26 de octubre de 2007 .
^ "Ubuntu – Detalles del paquete openjdk-6-jre en hardy". Paquetes de Ubuntu . Consultado el 12 de julio de 2008 .
^ Wielaard, Mark (7 de junio de 2007). "IcedTea" . Consultado el 9 de junio de 2007 .
^ Benson, Gary (6 de noviembre de 2007). "Guía de Gary para portar IcedTea". Archivado desde el original el 12 de julio de 2012. Consultado el 26 de enero de 2008 .
^ "Proyecto Zero-Assembler" . Consultado el 22 de agosto de 2008 .
^ "ZeroSharkFaq". icedtea.classpath.org. Archivado desde el original el 23 de agosto de 2009. Consultado el 30 de mayo de 2009 .
^ ab Benson, Gary (28 de mayo de 2008). "28 de mayo de 2008". Red Hat . Consultado el 30 de mayo de 2008. Shark es un JIT independiente de la plataforma para HotSpot, que complementa el intérprete de ensamblador cero que hemos estado usando.
^ Benson, Gary (21 de mayo de 2009). "Zero y Shark: un puerto de ensamblaje cero de OpenJDK". java.net. Archivado desde el original el 31 de mayo de 2009. Consultado el 30 de mayo de 2009. Comenzamos un puerto experimental de OpenJDK sin lenguaje ensamblador, utilizando bibliotecas de software libre para salvar las brechas. Este experimento evolucionó hasta convertirse en el puerto de ensamblaje cero de OpenJDK – Zero – y su compilador justo a tiempo Shark.
^ Benson, Gary (1 de febrero de 2008). «1 de febrero de 2008». Archivado desde el original el 10 de julio de 2012. Consultado el 3 de febrero de 2008 .
^ Haley, Andrew (31 de enero de 2008). "Hacer que el ensamblador cero sea el valor predeterminado en ppc" . Consultado el 3 de febrero de 2008 .
^ Angel, Lillian (13 de febrero de 2008). "¡Lanzamiento de IcedTea 1.6 con compatibilidad con Zero-assembler y JNLP!". Red Hat . Consultado el 13 de febrero de 2008 .
^ Benson, Gary (31 de marzo de 2008). «31 de marzo de 2008». Red Hat . Consultado el 30 de mayo de 2008 .
^ "6976186: integrar cambios en Shark HotSpot". hg.openjdk.java.net . Consultado el 28 de marzo de 2014 .
^ Haley, Andrew (9 de septiembre de 2009). "¡Ya se lanzó IcedTea6 1.6!" . Consultado el 28 de marzo de 2014 .
^ Hughes, Andrew (13 de junio de 2012). "[SEGURIDAD] ¡Ya se lanzaron IcedTea 2.1.1 y 2.2.1!". Archivado desde el original el 29 de marzo de 2014. Consultado el 28 de marzo de 2014 .
^ "Proyecto portuario AArch64" . Consultado el 28 de marzo de 2014 .
^ Hughes, Andrew (28 de marzo de 2014). "IcedTea 2.3.14 y 2.4.6: ¡se consideran ARMful lanzados!". Archivado desde el original el 29 de marzo de 2014. Consultado el 28 de marzo de 2014 .
^ "Puerto PowerPC/AIX de OpenJDK". Archivado desde el original el 28 de marzo de 2014. Consultado el 28 de marzo de 2014 .
^ Hughes, Andrew (23 de enero de 2014). "Puerto PPC disponible en HEAD de IcedTea 2.x". Archivado desde el original el 20 de febrero de 2014. Consultado el 28 de marzo de 2014 .
^ Simonis, Volker (25 de septiembre de 2015). "JEP 175: puerto PowerPC/AIX" . Consultado el 13 de abril de 2016 .
^ Haley, Andrew (16 de diciembre de 2015). «JEP 237: Linux/AArch64 Port» (en inglés) . Consultado el 13 de abril de 2016 .
Enlaces externos
Sitio web oficial
Anuncio de IcedTea
Anuncio de la lista de correo de Classpath Archivado el 19 de junio de 2007 en Wayback Machine
Entrada de blog de Thomas Fitzsimmons (desarrollador de Red Hat) que anuncia IcedTea
Guía para portar IcedTea
OpenJDK y IcedTea, una visión desde el lado de Fedora
Zero y Shark: un puerto de ensamblaje cero de OpenJDK