Beginning Groovy and Grails. From novice to professional
Autores: Christopher M. Judd, Joseph Faisal Nusairat y James Shingler
Apress, junio 2008
http://beginninggroovyandgrails.com/
Disclaimer
Con esta revisión, empezamos un trato con la editorial Apress para revisar libros de ellos. El trato es muy simple, ellos nos proporcionan los libros con la única condicionante de publicar aquí una revisión de los mismos. En ningún momento se condiciona a que la revisión sea favorable o se nos marca una pauta a seguir, javaHispano conserva la independencia editorial que siempre hemos tenido. Si todo marcha bien, este es solo la primera revisión de un libro de Apress y en el futuro publicaremos otras realizadas por otros miembros de javaHispano.
Este libro está enfocado a aquellos que quieren empezar a usar Grails para desarrollo web y no tienen ninguna experiencia con dicha tecnología ni con el lenguaje Groovy. En la introducción los autores lo dejan claro: "... nos dimos cuenta que los desarrolladores sin conocimiento sobre Groovy y posiblemente poco o ningún conocimiento sobre la plataforma y lenguaje Java necesitan una guía para guiarlos en la jornada de volverse rápidamente productivos con Groovy y Grails"
El libro está dividido en 13 capítulos, los tres primeros sobre Groovy y el resto sobre Grails. En los capítulos sobre Groovy se da una introducción a este lenguaje dinámico, se explica como se instala, las diferencias con Java y lo clásico cuando se ve un nuevo lenguaje: sintaxis, operadores, condicionales, etc. En el tercer capítulo se introducen algunas de las características avanzadas del lenguaje que realmente lo hacen resaltar entre la gama de lenguajes que se ejecutan en la JVM, por ejemplo su integración con JUnit, su soporte para XML y templates, su capacidad para generar Domain-Specific Languages (DSLs), los expandos y el Groovy Meta Object Protocol (MOP) que permite añadir propiedades y métodos a clases existentes en runtime.
Estos capítulos están escritos de una forma muy dinámica y mediante ejemplos de código, la idea es que te permitan empezar a programar de inmediato. Por ello, no esperes largas explicaciones sobre cómo funciona Groovy internamente, ni capítulos sobre DSL o MOP, los autores se enfocaron a que empiezes a usar Groovy de forma rápida sin detenerse a explicar demasiada teoría. Así que si quieres adentrarte más en el lenguaje y conocer todas sus características, es más recomendable recurrir al libro Groovy in Action, como los mismos autores recomiendan. Por otro lado, lo que verás de Groovy aquí es más que suficiente para empezar a desarrollar aplicaciones web.
Si el lenguaje Groovy se toca someramente, lo mismo no sucede con el framework Grails. Este libro es una gran guía de referencia sobre esta plataforma para desarrollo web ágil. Estos capítulos están organizados como un tutorial durante el cual se construye una aplicación web llamada collab-todo que es una aplicación web 2.0 para gestión de listas de tareas por realizar (To-do's). Como buena aplicación web 2.0, involucra uso de CSS para maquetación, de Ajax para darle dinamismo a las pantallas, de casos de uso colaborativos entre los usuarios, etc. y como buena aplicación java, se usan pruebas unitarias y de integración, arquitectura en capas, seguridad, etc. De esta forma, los autores nos van adentrando a las bondades de Grails para atacar cada una de estas necesidades.
Así en el capítulo 4 "Introducción a Grails", se explican los conceptos detrás del framework, se explica como se instala y mediante los comandos de consola de Grails se construye la aplicación, los objetos de la capa de dominio y los controladores (usando scafolding) y pruebas de integración para probarlos. Al terminar el capítulo, tenemos ya la aplicación lista y levantada. En el siguiente capítulo "Construyendo la interfaz de usuario", los autores nos adentran en las GSP (Groovy Server Pages) y en las bibliotecas de tags de Grails. Nos explican como sacar provecho del sistema de templates de Grails (basado en SiteMesh), realizar pruebas tanto de integración como directamente en la capa web usando el plugin de Canoo WebTest, el sistema de Flash messages y la gestión de errores, el uso de properties para externalizar los textos de la aplicación y el uso de filtros e interceptores.
El capítulo 6 está enfocado a la capa de dominio y a la de servicios. La parte de la capa de dominio es un extenso tutorial sobre GORM la librería ORM de Grails basada en Hibernate. De la mano del libro, aprenderemos a usar características avanzadas como restricciones, validaciones, queries dinámicos, etc. En la parte de servicios, se hace una breve explicación a como se manejan los servicios en Grails y cómo sacarles provecho mediante el uso de características de Spring.
El capítulo 7 está enfocado en la Seguridad y para ello se usan 4 enfoques: el primero es hacer un sistema de seguridad personalizado usando filtros e interceptores. El segundo usa el plugin JSecurity, el tercero el plugin CAS y por último se demuestra como usar el plugin de SpringSecurity. Por ahora, JSecurity parece ser el que tiene mejor integración con Grails.
El capítulo 8 se titula "Web 2.0 - Ajax y amigos" y cubre varias características de Grails que ayudan a implementar este tipo de funcionalidades. De esta forma, se enseña el uso del FCK editor con Grails, del plugin Searchable, file uploading, envío de correos, creación de bibliotecas de tags y el uso de algunas características Ajax interesantes como un autocomplete.
El noveno capítulo, me resulto bastante interesante ya que en él se muesta cómo construir servicios web RESTful de forma simple y sencilla usando Grails. Esta es sin duda una de las características que más me gusto del framework.
El capítulo 10 es sobre la creación de informes (Reports). Lo interesante de este capítulo, es que no solo habla de las capacidades de Grails sobre este tema; sino que es todo un tutorial sobre JasperReports: desde cómo instalarlo, cómo usar iReport para generar las plantillas de los informes, cómo compilarlos, etc. Por último, se integra esta librería a Grails mediante la construcción de un Tag, un Controller y un Service. De forma extraña, al final del capítulo se menciona que este trabajo nos lo hubieramos podido haber ahorrado de usar el plugin para Jasper existente, aunque de cualquier forma se agradece que los autores te enseñen a hacerlo a mano tu mismo antes de decirte la solución fácil.
El capítulo 11 toca otra característca interesante de Grails: el plugin de Quartz para calendarizar procesos. Quartz es una librería que siempre me ha gustado mucho y me agradó ver que se integra fácilmente con el framework y que -sobre todo- dicha integración te facilita mucho usarla. Me pareció un acierto que los autores incluyeran un capítulo para enseñar a usarla, ya que en la vida real siempre se acaba haciendo un poco de procesamiento batch y ejecución de procesos con un timer.
El capítulo 12 está enfocado a "Deploying and upgrading", por lo que muestran los mecanismos para configurar estos dos procesos, los comandos de consola para hacerlo e incluso se da una introducción muy breve a GANT, el wrapper de ANT que usa Groovy para crear scripts de compilación.
Por último, el capítulo 13 trata sobre la construcción de un cliente standalone usando SwingXBuilder que se conecta a la aplicación mediante los servicios web desarrollados. Como se ve, esto ya poco tiene que ver con Grails y se trata más de mostrar como consumir servicios web con Groovy, así como de ver las bondades de Groovy para simplificar el desarrollo de aplicaciones de escritorio.
Como en todo libro técnico, existen errata y actualizaciones. Para ello, en el sitio web del libro encontré todas las correcciones necesarias para que el código funcionase con la versión actual de Grails (1.0.3), lo que resultó muy conveniente cuando me encontraba con errores inexplicables.
Desde mi punto de vista, el libro logra muy bien su objetivo: que el desarrollador pueda ponerse manos a la obra y empiece a desarrollar con estas tecnologías ágiles. El libro es muy fácil de leer y te va guiando siempre a través de código fuente, por lo que en ningún momento resulta lento ni tedioso. Yo lo calificaría como un tutorial de 300 páginas sobre Grails que logra cubrir las características de dicho framework necesarias para la mayoría de las aplicaciones web. Por lo que es un recurso invaluable para aquellos que como yo desean aprender a usar desde cero Grails. Si tu ya eres un usuario de la plataforma, lo recomendaría sólo en caso de que quieras aprender a usar alguna de los plugins usados.
Como ya mencioné, una de sus debilidades es su discreto contenido sobre Groovy. Otra es que se queda en la parte de "usuario de Grails" y no cubre aspectos sobre cómo crear y distribuir plugins de esta tecnología. Por otro lado, como la misma editorial lo indica en el roadmap que acompaña al libro, este se considera como una introducción a Grails y después se recomienda leer el libro "The Definitive Guide to Grails" de Graeme Rocher (cuya segunda edición actualizada aparecerá en 2009).