martes, junio 26, 2007

Sesión con Eduard Pelegrí en Madrid


Antes que nada, agradecer a Jaime Cid que nos invitara a asistir a la sesión que ha organizado en la sede de Sun en Madrid, aprovechando que Eduard Pelegrí venía a España para el Java Symposium que TheServerSide organiza un año más en Barcelona y que comienza el próximo miércoles. Y por supuesto, agradecer a Eduardo el gran esfuerzo que ha hecho, pues vino ayer de San Francisco y con una copiosa comida (en comparación con los "light lunchs" americanos) en un día caluroso no parece la situación ideal para hacer una presentación (que se hace en una cierta penumbra).



Yo destacaría sobre todo la modestia de alguien con la trayectoria de Eduard y el entusiasmo que transmite en el proyecto Glassfish y el movimiento de comunidades y open source. En este sentido, tanto Jaime como Eduard han comentado los contactos que han comenzado a establecer con javahispano con la intención de crear una comunidad de usuarios de Glassfish "en español".



En cuanto a la sesión en sí misma, Eduard comenzó haciendo una pequeña revisión histórica de cómo se pasa de Netscape Application Server al Sun Java System Application Server 9.x. (Revisión necesaria yo creo que incluso para los que trabajan en Sun porque han cambiado más de nombre que "el artista antes llamado Prince"). La verdad es que es curioso comprobar cómo han tratado (sin conseguirlo del todo) desembarazarse de lo peor de iPlanet y aportando la "savia nueva" de equipos que venían de proyectos Open source como Tomcat...



Siguió su exposición hablando sobre los grandes grupos de avances incorporados a Glassfish:

  • Todo lo relacionado con entornos "enterprise", e.d., alta disponibilidad, clustering...
  • Webservices y XML
  • La capa web
  • Seguridad
  • Rendimiento, tiempo de arranque y otras "curiosidades" que podremos ver en v3
Finalmente nos hizo un repaso de los proyectos de la comunidad Glassfish que él considera de mayor relevancia (como JSFTemplating, Woodstock, Open Message Queue, Hudson, jMaki, Rome, WADL...).





Hoy es un poco tarde ya (incluso para mi) y por eso seguiré mañana (quizás hoy) extendiéndome un poco sobre cada uno de los apartados que antes mencioné. Cogeré mis notas y trataré de elaborarlas un poco más.



Eché a faltar un poco de información concreta sobre los planes de Glassfish y Java CAPS. (Le preguntaré en cuanto tenga un poco de tiempo "libre").



Como resumen de la sesión me quedo con un "slogan" que dijo Eduard:

Glassfish ofrece la calidad de Weblogic con el precio de JBoss.


Lo dijo él, ¡eh! :-)

sábado, junio 16, 2007

Desarrollo Orientado a las Pruebas

El martes (19/06/2007) y el miércoles voy a impartir en Degesys (a nivel interno) un pequeño taller sobre TDD (Test-Driven Development) y cómo lo estamos ya introduciendo en nuestras buenas prácticas y procedimientos.



El índice del mismo será el siguiente:



Día 1

  • Introducción
    • ¿Qué es TDD? (1)
    • ¿Qué es TDD? (2)
    • ¿Qué tiene que ver con Integración Continua?
    • Tipos de pruebas (1)
    • Tipos de pruebas (2)
    • Frameworks Java
    • JUnit
  • TestFirstChallenge
  • LAB-1

Día 2

  • Dobles: Mocks, Dummies...
    • Ejemplos con EasyMock (1)
    • Ejemplos con EasyMock (2)
  • LAB-2
  • Code Coverage
    • Code Coverage con Cobertura
  • Referencias



Debido a que estamos aún "en construcción" en la nueva web de Degesys, no podré "colgar" la presentación, pero si alguien tiene interés, estaré encantado de hacérsela llegar así como los ejemplos que voy a usar en el taller.

martes, junio 12, 2007

Degesys : Nueva imagen

La compañía para la que trabajo actualmente (y espero que por mucho tiempo), Degesys, ha actualizado su imagen corporativa gracias a Hache Marketing y éste es el resultado:





