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

33
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

description

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 - PowerPoint PPT Presentation

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

Page 1: 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

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

2

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

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.

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

4

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.

Java Community Process: organización

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

5

Java Community Process: composición

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

6

Composición:

Java Community Process: organización

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

7

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.

Java Specification Request

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

8

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.

Java Specification Request

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

9

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.

Java es un conjunto de “estándares”

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

10

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

11

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.

Implementaciones libres de J2SE

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

12

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

13

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.

GCJ + Classpath

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

14

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).

GCJ + Classpath

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

15

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.

GCJ + Classpath

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

16

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…

GCJ + Classpath

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

17

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.

GCJ + Classpath

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

18

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

19

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.

Kaffe

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

20

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.

Kaffe

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

21

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

22

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

IKVM

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

23

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.

IKVM

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

24

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

25

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.

JNode

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

26

Emplea Classpath para obtener las librerías.

En lo que destaca es en soporte del lenguaje: completo hasta 1.5:

JNode

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

27

Agenda

La plataforma Java ¿qué es?

Implementaciones libres de J2SE:

GCJ + Classpath

Kaffe

IKVM

JNode

Discusión y conclusiones

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

28

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).

Discusión y conclusiones

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

29

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”).

Discusión y conclusiones

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

30

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.

Discusión y conclusiones

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

31

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.

Discusión y conclusiones

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

32

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.

Discusión y conclusiones

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

Muchas gracias por su atención.

Contacto:

Abraham Otero Quintana

[email protected]