java 2010: presente, límites y futuro
TRANSCRIPT
Presentacin de una novedad
Java 2010:
presente, lmites y futuro
12ma. reunin de springhispano.org, grails.org.mx y javamexico.orgEnero 2010
rase una vez...
Green project
Inclusin en Netscape Navigator 2.0
Orientacin al Web:Televisin interactiva
Dispositivos mviles
Pginas Web
0) Introduccin
y Java
encontr camino
El lenguaje de mayor uso en servidores a finales del siglo XX e inicios del XXI.
JSP: sitios de Internet dinmicos.
JavaBeans (MVC al Web).
J2EE y su extrema popularidad:Presentacin de datos al usuario (JSP, applets)
Modelo de datos (EJB): servidor de apps.
Control (Servlets)
Interfaces grficas, textuales y applets.
Java en cdigo abierto
Java, de uso masivo empresarial y personal.
El Java Community Process.
En diciembre de 2006, se relanz toda la plataforma Java como GNU GPL.
Distintas versiones, muchsimas plataformas, arquitecturas dehardware yFrameworks.
0) Introduccin
Agenda
Java en inicios de 2010.Estado actual: Qu es Java para Usted?
JNode, un sistema operativo escrito en Java completamente.
LWJGL, una API que integra OpenGL, OpenAL entre otras, en una API uniforme para programar juegos.
Apache Harmony, una implementacin libre de Java SE 5.0
Qu pasar con Java the Langugage?
Java en enero de 2010
Para Usted qu es Java? Qu representa en su labor?
1) Estado actual
JNode
Desde alrededor del JDK 1.0.2, Ewout Prangsma soaba con un SO hecho en Java: una JVM y un entorno completo en tiempo de ejecucin liviano y flexible.
El proyecto inici en 1995, pero contena mucho cdigo en C.
En Mayo de 2003 se public JNode.
2) JNode
Qu es JNode?
Jnode es una Mquina virtual y un Sistema operativo en un mismo paquete. (http://www.jnode.org/node/175, en ingls)
Es un proyecto con licencia GNU LGPL.
Implementado en Java, salvo el arranque y un nanoncleo escritosen ensamblador.
Arquitectura de JNode
Paquetes comunes
org.jnode.boot Arrancan la mquina virtual e inician el SO.
org.jnode.plugin Interfaz del administrador de plugins.
org.jnode.util Clases frecuentemente usadas
org.jnode.protocol Contiene manejadores de protocolo (URL) implementados por JNode.
Mquina virtual de JNode
org.jnode.vm Clases principales de la JVM.
org.jnode.vm.classmgr Contiene clases internas que representan clases de Java, mtodos y campos, junto al decodificador de classfile.
org.jnode.vm.compiler Clases base para convertir bytecodes java en especficos de cada plataforma.
org.jnode.vm.memmgr El administrador de Java heap, incluye al object allocator y al garbage collector.
Sistema operativo JNode
org.jnode.driver Contiene el Framework de controladores, agrupados en categoras.
org.jnode.system Agrupa las interfaces de los recursos de bajo nivel del sistema: regiones de memoria, puertos E/S, acceso DMA.
org.jnode.fs Abarca el Framework de sistema de archivos, p. ej.: org.jnode.fs.ext2
org.jnode.net Abraza los protocolos de red.
org.jnode.shell Tiene al command shell. Todos los comandos de sistema se agrupan debajo de este paquete.
Paquetes especficos
java.*, javax.*
gnu.* de la librera Classpath de GNU.
org.vmmagic.pragma con clases de excepciones e interfaces especialmente para compiladores de cdigo nativo (Jikes RVM)
org.vmmaic.unboxed con clases que se usan como punteros para memoria raw, referencias a objetos e integers dependientes de arquitectura (palabras) para uso de la mquina virtual (Jikes RVM).
2) JNode
Objetivos de JNode
Un sistema operativo simple de usar e instalar para uso personal, escrito para y en Java.
Dirigido a:Dispositivos modernos
Escritorios
Servidores pequeos a medianos
El nico SO Java desarrollado activamente en el mundo del software libre.7 muy activos desarrolladores, 17K en descargas
Memoria
nico espacio de memoria plano, sin memoria virtual.
JVM escrita en Java: todo el cdigo Java se compila al vuelo, sin intrprete.
Seguridad siempre en mente: arquitectura extensible.
Todos los componentes son plugins.
Estado de JNode
Versin 0.2.8Modelo de controladores de dispositivo completo
TCP/IP
Sistemas de archivo EXT2, FAT, NTFS, ISO9660
Grficos 2D
Soporte J2SDK en la VM (sin Classlibs)
Administradores de Simple heap y GC.
Soporte para plataformas IA32 y AMD64.
Framework de plugins
Todo se conecta como un pluginCdigo, recursos
Incluso la JVM y el Framework de plugins son plugins.
Los plugins pueden:Cargarse, descargarse y recargarse al vuelo.
Depender de otros plugins.
Proporcionar y conectarse a puntos de extensin conocidos.
Plugins
Los plugins:Describen por un descriptor (que tambin contiene informacin de licencias).
Son archivos JAR.
Se inspiraron en plugins de Eclipse.
Los archivos fuente requieren:Un encabezado estndar.
Codificarse en US-ASCII.
2) JNode
Definicin XML de plugin
Informacin general
Dependencias
Cdigo y recursos
Puntos de extensin conocidos
Conexin a puntos de extensin conocidos
Diseo de controlador
de dispositivo
Su diseo bsico involucra 3 componentes:Dispositivo: una representacin del hardware real.
Controlador: El software capaz de manejar al Dispositivo.
APIDeDispositivo: La interfaz de programacin para un Dispositivo, usualmente implementada por el Driver.
Hay un Administrador de Dispositivos donde todos los dispositivos se registran. l delega a instancias DeviceToDriverMapper para encontrar controladores.
Inicio del Framework
de controladores
Bus
Dispositivo(representa hardware)
Controlador
contiene
maneja
Localizador deDispositivos
MapeadorDeviceToDriver
encuentra
encuentra
Operacin del Framework
de controladores
Dispositivo usuario
Dispositivo(representa hardware)
Controlador
consulta a la API
registra en API
DeviceAPI(APIDeDispositivo)
llama a
implementa a
Ejemplo: controlador
de grficos Radeon
Dispositivo usuario
Localizadores
Plugin decontrolador PCI
Encuentrandispositivos PCI
mapean la id PCI al controlador
Mapeadores
Plugin controlador Radeon
2) JNode
Transacciones entre
Framework de dispositivos
administrador de dispositivos
localizador de dispositivos
mapeador DeviceToDriver
controlador
dispositivo
encuentra dispositivos
registra dispositivos
encuentra controlador
inicia dispositivo
registra API
Desarrollo en proceso
Mejora del rendimiento de la JVM (mm, compiladores)
Desarrollo de los Frameworks
Mejora de los grficos
Ambiente de escritorio centrado en tareas (en lugar de centrado en aplicaciones)
Servidores respaldados por Java, p. ej., cooperacin con ApacheDS.
Capturas de pantalla JNode (1)
Capturas de pantalla JNode (2)
2) JNode
Capturas de pantalla JNode (3)
Capturas de pantalla JNode (4)
Capturas de pantalla JNode (5)
Beneficios de Java
Enlace dinmico
Lenguaje de tipado seguro.
SeguridadAdministrador de seguridad
Sin acceso de memoriano controlada
Excelentes herramientas de desarrollo.Eclipse
Ant
Requerimientos
Procesador Pentium (Recomiendan PIII)
256 MB RAM (Recomiendan 512 MB)
Tarjeta grfica (Recomiendan 32 bits)
Mayor informacin:http://www.jnode.org/
Promocin a JNode
Seores desarrolladores! Este proyecto requiere de su ayuda!
Que no les intimide el cdigo. La mayora de l son bibliotecas de Classpath.
nanse al proyecto!
Visiten http://www.jnode.org/
2) JNode
La Biblioteca Java Ligera para Juegos es una solucin dirigida a programadores tanto amateur como profesionales destinada a la creacin de juegos de calidad comercial escritos en lenguaje Java.(http://www.lwjgl.org/ en ingls)
Provee acceso a bibliotecasmultiplataforma de altorendimiento en una APIuniforme.
3) LWJGL
Qu proporciona LWJGL?
OpenGL (grficos 3D)
OpenAL (sonido 3D)
Controladores para Gamepads, volantes de juego y Joysticks.
DevIL (imgenes, antes llamado OpenIL)
FMOD (audio multiplataforma).
La base para bibliotecas y game engines ms completas.
Licencia BSD.
Caractersticas de LWJGL (1)
Velocidad:Se adapta al caso de Java: desecha mtodos diseados para programacin C como glColor3fv.
Lanza una excepcin si no hay aceleracin de hardware: De qu sirve correr a 5fps?
Multipresencia:Trabajar en dispositivos pequeoscomo celulares y en servidores deRender multiprocesador: la distroocupa menos de MB, cuidandoel sonido, grficos y E/S.
Caractersticas de LWJGL (2)
SimplicidadPara ampliar el rango de desarrolladores, se removi 99% de lo que los programadores de juegos no necesitan saber.
Se prefiri consistencia sobre complejidad: en lugar de permitir mltiples maneras de llamar a los mismos mtodos, seeliminan los arrays, puesson ms lentos decualquier manera. Para
eso estn los bferes.
Caractersticas de LWJGL (3)
PequeezPequeo == simple (sencillo de aprender)
Pequeo == menos errores de cdigo
Pequeo == descargable
Pequeo == JME.
SeguridadNo se usan punteros, slo bferes
Se comprueban posiciones y lmitesde bfer para evitar ataques de bfer
Robusto: excepciones...
Minimalismo: slo lo necesario.
Instalacin de LWJGL
Para usarlo con su IDE de preferencia, slo incluya el jar y dgale dnde estn los archivos nativos.
Eclipse
JCreator
Netbeans
Multiplataforma
Al descargar la distribucin, encontrar archivos para distintas plataformas: GNU/Linux, M$ Windows y Apple MacO$X.
GNU/Linux:liblwjgl.solibopenal.so
M$ Windows:lwjgl.dlllwjglaudio.dll
lwjgl.jar lwjgl_util.jar lwjgl_test.jar
Apple MacO$Xlwjgl.dlllwjglaudio.dll
Diamond Crush
http://www.diamondcrush.net/
3) LWJGL
Vermin ExTerminator
http://www.vermin-exterminator.de/
Cutris (multijugador)
http://cultris.ath.cx/
Illarion (online RPG)
Slam Soccer 2006
Demos
En http://www.lwjgl.org/demos.php existen demos por categoras para cada rubro de la biblioteca:Entrada,
OpenAL,
OpenGL y
el sistemaprincipal deLWJGL.
3) LWJGL
Java SE de Fuente Abierta
Persigue una implementacin certificada de la Plataforma Java Edicin EstndarCompatible con Java SE 5 JDK bajo la licencia Apache 2.0
Una arquitectura en tiempo de ejecucin modular desarrollado por la comunidad (VM y biblioteca de clases).
Aspira soportar un amplio rango de plataformas distintas.(http://harmony.apache.org/ en ingls)
4) Apache Harmony
Inicios
El proyecto se concibi como un esfuerzo para unir a todos los desarrolladores de implementaciones Java libres.Muchos desarrolladores esperaron que sera el proyecto que uniera a GNU, Apache y otras comunidades.
Se invit a los desarrolladores de GNU y participaron en la fase de planeacin preparatoria.
Posteriormente se decidi no usar cdigo de GNU Classpath por sus licencias.
Razones para reescribir desde cero
La principal, la incompatibilidad entre la GNU GPL y la Licencia Apache.
Legalmente es muy difcil hacer un derivado de GNU Classpath con cdigo cerrado.
Java 5 es la primera especificacin J2SE cuya licencia permite una implementacin libre.
Apache Harmony y GNU Classpath
Aunque no se use cdigo de Classpath (de Kaffe o de otros proyectos con licencia GPL), los desarrolladores han ayudado con su experiencia en VM libres y biblioteca de clases.
Finalmente, los problemas que se presentan se han complementado los proyectos.
Apache y Sun
Sun ha apoyado a Apache y proyectos de Apache, que tienen una amplia variedad de implementaciones de especificaciones Java:Apache Geronimo
Apache Tomcat
Pluto
taglibs
Sun ofrece becas a asociaciones sin nimo de lucro, y Apache se ha beneficiado de ello desde el J2EE 1.4
Apache Harmony y OpenJDK
Apache anim a Sun a abrir el cdigo de J2SE. En la conferencia Oracle OpenWorld de 2006 se anunci la apertura del cdigo bajo la GPL, exceptuando cdigo de terceros que no queran que se publicara.
Sun seal que el objetivo era remplazar las partes propietarias con alternativas libres.
4) Apache Harmony
Las dificultades de obtener
una licencia TCK de Sun
El Java SE 5 Technology Compatibility Kit (TCK) se requiere por Sun por licencia de especificacin para Java SE 5.
El TCK impone restricciones de derechos a los lmites del campo de uso disponibles para los usuarios de Harmony, que no cumplen con las reglas del Java Community Process.
Al lanzar el OpenJDK, Sun lanz una licencia especfica para permitir correr el TCK para cualquier derivado GPL del OpenJDK.
La desarmona para Harmony
Entindase que el desacuerdo entre Sun y Apache no es de licencias (Apache License Vs. GNU GPL).
El TCK que ofrece Sun para comprobar a Harmony obliga que el cdigo comprobado no sea abierto. Aunque Harmony se licenciara GPL, el producto resultado de esa comprobacin no puede ser Software Libre.
Harmony no puede usar el TCK para los derivados del OpenJDK, pues es una implementacin desde cero de Java.
Y si de legalidad se trata...
Este problema es especfico de Harmony, pues Apache ha implementado exitosamente otros JSRs como Geronimo, Tomcat y ms.
La licencia que ofrece Sun a Apache viola su Java Specification Participation Agreement dentro del JCP.
El problema persisti para elJSR-316, (Java JEE 6) yApache fue el nico miembroen votar en contra.http://jcp.org/en/jsr/results?id=4821
El lugar de Harmony
en la comunidad
Muchos sealan para qu Harmony, si el OpenJDK est disponible de cualquier manera? http://james.developerblogs.com/ tiene argumentos al respecto.
Mucha informacin de Java permanece cerrada, sobretodo en muy buena parte del sistema de GUI, Swing y JavaFX.
Apache ha preferido dar publicidad a estos temas, en lugar de ir a la corte (que puede hacerlo). Ahora los miembros del JCP saben cun grandes son estos problemas.
Desarrollo actual
Dalvik, la JVM usada en Android es un subset de la biblioteca de clases de Harmony.
Tiene ms del 97% de cobertura de biblioteca de clases Java SE 5 y el toolset del JDK SE 5 desde 2007 (se ofrece desde el 27 de enero de 2010 el Milestone 5.0M12a)
Estn en desarrollo las caractersticas para Java SE 6 desde 2007 y asumen que tendrn la implementacin de Java SE 7 al mismo tiempo que Sun, pues tarda unos 18 meses el JSR de iniciar a completarse.
Descarga y uso para usuarios
http://harmony.apache.org/quickhelp_users.html muestra los enlaces de binarios y fuentes para las arquitecturas soportadas, as como enlaces a las ltimas versiones.
4) Apache Harmony
racle! Qu con Java?
5) Oracle y Java
Estadsticas de Java
A inicios del 2010, Java est en:
Ms de 2,600 millones de computadoras
36,000 millones de celulares y otros dispositivos de mano.
1,600 millones de tarjetas inteligentes.
Incontables sintonizadores, impresoras, cmaras Web, juegos, sistemas de navegacin para autos, terminales de lotera, dispositivos mdicos, cajeros de pago en estacionamientos, y un largusimo etctera.
Cuntos desarrolladores?
En 2003, 3 millones (theServerSide.com)
En 2005, 4.5 millones (entrevista con Mark Herring/SAP)
En 2007, 10 millones (theServerSide.com)
Por qu ya no es posible contar a los desarrolladores?
Diversificacin
Distintas ediciones: Java Card, ME, SE, EE
Distintas JVMs: Wikipedia enumera 22 propietarias y 32 libres (http://en.wikipedia.org/wiki/List_of_Java_virtual_machines)
Lenguajes de la JVM: Wikipedia tiene 9 lenguajes de alto perfil, 20 implementaciones de lenguajes existentes y 28 nuevos.
Adems, proyectos complementarios.
5) Oracle y Java
JavaFX, Java Store...
Lo nico que surge con polticas tan distintas slo genera especulacin. Lo cierto es que el universo Java es demasiado grande como para unilateralmente intentar mover su direccin, empero, se puede.
Java for Business.
Hacia dnde?
Para conocer el desenlace:
www.springhispano.org
www.javamexico.org
www.grails.org.mx
www.planetajava.org
5) Oracle y Java