Esto es sólo una primera fase porque aún está pendiente que tanto el Departamento de Sistemas como el de Desarrollo pongamos contenidos técnicos relacionados con los avances tecnológicos que estamos consiguiendo en los pocos meses de vida de la compañía.

TS-3559

Este fin de semana, mi colega Stephane me ha enseñado la presentación que Adam Bien ha expuesto en la última JavaOne titulada (ahí va el título) :
Java 6 Platform, Java DB, Swing, JNLP / Java Web Start, Java Persistence API (JPA) / Enterprise JavaBeans (EJB) 3 : The New "Operating System" for Rich Internet Applications.

En esta presentación, el autor (que es un miembro de la comunidad de Java Champions) explica una arquitectura para aplicaciones basada en los siguientes principios:

  • Domain Driven Design (Diseño guiado por el dominio): se refiere a que los objetos que modelan el negocio (patrón Business Object) representan el estado del negocio e incluye cierto comportamiento (auto-validaciones, manejo de relaciones con otros objetos de dominio dependientes, CRUD). No sé si tiene algo que ver con los libros de igual título ("Domain-Driven Design" y "Applying Domain-Driven Design and Patterns").
  • Implementación de los objetos de dominio como entidades JPA.
  • Otra lógica más allá de la que un objeto de dominio sea capaz de resolver por si mismo se debe implementar como una fachada (POJOs o stateless/stateful session beans). Estamos hablando del acceso al EntityManager de JPA, de la transaccionalidad, seguridad, trazas de auditoría...
  • No se usan DTOs (patrón Transfer Object) sino que los objetos de dominio viajan desde la capa de negocio hasta la capa de presentación sin el sobrecoste de las transformaciones o las copias de valores.


La diapositiva 18 es especialmente clarificadora. Sin embargo, le he preguntado directamente a Adam Bien cómo encaja esta propuesta en una arquitectura orientada a servicios (SOA). Su respuesta ha sido que los servicios deben implementar lógica no relacionada con los objetos de dominio, mientras que las fachadas (o gateways, implementadas como SFSB) se encargan de lógica independiente de la instancia (como el CRUD) y exponen directamente entidades JPA (los objetos de dominio), que se almacenan localmente.



Me queda pendiente preguntarle cómo resolveríamos los problemas de concurrencia que provocaría un webservice que modificara registros en la base de datos que, a su vez, correspondieran a objetos de dominio presentes en la sesión de una de esas SFSB.


jueves, junio 07, 2007

JSFTemplating

Vaya, parece que por fin Sun ha reconocido que con JSF tal cual no vamos a ningún lado. El intento de usar Facelets no está llevando a ningún sitio (al menos a ninguno bueno) y han decidido apoyar JSFTemplating. Lo que no entiendo es por qué no lo han incorporado en JSF 1.2.



Voy a intentar sacar un rato (quizás la semana que viene) para probarlo porque la combinación ADF+JSF+Facelets me tiene bastante frito...



Desde luego, si hace todo lo que promete la presentación, es bastante potente, aunque sigo sin ver que me permita hacer lo que me dejaba hacer Tiles+Struts (definir y componer plantillas parametrizables).

JAX-WS vs Axis2

He encontrado una comparativa entre JAX-WS 2.1 + JAXB (Glassfish) vs Axis2 1.1.1 + XMLBeans y resulta bastante evidente que el rendimiento de JAX-WS es bastante mejor que el de Axis2, sin embargo, me queda la duda de qué ocurriría si esta comparativa la hiciera alguien de Apache Axis2...

Project GlassFish
¿Alguno conocéis otras comparativas? Nosotros, en DEGESYS, sólo estamos usando Glassfish y no hemos tenido la oportunidad de comparar. Por cierto, si tuviera... digamos 4 horas... para hacer esta comparativa... ¿alguien tiene una receta para instalar Axis2 y probarlo en ese margen de tiempo? :-)

De todos modos, me quedo con el último comentario en el artículo antes mencionado. Dice que sería mejor comparar JAX-WS RI (la implementación de referencia incluida en Glassfish) con Axis2 cuando éste incorpore el módulo con la implementación de JAX-WS. (Creo que ya lo incorpora, pero no he tenido tiempo de comprobarlo: en la web de Axis2 dicen "JAX-WS intregration"...)