Transcript
Page 1: Groovy&Grails: desarrollo rápido de aplicaciones

Groovy&Grails: desarrollo rápido de aplicaciones

Page 2: 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)

Page 3: Groovy&Grails: desarrollo rápido de aplicaciones

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Groovy & Grails: Desarrollo rápido de aplicaciones

Arquitectura

Page 44: Groovy&Grails: desarrollo rápido de aplicaciones

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

Groovy & Grails: Desarrollo rápido de aplicaciones

Arquitectura

•  Ejecución de un proyecto en Grails

Page 46: Groovy&Grails: desarrollo rápido de aplicaciones

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

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

Groovy & Grails: Desarrollo rápido de aplicaciones

Contacto

•  http://www.frangarcia.net

•  [email protected]

•  http://www.twitter.com/frangarcia

•  http://www.linkedin.com/in/frangarcia


Recommended