Introducción
Últimamente han estado muy de moda los lenguajes dinámicos e interpretados, ya que se combinan muy bien con la programación ágil que tan necesaria es en estos días. En esta ocasión, nos centraremos en conocer el lenguaje Groovy y más concretamente, el framework Grails.
Groovy es un lenguaje de programación orientado a objetos que está implementado sobre la plataforma de Java, y por lo tanto para su ejecución necesita de una máquina virtual de Java (JVM). Tiene características muy parecidas a Perl, Ruby y Python, aunque su sintaxis es muy similar a la de Java, y una de las principales ventajas es que puede tener acceso a todas las librerías existentes de Java (que son muchísimas). La versión estable más reciente al momento de escribir este artículo es la 1.6.
Grails por su parte, es un framework para aplicaciones web desarrollado sobre Groovy orientado al patrón de diseño MVC (Modelo-Vista-Controlador). Es un marco de trabajo muy productivo y se basa en paradigmas como la convención sobre configuración y no te repitas (DRY por sus siglas en inglés), y proporciona un entorno de desarrollo estandarizado y oculta gran parte de los detalles de configuración al programador. Es un marco de trabajo muy estable ya que se está construido a partir de librerías ampliamente utilizadas en el mundo de Java, como son Hibernate y Spring.
En el siguiente tutorial crearemos un proyecto muy sencillo con Grails para mostrar la funcionalidad básica.
Instalando Groovy y Grails
Para instalar Groovy es necesario realizar los siguientes pasos:
- Primero, es necesario descargar una distribución binaria y luego descomprimirla en alguna carpeta.
- Establecer la variable de ambiente GROOVY_HOME hacia la carpeta donde lo descomprimimos.
- Agregar GROOVY_HOME/bin a la variable de ambiente PATH del sistema operativo.
- Establecer la variable JAVA_HOME al directorio de instalación del JDK. En Windows esto es normalmente en c:\Archivos de Programa\Java\jdk[versión instalada], en el OS X se instala normalmente en /Library/Java/Home y en Linux en /usr/java.
Posteriormente, necesitaremos instalar Grails siguiendo estas instrucciones:
- Descarga la versión más reciente de Grails.
- Extrae los archivos en alguna carpeta del sistema.
- Crea la variable de ambiente GRAILS_HOME que apunte a la carpeta donde se descomprimieron los archivos.
- Anexa GRAILS_HOME\bin al PATH del sistema.
- Teclea “grails” en la línea de comandos y si sale un mensaje de ayuda, ya todo estará instalado correctamente.
Es importante notar que como se mencionó anteriormente, Groovy se ejecuta sobre la plataforma de Java, por lo tanto es necesario tener instalado el JDK que puede ser descargado desde la página de Sun.
Creando el proyecto
Una vez que ya está instalado todo, podemos empezar a programar con Grails. Para crear un proyecto, primero nos situamos en la carpeta donde queremos crearlo mediante la línea de comandos y luego tecleamos lo siguiente:
Se te preguntará por el nombre del proyecto y se generará un proyecto con la siguiente estructura:
%CARPETA_PROYECTO%
+ grails-app
+ conf --- Archivos de configuración
+ hibernate --- Configuración opcional de Hibernate
+ spring --- Configuración opcional de Spring
+ controllers --- Directorio para los controladores
+ domain --- Directorio para los objetos de dominio (modelo)
+ i18n --- Directorio para los mensajes para localizar la aplicación
+ services --- Directorio para los servicios
+ taglib --- Directorio para las librerías de etiquetas
+ util --- Directorio para utilerías diversas
+ views --- Directorio para las vistas
+ layouts --- Directorio para las vistas maestras
+ lib
+ scripts --- Directorio para scripts
+ src
+ groovy --- Opcional: archivos de Groovy adicionales.
+ java --- Opcional: archivos Java
+ test --- Clases generadas para realizar pruebas
+ web-app
+ WEB-INF
Configurando un Origen de Datos (opcional)
El script “create-app” creó un archivo de configuración del origen de datos en el directorio “/grails-app/conf” con el nombre de DataSource.groovy con closures (link para más información en inglés) para cada uno de los ambientes estándar: Desarrollo (Development), Pruebas (TestData) y Producción (Production). Todos los ejemplos de este artículo utilizan el ambiente de Desarrollo.
Por defecto, todos los orígenes de datos están configurados para utilizar la base de datos HSQLDB (excelente para realizar pruebas, pero talvez no tan útil para producción).
dataSource {
pooled = false
driverClassName = "org.hsqldb.jdbcDriver"
username = "sa"
password = ""
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:prodDb;shutdown=true"
}
}
}
Para configurar otro origen de datos sólo se necesita cambiar los valores de “url” para seleccionar la base de datos deseada y poner el archivo jar del driver en la carpeta “lib”.
Creando una clase de Dominio
Asegúrate de estar en el directorio raíz del proyecto y teclea lo siguiente:
cd tutorial1
grails create-domain-class
El comando nos preguntará el nombre de la clase que será creada. Respondamos al comando con “libro”, lo que nos generará el archivo Libro.groovy en el directorio “Domain” del proyecto. Es un archivo de texto plano, por lo que puede ser editado con cualquier editor de texto.
Nota: Para nombrar tus clases de dominio, no se deben utilizar nombres de palabras clave de la base de datos. Tampoco se deben utilizar nombres como por ejemplo MILibro (que tengan dos o más letras mayúsculas al inicio), pero MiLibro es completamente permitido. Aparentemente Grails tiene problemas con ese tipo de nombres, ya que a veces se generan errores 404 (página no encontrada).
Una clase de dominio es un elemento persistente y todas sus propiedades son guardadas automáticamente a la base de datos.
Pongamos lo siguiente en el archivo Libro.groovy:
class Libro {
String titulo
String autor
}
En este punto, probablemente sea buena idea tener datos para poder realizar pruebas. Una forma fácil de hacerlo es utilizando el método “init” del archivo “conf/BootStrap.groovy” como se muestra a continuación:
class BootStrap {
def init = { servletContext ->
new Libro(titulo:'100 años de soledad', autor:'Gabriel García Márquez').save()
new Libro(titulo:'La casa de los espíritus', autor:'Isabel Allende').save()
}
def destroy = { }
}
Creando un Controlador
Los controladores son la parte central de las aplicaciones de Grails, ya que ellos controlan las peticiones que reciben de parte de los navegadores y los mapean a las clases y métodos correspondientes.
En este paso es necesario que ejecutes el comando “grails create-controller” y de nuevo se te pedirá un nombre para el controlador a crear. En nuestro caso tecleamos “Libro” lo que nos generará el archivo “grails-app/controllers/LibroController.groovy”.
Como siguiente paso, abrimos el archivo recién generado y utilizaremos una característica de Grails llamada Scaffolding para generar parte de la aplicación dinámicamente en tiempo de ejecución.
class LibroController {
def scaffold = Libro
}
Nota:Es necesario quitar o comentar el código “def index = {}” que existe en el archivo para que funcione correctamente el Scaffolding.
También podriamos haber hecho uso del comando “grails generate-all” (recuerda que siempre se deben ejecutar en el directorio raíz del proyecto), el cual crearía todos los archivos necesarios por ti (controlador, vistas).
Resultado final
Por último, sólo nos resta ejecutar el servidor integrado de rails para ver el resultado final de nuestra aplicación web:
Esto iniciará una instancia del servidor web integrado y que escuchará las peticiones en el puerto 8080. Si deseas que escuche en otro puerto, necesitas indicarle la configuración al momento de ejecutarlo:
grails -Dserver.port=8090 run-app
Para visualizar la lista de libros escribe en tu navegador la siguiente dirección:
http://localhost:8080/tutorial1/libro/list
O como el método “list” es el que se llama por defecto, también lo podemos omitir:
http://localhost:8080/tutorial1/libro

Hasta aquí con este tutorial sencillo de Grails, más adelante analizaremos más a fondo otros aspectos que lo hacen un gran entorno de desarrollo.