Productividad + Rendimiento + Java = Play! Framework || Experiencia personal

Una vez adentrado al mundo Java EE y cada vez más por comentarios que he ido recibiendo en mis (para unos, des-)afortunadas entradas aquí me he puesto (en parte de este fin de semana) a buscar frameworks web para Java que sean sencillos y muy productivos, sin dejar de lado la capacidad de escalar y el rendimiento. Y cómo muchos sabemos en Java tenemos una variedad de frameworks web y ésta sigue creciendo.

Con conocidos del trabajo pregunté por los frameworks que ellos habían utilizado y entre ellos saltaron nombres cómo Struts 1, Tapestry, Wicket, Click, Spring, Spring MVC, una tonelada de frameworks base JSF, itsnat....en fin hasta que un compañero me dijo: "En java por web frameworks no paramos"; lo que lo considero algo bueno. De ellos me interesaron principalmente Wicket y Tapestry, por la cuestión de los componentes y al parecer los programadores son más felices desarrollando componentes en lugar de algún framework de acción (los cuales no digo que no sean buenos). Sin embargo al meterme a ello he visto que la documentación es poca además que vi (en un blog gallego) esta entrada la cual al principio da pinta de un trolling, pero después de ver varios comentarios me quedó una decepción y dejé de lado Wicket.

Un día andando por aquí y por acá me encontré con una entrada en la que había un tutorial y que trataba una introducción a Spring Roo, lo que me pareció mediamente productivo y sin duda lo mejor que había visto en Java EE hasta ese momento. Era algo genial, apenas aprendías unos cuantos comandos y podías montar un esqueleto de tu aplicación, más aparte no estabas limitado por ello, también puedes hacer cosas a mano. Sin embargo, desde el mundo del scripting en donde (en mi opinión) la vida es más simple; decidí buscar más y me topé con Play! Framework.

¿Qué es Play!?
Play! es un framework web hecho para Java que nos permite hacer muchas cosas siguiendo los paradigmas de otros frameworks de desarrollo web ágil, entre los cuales entran las ideas de otros lenguajes cómo Python, Ruby, Groovy y alguno que seguro se me escapa.
Además es un framework Java, lo que muchas veces nos frena de usar ciertas tecnologías de desarrollo ágil (cómo Grails o Pylons) es el lenguaje de programación. Sin duda en la Web Java es lo más utilizado a nivel mundial en empresas grandes, por lo tanto un framework de Python, de Ruby o de cualquier otro lenguaje que no sea Java, no es una opción.

Es Java estándar, lo que permite que podamos utilizar cualquier librería Java. Así como es posible combinar ciertos frameworks y tecnologías conocidas como webflow, maven, ant, Ivy y muchos otros, para los cuales hay un módulo.

No es Java EE, lo que no es una desventaja, ya que su deployment puede hacerse cómo cualquier otra aplicación EE (en un war subido al webcontainer). No es EE porqué no cumple con la especificación. Sin embargo eso ayuda a que sea lo que Play! es: Un framework de máxima productividad.

¿Errores?, corrige y recarga el navegador. Quizás este (en mi opinión) es una de las mejores prestaciones de Play!, ya que nos permite ver errores de una manera muy explícita:

Y sólo nos bastaría con ir a corregirlo, y recargando el navegador nos es posible ver los cambios.

URL para perfeccionistas. Otra de las cosas que me gustan de Play! es la sencilla forma de configurar las URL. Basta con editar el fichero routes que tiene un aspecto parecido a este:

#Method     URL Path             Controller.Action <br>
POST         /Clientes/Listar     Customer.List

¿Esqueleto de la aplicación?...basta un simple comando y ya está. Algo que muchas veces nos parece tedioso/aburrido es tener que hacer el esqueleto de directorios de nuestro proyecto. Aunque herramientas cómo Maven nos ayudan, a veces hay que hacer algo demás. Con Play! tenemos desde que comenzamos un proyecto una estructura muy bien organizada y pensada, que además puede ser modificada. Esta estructura está pensada en lo básico (Patrón MVC, recursos[imágenes, js, css], configuración, etc.) y basta teclear:
play new MiProyecto

Con una integración muy buena para IDEs. De nada serviría un framework así, de no ser capaz de trabajar con nuestras herramientas favoritas. Podemos decir que el editor "default" de Play! es Textmate. Sin embargo hay un gran soporte para NetBeans, Eclipse y IntelliJIDEA. Para usarlo con Textmate basta con instalar los bundles proporcionados por el creador de Play!, para usarlo con cualquiera de estos 3 IDE basta con ir a consola y teclear:
Para eclipse:
play eclipsify MiProyecto
para netbeans:
play netbeansify MiProyecto
y para IntelliJIDEA:
play idealize MiProyecto

En fin, puedo contarles más sobre este gran framework que me ha ayudado mucho, pero basta ya de extensión.
Sitio del proyecto: http://playframework.org
Sitio del google-group: http://groups.google.com/group/play-framework