Buscar
Social
Ofertas laborales ES
jueves
jun192008

Primera JDK 100% libre: IcedTea

Rich Sharples ha anunciado que IcedTea ha pasado todas las pruebas del Java Test Compatibility Kit, lo que lo certifica como una implementación completa del JDK 6. Esto es en sí importante para los usuarios de Fedora, la distro Linux que usa este JDK. Pero aún más importantes es que esta es la primera JDK 100% opensource.

En 2006 Sun hizo el anuncio de liberar su JDK y para ello crearon el proyecto OpenJDK; sin embargo hasta la fecha no ha sido posible que entreguen una versión con todos los componentes opensource debido a problemas con componentes de terceros cuyos derechos no son de Sun o son difíciles de cambiar de licencia. Debido a ello, RedHat optó en junio de 2007 por crear una versión llamada IcedTea que buscaba construir una versión 100% libre del OpenJDK de Sun. Para esto se basaron en el proyecto GNU Classpath.

Esta semana han conseguido su objetivo, por lo que la llamada "Trampa Java" de Stallman ya no existe más y los desarrolladores que quieran usar Java en sus proyectos opensource pueden hacerlo con la seguridad de que no estar usando alguna librería no libre sin saberlo.

Sharples menciona que el siguiente paso para IcedTea ahora que son una implementación JDK 6 certificada, es integrarse con RedHat Enterprise Linhux, la distribución de pago para servidores que incluye al servidor JEE JBoss. Además seguirán mejorando la JDK para agregar funcionalidades de virtualización y mejorar el rendimiento de JBoss Middleware.

 

jueves
jun192008

¡Sólo queda una semana para el OpenJavaDay!

El jueves que viene comienza el OpenJavaDay 2008, la conferencia Java orientada a desarrolladores organizada por Sun Microsystems Ibérica y javaHispano. Aquí podéis encontrar el programa, y aquí está el enlace de registro.

 

La conferencia se celebrará en la facultad de matemáticas de la Universidad Complutense de Madrid. La conferencia se celebrará en paralelo con el OpenSolarisDay.

 

Aprovecho también la ocasión para recordar a los asistentes que, si tenéis intención de ir alguno de los talleres que se celebran durante la tarde, lo ideal es que llevéis vuestros propios portátiles para seguir el taller. Los organizadores de los talleres se pondrán en contacto con vosotros en breve a este respecto.

¡Nos vemos en Madrid la semana que viene!

miércoles
jun182008

SpringOne 08 Day 2 Report

Hoy me parece que hay más de uno con dolor de cabeza de las cervezas belgas de ayer, pero parece que la gran mayoría de miembros de SpringSource están ahí...o falta alguien? Bueno, empieza la keynote por parte de Adrian Colyer (CTO de SpringSource) y como no, después que todo el mundo le preguntase por el pato del año pasado, dice que desgraciadamente no ha podido venir pero que tendremos otro invitado, así que entra Rob Harrop en escena.

Se preguntan que después de desarrollar un framework que es un estándar por defacto se van a quedar ahí. Spring nos ofrece poder modularizar una gran aplicación, pero cuando desplegamos nuestra aplicación todos estos módulos desaparecen, convirtiéndose en un simple WAR, por lo que la modularidad desaparece. Aquí es cuando entra en juego OSGi y SpringSource ApplicationPlatform.

La única estrella de hoy, es sin duda SpringSource Application Platform, así que voy a hacer un resumen global de la keynote, y las siguientes tres presentaciones (ya que se pisaban unas con otras; frases como "oye Sam, esto lo has explicado en tu presentación?" era frecuentes :P)

Introduction to the SpringSource Application Platform por Andy Wilkinson
Building Web Applications with the SpringSource Application Platform por Sam Brannen
Inside SpringSource Application Platform por Rob Harrop

