1 / 33

Evento/Tema: Implementaciones libres de J2SE: estado actual.

Evento/Tema: Implementaciones libres de J2SE: estado actual. II Conferencia Internacional de Software Libre (España). Fecha: 17 / 02 / 2006 Abraham Otero y Álvaro Sánchez-Mariscal/ javaHispano. Agenda. La plataforma Java ¿qué es? Implementaciones libres de J2SE: GCJ + Classpath Kaffe

yale
Download Presentation

Evento/Tema: Implementaciones libres de J2SE: estado actual.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Evento/Tema: Implementaciones libres de J2SE: estado actual. II Conferencia Internacional de Software Libre (España). Fecha: 17 / 02 / 2006 Abraham Otero y Álvaro Sánchez-Mariscal/ javaHispano

  2. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  3. ¿Qué es la plataforma Java? • Un conjunto de especificaciones que definen todas y cada una de las tecnologías de la plataforma. • También definen el lenguaje, el formato binario de los bytecodes, la máquina virtual y las librerías estándar (JDK). • Hay múltiples implementaciones de las especificaciones. • Pero Java no es un software, una implementación concreta.

  4. Java Community Process: organización • El Java Java Community Process es el organismo que crea y mantiene las especificaciones. • Cualquier individuo u organización puede pertenecer a él. • Dos comités ejecutivos (CE) se encargan de aprobar las especificaciones: • Uno se encarga de J2SE y J2EE y el otro de J2ME. • Cualquier miembro del JCP es elegible para los CE.

  5. Java Community Process: composición

  6. Java Community Process: organización Composición:

  7. Java Specification Request • Un Java Specification Request (JSR) define una tecnología de la plataforma. Consta de: • Una especificación: un documento que describe la tecnología, su necesidad, y cómo afectará al resto de la plataforma. • Una implementación de referencia (IR). Demuestra que la tecnología es factible. • Un test de compatibilidad (TC): batería de pruebas que permiten verificar si una implementación cumple la especificación.

  8. Java Specification Request • Cualquiera, pertenezca o no al JCP, puede proponer JSR. • Puede implementarse un JSR bajo cualquier licencia sin necesidad de pagar royalties. • Algunos JSR antiguos no pueden certificarse si se implementan bajo una licencia libre: el JSR debe estar bajo la versión 2.5 o 2.6 del JCP. • En lo que a J2SE atañe, sólo se puede certificar Java 1.5. • La certificación para una implementación sin ánimo de lucro sería completamente gratuita.

  9. Java es un conjunto de “estándares” • La plataforma Java puede considerarse un conjunto de estándares. • Lo que aquí vamos a analizar es el estado actual de las implementaciones libres del “estándar” (especificación) J2SE. • Más información en A Otero, "Estándares libres y Java: ¿Es el JPC un organismo que crea estándares libres?. II Congreso javaHispano, páginas 87-98. Madrid, 2004.

  10. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  11. Implementaciones libres de J2SE • Sólo analizamos las que han conseguido logros considerables. • Tomamos como baremo principal de dichos logros las aplicaciones Java que han sido capaces de compilar y/o ejecutar. • El realizar un estudio exhaustivo desborda los límites de espacio que tenemos: hay, al menos, unas dos docenas.

  12. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  13. GCJ + Classpath • Implementación de la FSF que se integra dentro de la colección de compiladores GCC. • Permite compilar código Java a código máquina y a bytecode, y bytecode a código máquina. • Libgcj proporciona las librerías estándar Java, un colector de basura y un intérprete de bytecode. • Libgcj se basa en Classpath, proyecto que también pertenece a la FSF y que es empleado como librerías por todas las implementaciones libres que analizaremos.

  14. GCJ + Classpath • Classpath puede considerarse: • Totalmente compatible con los JDK 1.0 y 1.1 • Compatible, a excepción de Swing, con 1.2 y 1.3 • Respecto a la compatibilidad con 1.4: • Dos paquetes, 54 clases, 85 métodos y 11 constructores; 5 clases, 2 campos 1 constructor mal implementado el 12-01-06. • Classpath 0.20 98% compatible con 1.4 (esta versión se publicó tras escribir el artículo).

  15. GCJ + Classpath • Classpath, rama que incluye tipos genéricos (Java 1.5): • Faltan 22 paquetes, 118 clases, 15 interfaces, 8 enumeraciones, 57 campos, 396 métodos y 66 constructores. 13 clases, 4 campos, 4 constructores y 3 métodos estan mal implementados. • Libgcj se funde regularmente con Classpath. • En la actualidad no proporcionan datos concretos de su compatibilidad con las librerías base.

  16. GCJ + Classpath • GCJX, en desarrollo, incluirá soporte para las nuevas características de Java 1.5. • Actualmente es capaz de analizar correctamente código 1.4, y soporta bastantes características de 1.5, aunque con bastantes bugs, y sin soporte completo para tipos genéricos. • GCJ ha permitido ejecutar Openoffice.org, Eclipse, Tomcat, Jonas, Ant…

  17. GCJ + Classpath • Carece de keytool, jarsigner, javap, serialver, native2ascii… • Algunas de estas herramientas se están desarrollando en Classpath::Tools • Sólo gjdoc (javadoc) tiene archivos liberados. • Soporta Applets y JNLP mediante gcjwebplugin • … pero no tiene gestor de seguridad ni soporte amplio. • No soporta JDWP (Java Debug Wire Protocol) • Planeado para el futuro.

  18. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  19. Kaffe • Una de las primeras implementaciones (1996), llegó a ganar el premio de JavaWorld a la mejor JVM en 1998. • Pasó un mal momento cuando el fundador del proyecto lo abandonó y, poco más tarde, quebró la compañía que lo respaldaba (Transvirtual Technologies ). • Es una máquina virtual basada en intérprete y JIT. • Inicialmente tenía sus propias librerías que se han fusionado con Classpath.

  20. Kaffe • Su principal problema es la carencia casi total de documentación. • Posee ciertas herramientas equivalentes a javap, serialver, rmic, rmiregistry, javadoc... • Pero no soporta JDWP. • Ha permitido ejecutar, entre otros, Eclipse, Tomcat, JBoss, Resin, HSQLDB, Berkeley DB, Prevayler, SwingWT, Ant, Rhino y varios drivers JDBC y proyectos de Apache Jakarta.

  21. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  22. IKVM • Es una implementación de Java para Microsoft .NET y Mono (Novell y Miguel de Icaza). • Licencia tipo Apache. • Puede interpretar bytecode dinámicamente o traducirlo a IL (Intermediate Language). • No proporciona compilador ni herramientas de apoyo al desarrollo, sólo entorno de ejecución. • Soporta completamente Java 1.4, aunque no 1.5

  23. IKVM • Se base en Classpath, pero debe añadir cierto código específico para AWT. • Por tanto, está detrás de las demás en cuanto compatibilidad de librerías. • Este punto no es prioritario para los desarrolladores. • Ha ejecutado Eclipse, Jython y JBoss, entre otros.

  24. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  25. JNode • Java New Operating System Design Effort, sistema operativo con licencia LGPL desarrollado en Java cuyo propósito es permitir ejecutar aplicaciones Java. • En la actualidad es funcional y soporta una gran parte del hardware más común para PCs. • Sólo proporciona un entorno de ejecución, no compiladores o herramientas de apoyo al desarrollo.

  26. JNode • Emplea Classpath para obtener las librerías. • En lo que destaca es en soporte del lenguaje: completo hasta 1.5:

  27. Agenda • La plataforma Java ¿qué es? • Implementaciones libres de J2SE: • GCJ + Classpath • Kaffe • IKVM • JNode • Discusión y conclusiones

  28. Discusión y conclusiones • El principal factor limitante de todas las implementaciones es el soporte de Swing. • Es imprescindible para obtener un JDK 1.2+. • A excepción de este punto ya hay compatibilidad con 1.4. • Aunque todavía queda camino para llegar hasta 1.5. • Respecto al lenguaje, a nivel de compilador se soporta 1.4 al completo, y de ejecución 1.5 (JNode).

  29. Discusión y conclusiones • Los principales impedimentos a la hora de ejecutar aplicaciones Java en un entorno libre son: • Swing (emplear SWT o AWT). • No es imposible hacerlas funcionar: OpenOffice.org 2.0 • ¡Dependencias con paquetes com.*!. • Por otro lado, esta tarea no es fácil y requiere, habitualmente, bastante trabajo manual (“hacks”).

  30. Discusión y conclusiones • Tanto Kaffe como GCJ se orientan a conseguir un entorno de ejecución, no un JDK completo. • Escasean las herramientas libres de soporte al desarrollo. • Si ejecutar aplicaciones en un entorno completamente libre es complejo, desarrollarlas es casi imposible.

  31. Discusión y conclusiones • Harmony, implementación de Apache, es una gran promesa de futuro. • No tiene ningún desarrollo funcional (es muy reciente). • No podrán utilizar código de los anteriores por incompatibilidad de licencias. • Pero tiene el apoyo de Apache… • …y de un número creciente de empresas: IBM e Intel ya han contribuido.

  32. Discusión y conclusiones • En cualquier caso, hay éxitos innegables: Eclipse, OpenOffice.org, JOnAS, JBoss, Tomcat, Resin, Ant, etc. • Estamos muy cerca de tener esa implementación completa. Los principales candidatos son: • Kaffe + Classpath (Roxo). • CCJ + Classpath. • Harmony.

  33. Muchas gracias por su atención. Contacto: Abraham Otero Quintana abraham.otero@javaHispano.org

More Related