Los Builders de Groovy Groovy Grails
30 June 2009, 16:08
¿Has utilizado en alguna ocasión algún Builder con Groovy?
Los Builders de Groovy se utilizan para realizar determinadas tareas que, por sencillas que parezcan, pueden llegar a convertirse en complejas, como por ejemplo la generación de archivos XML, la automatización de tareas con Ant se facilita o incluso el diseño de interfaces gráficas. Empecemos viendo como escribir archivos XML con el builder específico que Groovy pone a nuestra disposición.
Los archivos XML son un tipo de archivo ampliamente extendido para el intercambio de información entre aplicaciones. Groovy quiere ayudarnos en la generación de estos archivos, tratando que escribamos el código para construir esos archivos XML de la forma más sencilla y clara posible y el builder encargado de esa labor es MarkupBuilder, el cual nos ayudará a escribir tanto archivos XML como HTML.
El ejemplo que vamos a ver consiste en crear un archivo XML referido a facturas de una empresa. Cada factura contendrá una serie de items, cada uno con un producto. El siguiente fragmento de código generaría el archivo XML de ejemplo:
Lo que produciría el siguiente archivo XML.
<item id='1'>
<producto nombre='Teclado' euros='876' />
</item>
</factura>
<factura fecha='Mon Jan 02 00:00:00 CET 2006'>
<item id='2'>
<producto nombre='Teclado' euros='876' />
</item>
</factura>
<factura fecha='Tue Jan 03 00:00:00 CET 2006'>
<item id='3'>
<producto nombre='Teclado' euros='876'
Como puedes comprobar, la limpieza del código escrito para generar el archivo XML es increíble y prácticamente, el código sigue el mismo tabulado que el posterior archivo XML, con lo que la lectura del código por terceras personas se facilita muchísimo.
Otros buildes interesantes en Groovy son los que se refieren a la automatización de tareas con Ant o el diseño de interfaces gráficas.
Groovy como lenguaje para escribir DSLs Groovy Grails
24 June 2009, 14:19
¿Tienes experiencia en la creación de lenguajes DSL con Groovy?
Una de las características que se resaltan de Groovy es que es un lenguaje perfecto para escribir DSLs. Pero, ¿qué son los DSLs?
¿Qué son los DSLs?
Un DSL es un lenguaje de programación reducido que permite representar el conocimiento de un campo específico. Imaginemos que debemos desarrollar una aplicación que se encargue de la toma de decisiones en el entorno financiero. Para realizar la programación en Java o Groovy (o cualquier otro lenguaje), quien se encargue de la programación debería tener los conocimientos necesarios tanto del sistema financiero así como del lenguaje de programación utilizado.
Utilizando un DSL nos ahorraremos las reglas específicas del lenguaje de programación, centrando nuestros objetivos en la especificación de las reglas financieras necesarias para el correcto funcionamiento del sistema. De esta forma, vamos a poder encargar la parte relacionada con las reglas financieras a algún experto en la materia.
¿Por que Groovy?
Pues simplemente porque es un lenguaje dinámico que nos proporciona mucha libertad a la hora de crear estructuras necesarias en un contexto particular. Las características de Groovy que lo hacen idóneo para escribir DSLs son:
- Los Builders nos permiten crear estructuras en forma de árbol estructurado
- Se pueden añadir nuevos métodos y propiedades a través de categorías y metaclases. Incluso se puede hacer esto con los números para especificar cosas como 4.veces o 24.horas
- La mayoría de los operadores se pueden sobrecargar para poder hacer cosas como totalMinutos = 4.dias + 12.horas
- Podemos utilizar un mapa como parámetro en un método, lo cual es muy intuitivo. Por ejemplo mover(x:500.metros, y:2:kilometros)
- También podemos crear nuevas estructuras de control utilizando los closures, como por ejemplo siFaltaMenosDeUnDia{…}
Ejemplo de DSL
Un ejemplo de DSL puede ser GORM (Groovy Object Relational Mapping). GORM es el framework de persistencia utilizando en Grails. Basado en Hibernate, podemos utilizar GORM sin haber visto en nuestra vida nada sobre Hibernate, simplemente conociendo el modelo de datos. Imaginemos que tenemos una clase Persona mapeada contra una tabla de la base de datos. Gracias a GORM, podríamos acceder a los datos de la siguiente forma:
"Manuel""Ma%""M%", "L%")
Aquí os dejo un enlace donde se crea un DSL para realizar el cálculo de distancias
¿Qué son los closures de Groovy? Groovy Grails
18 June 2009, 10:53
¿Has utilizado vez el concepto de closure en algún otro lenguaje de programación?
Un closure es un trozo de código empaquetado como un objeto y definido entre llaves. Actúa como un método, al cual se le pueden pasar parámetros y pueden devolver valores. Es un objeto normal y corriente al cual se pasa una referencia de la misma forma que se le pasa a cualquier otro objeto.
Posiblemente estés pensando, que de momento los closures no te aportan nada que no puedas hacer nada con cualquier otro lenguaje de programación y posiblemente incluso sea cierto. Sin embargo, los closures nos aportan agilidad a la hora de programar, que es lo que en principio buscamos utilizando un lenguaje como Groovy.
Declarando closures
El siguiente fragmento de código representa la declaración y el uso de un closure muy básico en Groovy. En él, se imprime una frase a partir de un parámetro pasado al closure.
imprimeNombre("Juan")
imprimeNombre "Yolanda"
Closures como objetos
Anteriormente comentábamos que los closures son objetos y que como tales, pueden ser pasados como parámetros a funciones. Un ejemplo de este caso es el método each de las listas, al cual se le puede pasar un closure para realizar una determinada operación sobre cada elemento de la lista.
salida = ""', ''Calderón, Navarro, Jiménez, Garbajosa, Pau Gasol, '
Como ves, el closure no ha recibido ningún parámetro, sin embargo, ha sido posible acceder al contenido de cada posición de la lista mediante la palabra reservada it.
Características de Groovy Groovy Grails
10 June 2009, 11:58
¿Añadirías algo más sobre Groovy?
Una posible definición de Groovy podría ser la siguiente: Groovy es un lenguaje de programación ágil y dinámico diseñado para la Plataforma Java con determinadas características inspiradas en lenguajes como Python, Ruby o Smalltalk, poniéndolas a disposición de los programadores Java mediante una sintaxis típica de Java.
Groovy tiene la posibilidad de compilarse a bytecode y ejecutarse en el entorno de la Máquina Virtual de Java, con lo que es posible utilizar prácticamente cualquier API en Java. Además, cuando con su propia API con funciones propias y mejoradas.
El hecho de que se pueda utilizar el API de Java, permite a los desarrolladores Java aprender el lenguaje de forma rápida y la curva de aprendizaje se reduce bastante en comparación con otros lenguajes que se pueden ejecutar en la JVM.
Las características que resaltan de Groovy son:
- Cuenta con la potente base de Java y algunas características de lenguajes de programación tan productivos como Python, Ruby o Smalltalk.
- El código generado es fácil de leer y mantener
- Permite la creación de lenguajes DSL (Domain Specific Language)
- Puede mezclarse con aplicaciones Java al permitir la compilación en bytecode
- Tipado estático y dinámico
- Existencia de closures que básicamente es un trozo de código empaquetado como un objeto y definido entre llaves. Actúa como un método, al cual se le pueden pasar parámetros y pueden devolver valores.
A día de hoy Groovy va ya por la versión 1.6.3 y puede ser descargado desde su web oficial http://groovy.codehaus.org. Su instalación es muy sencilla, ya que simplemente consiste en descomprimir el archivo y establecer un par de variables de entorno. La instalación dispone incluso de una consola para probar los fragmentos de códigos desarrollados con Groovy.
¿Qué es Groovy&Grails? Groovy Grails
3 June 2009, 20:44
¿Tienes experiencia en el desarrollo con Groovy&Grails?
Con motivo del curso que el próximo mes de Septiembre impartiré en la Universidad de Alicante llamado Groovy&Grails: desarrollo rápido de aplicaciones, voy a aprovechar para escribir algo sobre el contenido del curso a medida que voy preparando el curso. Para empezar esta seríe de artículo, que mejor que empezar definiendo lo que es Groovy&Grails.
Groovy&Grails se puede definir como un entorno de trabajo para el desarrollo rápido de aplicaciones. Dicho entorno consta por un lado de Groovy como lenguaje de programación y por Grails como framework de desarrollo.
Como la propia web oficial de Groovy indica, éste es un lenguaje de programación ágil que está diseñado para ser utilizado utilizado en el entorno de la Máquina Virtual de Java. Esta relación tan estrecha entre Java y Groovy y algunas características que veremos en posteriores entradas, hacen de Groovy un lenguaje de programación muy potente, ya que podremos aprovecharnos de las ventajas de un entorno como Java y de un lenguaje de programación dinámico.
Otra característica interesante de Groovy es la posibilidad de crear tus propios DSL’s, que básicamente significa que tiene la posibilidad de crear reducidos lenguajes de programación para solucionar un determinado problema.
Por otro lado, Grails es un framework diseñado para el desarrollo rápido de aplicaciones y que cuyo principal paradigma es convención sobre configuración, lo que nos ahorrará algunas tareas engorrosas típicas de determinados entornos. Grails no sólo está dirigido a desarrolladores Java sino que está abierto a otros tipos deseosos de conocer entornos de desarrollo ágiles.
Grails es una herramienta de código abierto que trata de unir algunas de las mejores herramientas de desarrollo web en un solo framework. Por ejemplo, para la persistencia de los datos se ha basado en Hibernate, para el renderizado de las páginas utiliza Sitemesh y como contenedor de aplicaciones emplea Jetty.
Curso de Groovy&Grails Groovy Grails
28 May 2009, 11:42
Espero tus comentarios...
El próximo mes de Septiembre seré el encargado de impartir un curso sobre Groovy&Grails en la Universidad de Alicante. El curso está organizado por el Departamento de Ciencia de la Computación e Inteligencia Artificial y está enmarcado dentro de la organización del “Especialista Universitario Java Enterprise”:http://www.jtech.ua.es.
El curso se desarrollará desde el 7 al 16 de Septiembre en los laboratorios de la Escuela Politécnica y tendrá una duración de 30 horas, convalidables por 3 créditos de libre configuración y el horario del mismo será de 16:00h a 20:30h. El precio del mismo es de 120€.
El curso Groovy&Grails: desarrollo rápido de aplicaciones está organizado en 15 sesiones. En las cuatro primeras se comentarán las características del lenguaje de programación Groovy, para posteriormente pasar a trabajar sobre el framework de desarrollo Grails.