Grails usa un sistema denominado “convention” que yo traduciría por “acuerdo”, en vez de usar el clásico sistema de configuración con XML y esta es una de sus claras ventajas a la hora de conseguir un rápido desarrollo. Además usa Groovy, un lenguaje de scripting basado en Java, lo cual reduce la cantidad de código necesaria.
Pero no sólo eso, hay otros elementos que ayudan a un desarrollo rápido. El sistema de plugins permite entre otras cosas, instalar un plugin usando simplemente el comando “grails install-plugin XXX” y empezar a utilizarlo sin tener que configurar nada. Hay plugins para muchas cosas, por ejemplo RIA, entendido como usar librerías javascript para mejorar la presentación o hacer llamadas AJAX, también puedes incorporar jasper reports o hacer la presentación con FLEX.
También es muy interesante el uso de plantillas, aunque lo permite, no es necesario generar todo el código necesario para un mantenimiento, o CRUD como dicen algunos, puedes tenerlo definido como plantillas tanto para archivos groovy (controlador) como para archivos gsp (vista).
Para aprender he decido hacer una pequeña aplicación de gestión de las compras de casa. Básicamente es una aplicación para mantener 7 tablas, una de ellas con una relación maestro detalle.
Para desarrollar la aplicación completa he necesitado 4 horas incluyendo en este tiempo la instalación de Grails. Lo que da una medida de la mejora de productividad que conlleva.
Cosas a mejorar:
Facilitar el desarrollo en IDE: Me refiero a syntax highlight, autocompletado, refactor y esas cosas. Hay un plugin para eclipse pero aún le falta mucho. IntelliJ IDEA puede que tenga un entorno de desarrollo mejor para Groovy pero no lo he probado.
Mejorar el control de errores: Como pasa en muchos frameworks los mensajes de error no son claros ni completos o incluso despistan más que ayudan.
Riesgos:
Se trata de un framework muy joven, la versión 1.0 es de febrero de 2008, lo cual implica que es muy dinámico, que hay cosas que pueden cambiar en el futuro o que tu aplicación o tu plugin deje de funcionar dramáticamente si actualizas la versión por un bug del framework. Quiero añadir que este tipo de cosas ha pasado al actualizar a Grails 1.0.2.
Referencias:
Grails : http://grails.org/
Documentación Grails : http://dist.codehaus.org/grails/
Tutorial IBM : http://www.ibm.com/developerworks/java/library/j-grails01158/index.html
Groovy : http://groovy.codehaus.org/