El SpringSource Application Platform es un servidor de aplicaciones completamente basado en módulos para Java. Se sustenta en lo que le llaman SpringSource Dynamic Module Kernel que proporciona un backbone basado en módulos para el servidor, este kernel esta basado en Eclipse Equinox, extendiendo su control de módulos y versiones. Utiliza Tomcat por debajo. No hace falta decir que todo el sistema se basa en OSGi.

Se comentan las modificaciones y extensiones que han realizado en Equinox, como por ejemplo la super difícil tarea de hacer Equinox thread-safe y las propiedades Import-Library / Import-Bundle del Manifest OSGi. Este kernel se encarga básicamente de la concurrencia, IO, configuración (curiosamente la configuración se hace con JSON en vez de XML) y gestión de perfiles (los perfiles definen los subsistemas de una instancia concreta; por ahora solo esta definido el perfil web, pero más adelante tendremos por ejemplo el perfil webservice; se pueden definir perfiles personales también).

Durante las tres sesiones se han realizado bastantes demostraciones para aclarar todo el funcionamiento

Deplegar aplicaciones, cuales y como


Podemos desplegar cualquier tipo de aplicaciones: un bundle OSGi: se puede tratar de una librería stand-alone expuesta como módulo del sistema (imaginemos el módulo de Hibernate) o cualquier servicio que queramos publicar globalmente en el contenedor OSGi; Platform Archive (PAR): es el formato para empaquetar los módulos de un sistema, realmente es un JAR y lo podemos comparar con los EAR pero en el contexto de un contenedor OSGi, con el beneficio de poder actualizar cada módulo dentro del PAR independientemente; y finalmente una aplicación web clásica: WAR: realmente lo que hace es transformar el WAR en un módulo OSGi internamente.

Se hicieron diferentes demos de despliegue de una misma aplicación en las versiones: un WAR simple, un WAR con dependencias compartidas como módulos, un WAR con servicios y dependencias compartidas y un módulo web (PAR).

Para realizar el despliegue de una aplicación se puede hacer en caliente, simplemente copiando la aplicación en el directorio pickup del servidor o bien a través de la consola de administración (tiene un campo para subir la aplicación y se encarga de desplegarla)

Serviceability


Han separado lo que es el trace de los logs. El trace es una información muy detallada de todo lo que pasa al sistema que se encuentra en serviceability/trace. Los logs son realmente mensajes breves preparados para diagnosticar y ver el estado de la plataforma (sin tener que navegar entre gigas y gigas de logs, para eso existen los archivos de trace), una línea de log tiene esta pinta:
[2008-06-13 17:28:59.096] fs-watcher Creating web application '/admin'.
Si nos fijamos, cada línea tiene un código dónde la última I expresa que es un mensaje de información, podemos encontrar W de warning o E de error.
Lo bueno es que se crean archivos de trace para cada aplicación independiente.

Otra buena funcionalidad son los dumps, que son capturas del estado de la plataforma en un momento concreto, y se hacen automáticamente cuando se identifica un fallo o cuando se encuentra un thread dead-lock. En los dumps podemos encontrar por ejemplo el stack de thread que están corriendo con todo su estado. Todo el dump esta en formato JSON.

Una cosa que me hizo gracia es el mensaje que genera cuando compilamos y nos da un ClassNotFoundException (han redefinido la clase) que nos muestra un: Did you mean? com.clase, al estilo de google

Classloading

El clásico class loading se basa en un modelo de delegación lineal jerárquica (parental), donde una clase es cargada por solo un ClassLoader (no existe el versionado). OSGi tiene un sistema más complejo de classloading, que es lo que permite el versionado, la modularidad y el todo el sistema dinámico.
Cada módulo OSGi tiene su propio ClassLoader y extiende el modelo parent first delegation con su modelo networked delegation. Esto supone que para cargar una clase se puede hacer de dos maneras: del ClassLoader padre o del ClassLoader de otro bundle (módulo). Como se determina? Con las reglas de delegación de la especificación OSGi. Básicamente, se especifica que todas la clases java.* se cargan a través del ClassLoader padre y todas las otras a través de los ClassLoaders de los otros bundles (un bundle solo mira los classloaders de los bundles de los que depende).
Estas reglas se pueden modificar para obtener otros comportamientos.

