groovy&grails: desarrollo rápido de aplicaciones
DESCRIPTION
Presentación sobre Groovy&Grails: desarrollo rápido de aplicaciones para la Asociación de Desarrolladores Web de Alicante.TRANSCRIPT
![Page 1: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/1.jpg)
Groovy&Grails: desarrollo rápido de aplicaciones
![Page 2: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/2.jpg)
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)
![Page 3: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/3.jpg)
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
![Page 4: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/4.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
¿Qué es Groovy?
• Sintaxis típica de Java
• Superclase de Java
• Evita la ceremonia de Java
![Page 5: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/5.jpg)
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
![Page 6: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/6.jpg)
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
![Page 7: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/7.jpg)
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
![Page 8: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/8.jpg)
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 }
}
![Page 9: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/9.jpg)
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()
}
![Page 10: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/10.jpg)
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); }
}
![Page 11: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/11.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
El código de Groovy
• GroovyBeans
/*Un Bean en Groovy*/ class Libro{
String titulo }
![Page 12: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/12.jpg)
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"
![Page 13: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/13.jpg)
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
![Page 14: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/14.jpg)
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
![Page 15: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/15.jpg)
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’
![Page 16: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/16.jpg)
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'
![Page 17: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/17.jpg)
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
![Page 18: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/18.jpg)
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())
![Page 19: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/19.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Closures
• Nos permiten ser más ágiles programando
['Pedro','Lola','Juan'].each { it -> println(it) }
![Page 20: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/20.jpg)
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
![Page 21: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/21.jpg)
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}
![Page 22: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/22.jpg)
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
![Page 23: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/23.jpg)
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”)
![Page 24: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/24.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Groovy en el entorno Java
• Groovy puede ser ejecutado en la JVM:
• Compilando con groovyc
• Sin compilar
![Page 25: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/25.jpg)
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
![Page 26: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/26.jpg)
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)
![Page 27: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/27.jpg)
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)
![Page 28: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/28.jpg)
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
![Page 29: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/29.jpg)
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
![Page 30: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/30.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Grails
• Tests
• Tests unitarios
• Tests de integración
• Tests funcionales
![Page 31: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/31.jpg)
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”
![Page 32: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/32.jpg)
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
![Page 33: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/33.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Características de Grails
• Plugins
• Seguridad
• AJAX
• Realización de tests
• Búsqueda
• Informes
![Page 34: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/34.jpg)
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
![Page 35: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/35.jpg)
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
![Page 36: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/36.jpg)
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
![Page 37: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/37.jpg)
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
![Page 38: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/38.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• SiteMesh
• Renderizado HTML
• Patrón de diseño Decorator
![Page 39: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/39.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Frameworks AJAX
• Script.aculo.us
• Rico
• Prototype
![Page 40: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/40.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• Jetty
• Contenedor web
• No es el único sobre el que funciona Grails
![Page 41: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/41.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Software de código abierto
• HSQLDB
• Gestor de base de datos
• Almacenamiento en memoria o en disco
![Page 42: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/42.jpg)
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
![Page 43: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/43.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Arquitectura
![Page 44: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/44.jpg)
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
![Page 45: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/45.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Arquitectura
• Ejecución de un proyecto en Grails
![Page 46: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/46.jpg)
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)
![Page 47: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/47.jpg)
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
![Page 48: Groovy&Grails: desarrollo rápido de aplicaciones](https://reader034.vdocuments.mx/reader034/viewer/2022052307/555876c4d8b42a8d018b533c/html5/thumbnails/48.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Contacto
• http://www.frangarcia.net
• http://www.twitter.com/frangarcia
• http://www.linkedin.com/in/frangarcia