Java 2010: presente, límites y futuro

download Java 2010: presente, límites y futuro

If you can't read please download the document

Transcript of Java 2010: presente, límites y futuro

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