Gavin King.

Gavin es posiblemente la persona con mayor liderazgo a nivel mundial en el área de Java empresarial. Saltó a la fama por desarrollar Hibernate, un framework open source para ORM (mapeo objeto-relacional). Actualmente labora en JBoss – que ahora es parte de Red Hat–, dirigiendo el desarrollo de Seam, un framework para desarrollo de aplicaciones web. Gavin también dirige el desarrollo del JSR-299 (Web Beans), y representa a Red Hat en el desarrollo de las especificaciones de JSF 2.0, EJB 3.1 y JPA 2.0.

¿Por qué nos deberíamos interesar en Seam?
Hay dos cosas únicas sobre Seam. La primera es que es el único modelo integrado de programación construido alrededor de estándares de Java. Y cuando digo integrado, no me refiero simplemente a que permita ejecutar varias tecnologías de forma conjunta, sino a tener un modelo de componentes unificado, que pueda ser utilizado por diferentes servicios (GUI, BPM, persistencia, etc). Seam es la primera iteración de este modelo. La segunda iteración es lo que se convertirá en el estándar Web Beans. Lo otro que hace especial a Seam es su arquitectura, que está especialmente diseñada para el manejo de estados. Las arquitecturas web tradicionales utilizan un enfoque sin estados (stateless), lo cual considero ridículo ya que un objeto sin estado es una contradicción. Lo que sucede en la mayoría de los casos es que los desarrolladores tienen que implementar manualmente la gestión de estados en sus aplicaciones.

¿Que está pasando en el área de ORM?
Creo que el tema de la persistencia de objetos está resuelto, y que la industria ha decidido que ORM es la estrategia adecuada. Cuando desarrollas sistemas que requieren utilizar datos legados, realmente no tienes otra opción más que usar ORM (a menos de que quieras escribir código JDBC a mano, lo cual es tedioso, poco productivo, y difícil de mantener). Para aquellos casos donde no se necesita incorporar datos legados, utilizar ORM ya es casi tan sencillo como usar una base orientada a objetos, con la ventaja adicional de que otras aplicaciones externas pueden aprovechar tu modelo relacional.

Creo que el principal problema de ORM que queda por resolver (y que estamos atacando en Seam) es la falta de un buen modelo para manejar contextos de persistencia extendida a través de una transacción. Hasta ahora, los desarrolladores tienen que lidiar con el uso de LazyInitializationException, NonUniqueObjectException, y similares, sin darse cuenta de que en el fondo esto es una limitación de la arquitectura que están usando. Esto puede ser resuelto con un modelo de programación conversacional, consciente de estado, como el que utiliza Seam o Web Beans.

¿Qué impacto ha tenido que Java se haya abierto como software libre?
Creo que todavía es muy temprano para concluir algo al respecto. A largo plazo, podría ser grandioso para Java. Todo depende de que tan buen trabajo se haga para incorporar la innovación que surja de esto. Afortunadamente, Java todavía lleva mucha ventaja respecto a tecnologías competidoras, especialmente cuando se trata del desarrollo de aplicaciones empresariales de gran escala. Los lenguajes de scripting están de moda, pero éstos tienen limitaciones bien sabidas y documentadas, y nadie cuerdo usaría un lenguaje de scripting para un proyecto con más de 3 desarrolladores y un ciclo de desarrollo de más de un año. Yo soy un gran fan de Groovy, pero estoy consciente de que complementa a Java, no compite con él. De ninguna manera soy fan de Ruby, ni de Rails, creo que se les está dando mucho más crédito del que merecen.

Muchos equipos de desarrollo están optando por simplemente usar un web container como Tomcat en lugar de un servidor de aplicaciones Java EE completo. ¿Consideras que Java EE ya está “sobrado”?
Cualquier software maduro puede ser considerado como sobrado. Después de un par de años en el mercado, cualquier software empieza a desarrollar funcionalidad que solo es requerida por el 10% de los usuarios, y por lo tanto no requerida por el 90%. Sin embargo, el hecho es que casi cada usuario depende de un 10% diferente de la funcionalidad. Es así que para cada usuario individual, el software parece estar sobrado, pero entre todos no se pueden poner de acuerdo en qué parte(s) son las que sobran.

¿Quién es la persona en la industria de software que más admiras?
Si no se me permite mencionar a mis amigos, entonces diría que Kent Beck. Su trabajo ha tenido un enorme impacto positivo en la industria. Pero en realidad, la persona a las que más respeto es Marc Fleury (fundador de JBoss que recientemente se retiró). Marc construyó una empresa a partir de la nada, y para la mayoría de los que formamos parte de ella, fue la empresa más humana y emocionante para la que hemos trabajado.