Con este pequeño resumen os quería preguntar si encontrais interesante que se hiciese alguna ponencia / sesión de OSGi y el SpringSource Application Platform al estilo de lo que se hizo en SpringOne, durante el OpenJavaDay de la semana que viene. Quien se apuntaría y lo encuentra interesante? Espero vuestras opiniones!

miércoles
jun182008

Un poco mas de hielo: ICEfaces 1.7.1

Ayer se lanzo una version de mantenimiento de ICEfaces, aunque solo se agrego un 0.0.1 al versionado, esta vez corrigieron mas de 100 bugs y agregaron varias nuevas caracteristicas. Entre ellas estan:

  •  Nueva API SessionRenderer para realizar AJAX push de forma mucho mas simple, esto es para aquellas aplicaciones que solo necesitan un poco de push sin tanta complejidad. Claro esta, la API RenderManager sigue existiendo si utilizara para cosas complejas. En esta siemplemente agregas la session del usuario a un grupo y luego das render() cuando necesites que ese grupo actualice algo.
  • Nueva API Broadcast para hacer lo que su nombre dice una vez mas de forma sencilla, simplemente render() y todos los usuarios en linea de la aplicacion se actualizaran. Ideal para hacer un chat general o para eventos generales.
  • Nuevos componentes outputHtml, outputHead, y outputBody especialmente para entornos de desarrollo que requieren una pagina 100% JSF como en el caso de Netbeans y Visual Web Pack.
  • Integracion Beta para netbeans 6.1.Esto permite utilizar el visual web pack para trabajar con ICEfaces en netbeans 6.1. Esto se demoro en salir por todas las mejora y modificaciones que tiene Netbeans 6.1
  • Soporte oficial para Firefox 3 y Opera 9.5. Debo decir que las aplicaciones en estos browser son rapidisimas.
  • Soporte para Glassfish Grizzly ARP
  • Esta version incluye un soporte basico para Spring Web Flow 2.0final
  • Soporta tambien el componente mail de Seam Framework y los workspaces (nose que es esto)
Asi que hay tenemos una "simple" version de mantenimiento. Ya tengo unos 5 meses utilizando ICEfaces, y debo decir que la mayoria de cosas han sido gratas sorpresas. Ahora con soporte para Netbeans 6.1 y muchas mejoras hay todavia mas sorpresa. Obviamente no todo es color de rosa, porque aveces hay cosas misteriosas que pasan y despues se arreglan (eto debe ser culpa mia). xD
miércoles
jun182008

JavaRa Curiosa aplicación para gestionar JREs

Cada vez que hay una actualización nueva del JRE se descarga una versión nueva completa y se mantiene la anterior; es decir, si tienes instalado el JRE 1.6.0_04 y te bajas la siguiente versión seguirás teniendo este JRE y el 1.6.0_05. Este es el comportamiento por defecto, al menos en Windows. Y es sorprendente la gran cantidad de JREs que puedes llegar a acumular.

 

El motivo por el que los de Sun hacen esto es para garantizar que no rompen nada en tu sistema. Existe una pequeña posibilidad de que una aplicación Java funcione correctamente con una versión anterior, y no con la siguiente. Y, más a menudo, algunas aplicaciones emplean el path del JRE para acceder a él, en vez de emplear alguna variable de entorno. Si cambian el nombre del directorio, la aplicación deja de funcionar.

JavaRa es una simple aplicación gráfica para Windows que, entre otras cosillas, te permite eliminar todos los JREs "viejos" de tu sistema. En mi caso, encontró y eliminó tres. No es qué haga nada del otro mundo, ni nada que no se pudiese hacer a mano. Pero es una herramienta más para añadir a nuestro toolkit.