Groovy&Grails: desarrollo rápido de aplicaciones
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Groovy&Grails?
• Combinación perfecta para el desarrollo rápido de aplicaciones
• Groovy Lenguaje de programación
• Grails Entorno completo de desarrollo (framework MVC, base de datos, tests, contenedor web)
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Groovy?
• Groovy en inglés significa genial
• Otro lenguaje de la plataforma Java
• Lenguaje de programación ágil y dinámico
• Características típicas de lenguajes como Python, Ruby o Smalltalk
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Groovy?
• Sintaxis típica de Java
• Superclase de Java
• Evita la ceremonia de Java
Groovy & Grails: Desarrollo rápido de aplicaciones
¿A quién va dirigido Groovy?
• A los programadores Java
• A los programadores de scripts
• A los programadores ágiles y extremos
Groovy & Grails: Desarrollo rápido de aplicaciones
Comparando Java y Groovy
• Java & Groovy • Mecanismo de paquetes • Sentencias • Definición de clases y métodos • Estructuras de control • Operadores, asignaciones y
expresiones • Manejo de excepciones • Declaración de literales • Instanciación de objetos y
llámadas a métodos
• Groovy • Nuevas expresiones y
operadores • Nuevas formas de declarar
objetos • Nuevas estructuras de control • Nuevos tipos de datos con sus
operadores y expresiones • Todo es un objeto
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Groovy
• Brevedad del lenguaje
• Groovy evita la ceremonía que acompaña a Java
• Aumenta la expresividad del lenguaje (se dice más con menos)
• Importa automáticamente varios paquetes
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Declaración de clases
class Libro { private String titulo Libro (String elTitulo){ titulo = elTitulo } String getTitulo(){ return titulo }
}
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Scripts en Groovy
Libro cgg = new Libro('Curso GroovyGrails')
assert cgg.getTitulo() == 'Curso GroovyGrails’ assert getTituloAlReves(cgg) == 'sliarGyvoorG osruC'
String getTituloAlReves(libro) { titulo = libro.getTitulo() return titulo.reverse()
}
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• GroovyBeans /*Un Bean en Java*/ class Libro{
String titulo;
String getTitulo(){ return this.titulo; } void setTitulo(String str){ this.titulo = new String(str); }
}
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• GroovyBeans
/*Un Bean en Groovy*/ class Libro{
String titulo }
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Cadenas de texto
• GString
def part1 = 'groovy' def part2 = 'grails' assert "me gusta groovy grails" == "me gusta $part1 $part2"
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Los números son objetos
def x = 1 def y = 2 assert x + y == 3 assert x.plus(y) == 3 assert x instanceOf Integer
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Listas, mapas y rangos
• Groovy facilita el trabajo con este tipo de colecciones de datos
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Listas, mapas y rangos
def sesiones = [ 'Introducción a Groovy', 'El lenguaje Groovy', 'Aspectos avanzados en Groovy']
assert sesiones[1] == 'El lenguaje Groovy'
sesiones[3] = 'Librerías propias de Groovy’
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Listas, mapas y rangos
def http = [ 100 : 'Continue’, 200 : 'OK’, 400 : 'Bad Request'
]
assert http[200] == 'OK'
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• Listas, mapas y rangos
def x = 1..10 assert x.contains(2) assert x.size() == 10 assert x.reverse() == 10..1
Groovy & Grails: Desarrollo rápido de aplicaciones
Closures
• Bloques de código anónimo definido entre llaves
def ayer = {Date dia -> dia - 1}
ayer.call(new Date())
Groovy & Grails: Desarrollo rápido de aplicaciones
Closures
• Nos permiten ser más ágiles programando
['Pedro','Lola','Juan'].each { it -> println(it) }
Groovy & Grails: Desarrollo rápido de aplicaciones
Estructuras de control en Groovy
• Los típicos if-else, while, switch y try-catch-finally • El bloque for utiliza la notacion for (i in x)
{ cuerpo}
for(i in 1..10) println i
for(i in [1,2,3,4,5,6,7,8,9,10]) println i
Groovy & Grails: Desarrollo rápido de aplicaciones
Estructuras de control en Groovy
• O mediante closures
def alumnos = ['Pedro','Miguel','Alejandro','Elena'] alumnos.each{nombre -> println nombre}
Groovy & Grails: Desarrollo rápido de aplicaciones
Groovy para escribir DSL’s
• Un DSL (Domain Specific Language) es un lenguaje de programación específico dedicado a resolver un problema particular
• DSL’s típicos: reglas financieras o de base de datos
Groovy & Grails: Desarrollo rápido de aplicaciones
Groovy para escribir DSL’s
• Con un DSL podremos tener cosas como:
//Funciones para sumar cantidades de tiempo 5.dias + 4.semanas + 3.horas
//Funciones típicas de GORM def lista = Persona.findByNombre("Manuel”)
Groovy & Grails: Desarrollo rápido de aplicaciones
Groovy en el entorno Java
• Groovy puede ser ejecutado en la JVM:
• Compilando con groovyc
• Sin compilar
Groovy & Grails: Desarrollo rápido de aplicaciones
GDK: la librería Groovy
• GDK es una extensión a la librería JDK
• Facilita el acceso a base de datos y procesamiento de XML
• Extiende las funcionalidades de Java
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Grails?
• “Grails es un framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a su vez se basa en la Plataforma Java”
• Se basa en los paradigmas CoC (Convención sobre Configuración) y DRY (don’t repeat yourself)
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Grails?
• Basado en el patrón Modelo Vista Controlador
• Modelo Clases de dominio
• Controladores
• Vista Páginas GSP (Groovy Server Pages)
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Grails?
• El programador se olvida de determinados aspectos de configuración
• Groovy acorta los tiempos de desarrollo
• Grails es un framework muy ágil
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Grails?
• Grails no sólo es un framework de desarrollo web que sigue el patrón MVC, sino que es una plataforma completa de desarrollo • Contenedor/servidor web
• Gestor de base de datos
• Empaquetado de la aplicación
• Realización de tests
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Grails
• Tests
• Tests unitarios
• Tests de integración
• Tests funcionales
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Grails
• Scaffolding
“Generación automática de código para las cuatro operaciones básicas de cualquier aplicación, que son la creación, lectura, edición y borrado”
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Grails
• Mapeo objeto-relacional
• GORM (Grails Object Relational Mapping)
• Uno a uno
• Uno a muchos
• Muchos a muchos
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Grails
• Plugins
• Seguridad
• AJAX
• Realización de tests
• Búsqueda
• Informes
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Grails no sufre del síndrome NIH (Not Invented Here) e integra las mejores soluciones de software libre para conseguir un framework muy robusto
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Groovy • Lenguaje dinámico
• Potente y flexible
• Sintaxis sencilla
• Integración con Java
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Framework Spring
• Framework ampliamente utilizado por los desarrolladores Java
• Muchos años de experiencia
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Hibernate
• Framework de persistencia objeto-relacional
• Es la base de GORM
• Mapea clases de dominio contra las tablas de una base de datos
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• SiteMesh
• Renderizado HTML
• Patrón de diseño Decorator
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Frameworks AJAX
• Script.aculo.us
• Rico
• Prototype
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Jetty
• Contenedor web
• No es el único sobre el que funciona Grails
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• HSQLDB
• Gestor de base de datos
• Almacenamiento en memoria o en disco
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• JUnit
• Framework para la realización de tests unitarios
• Muy extendido en Java
Groovy & Grails: Desarrollo rápido de aplicaciones
Arquitectura
Groovy & Grails: Desarrollo rápido de aplicaciones
Arquitectura
• Herramientas en línea de comandos • Facilita la escritura de código
• Facilita la gestión de nuestros proyectos
• Basado en Gant, un sistema de automatización de tareas basado en Apache Ant
Groovy & Grails: Desarrollo rápido de aplicaciones
Arquitectura
• Ejecución de un proyecto en Grails
Groovy & Grails: Desarrollo rápido de aplicaciones
Ejemplos desarrollados con Grails
• Jobsket (http://www.jobsket.com)
• Uifi (http://www.uifi.es)
• Aloja (http://www4.uc3m.es/aloja)
Groovy & Grails: Desarrollo rápido de aplicaciones
Enlaces de interés
• http://groovy.codehaus.org
• http://grails.org
• http://www.escueladegroovy.com
• http://www.jtech.ua.es/grails
Groovy & Grails: Desarrollo rápido de aplicaciones
Contacto
• http://www.frangarcia.net
• http://www.twitter.com/frangarcia
• http://www.linkedin.com/in/frangarcia