biolab.uspceu.com

Download Report

Transcript biolab.uspceu.com

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
IKVM
JNode
Discusión y conclusiones
2
¿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.
3
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.
4
Java Community Process: composición
5
Java Community Process: organización
Composición:
6
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.
7
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.
8
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.
9
Agenda
La plataforma Java ¿qué es?
Implementaciones libres de J2SE:
GCJ + Classpath
Kaffe
IKVM
JNode
Discusión y conclusiones
10
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.
11
Agenda
La plataforma Java ¿qué es?
Implementaciones libres de J2SE:
GCJ + Classpath
Kaffe
IKVM
JNode
Discusión y conclusiones
12
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.
13
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).
14
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.
15
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…
16
GCJ + Classpath
Carece de keytool,
native2ascii…
jarsigner, javap, serialver,
Algunas de estas herramientas
desarrollando en Classpath::Tools
se
están
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.
17
Agenda
La plataforma Java ¿qué es?
Implementaciones libres de J2SE:
GCJ + Classpath
Kaffe
IKVM
JNode
Discusión y conclusiones
18
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.
19
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.
20
Agenda
La plataforma Java ¿qué es?
Implementaciones libres de J2SE:
GCJ + Classpath
Kaffe
IKVM
JNode
Discusión y conclusiones
21
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 22
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.
23
Agenda
La plataforma Java ¿qué es?
Implementaciones libres de J2SE:
GCJ + Classpath
Kaffe
IKVM
JNode
Discusión y conclusiones
24
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.
25
JNode
Emplea Classpath para obtener las librerías.
En lo que destaca es en soporte del lenguaje:
completo hasta 1.5:
26
Agenda
La plataforma Java ¿qué es?
Implementaciones libres de J2SE:
GCJ + Classpath
Kaffe
IKVM
JNode
Discusión y conclusiones
27
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).
28
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”).
29
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.
30
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.
31
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.
32
Muchas gracias por su atención.
Contacto:
Abraham Otero Quintana
[email protected]