Groovy programadores Java - Codemotion 2012

75
Groovy para programadores Java Alberto Vilches http://albertovilches.com Twitter: @albertovilches

description

Slides de la presentación realizada en el Codemotion Madrid, el 24 de Marzo de 2012

Transcript of Groovy programadores Java - Codemotion 2012

Page 1: Groovy programadores Java - Codemotion 2012

Groovy para programadores Java

Alberto Vilches

http://albertovilches.com Twitter: @albertovilches

Page 2: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Sobre mi

Responsable desarrollo Java/Grails en Fundador del evento Evangelizador Groovy y Grails http://albertovilches.com Twitter: @albertovilches

Page 3: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

agenda

Antes de empezar Qué es Groovy Groovy Console Testing con Groovy Compilandor Config Slurper Algunas cosas más

Page 4: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Antes de empezar

GROOVY != GRAILS

Page 5: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

¿Qué diferencia hay?

Groovy -> Lenguaje

Grails -> Plataforma desarrollo Web

Page 6: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

¿Qué diferencia hay?

Groovy -> Lenguaje Compilador y GDK

groovy-1.8.x.jar

Grails -> Plataforma desarrollo Web

Groovy + Spring + Hibernate + Sitemesh + DBCP + Apache commons + Log4J + Junit + Ant +

Page 7: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Antes de empezar

Page 8: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Antes de empezar

JPA

Java app

Page 9: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Antes de empezar

JPA

Java app

Page 10: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Antes de empezar

¡No necesito Grails para usar Groovy desde mi aplicación

Java!

Page 11: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

¿Qué es Groovy?

Groovy es Java. Dinámico Inspirado en Ruby, Python y Smalltalk OOP puro Closures, Gstrings, Builders, DSL

Page 12: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

¿Qué es Groovy?

Groovy es Java. Dinámico Inspirado en Ruby, Python y Smalltalk OOP puro Closures, Gstrings, Builders, DSL No compile type-checking Ligeramente más lento que Java

Page 13: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Lenguaje groovy

Punto y coma opcionales Clases y métodos public por defecto

Page 14: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Lenguaje groovy

Punto y coma opcionales Clases y métodos public por defecto Getters y setters automáticos Tipado opcional: def

Page 15: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Lenguaje groovy

Punto y coma opcionales Clases y métodos public por defecto Getters y setters automáticos Tipado opcional: def Interpolación de cadenas: “hola $foo” Sintaxis nativa para colecciones: [] y [:]

list << value Sobrecarga de operadores

if (saludo == “hola”)

Page 16: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Sintaxis nativa Colecciones

Page 17: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

gdk

Page 18: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

gdk

Page 19: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

xml

a

Page 20: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy Console

Page 21: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy console

http://groovyconsole.appspot.com groovyConsole App

Page 22: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Testing

Page 23: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Testing con groovy

Power Asserts GroovyTestCase Mocking

Closure as OnlyOneMethodInterface Map as Interface Expando MOP mockFor / stubFor

Page 24: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

GROOVY power asserts

Page 25: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

GROOVY power asserts

Page 26: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

GROOVY power asserts

Page 27: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy test case

Añade nuevos assert* Y algunos métodos como

shouldFail o notImplementedYet

Nombres de métodos largos

Page 28: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy test case

Añade nuevos assert* Y algunos métodos como

shouldFail o notImplementedYet

Nombres de métodos largos

Page 29: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

Closure as OnlyMethodInterface

Page 30: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

Map as Interface

Page 31: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

MOP: Meta Object Protocol

Page 32: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

Expando

Page 33: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

a

Page 34: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

a

Page 35: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Mocking con groovy

a

Page 36: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

testing

¿Qué necesito para usar todo esto?

groovy-1.8.jar en tu CLASSPATH

Tus tests deben ser clases Groovy

Heredar de GroovyTestCase (opcional)

Page 37: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Testing: spock

http://code.google.com/p/spock/

Page 38: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador

Page 39: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador

Leer

Compilar

Cargar

Page 40: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador

Page 41: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: leer

Page 42: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: compilar

Page 43: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: cargar

Page 44: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: cargar

Page 45: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador groovy

GroovyShell Script Eval.me()

Page 46: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: leer

Page 47: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: leer

Page 48: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Compilador: leer

Page 49: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador

¡Leer + compilar + cargar + ejecutar!

Page 50: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador

¡Leer + compilar + cargar + ejecutar!

Page 51: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador ¡Leer + compilar + cargar + ejecutar!

SALIDA

Page 52: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador ¡Leer + compilar + cargar + ejecutar!

baseImponible IRPF IVA codigo

String

ENTRADA

SALIDA

Page 53: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador ¡Leer + compilar + cargar + ejecutar!

baseImponible IRPF IVA codigo

String

ENTRADA

SALIDA

Page 54: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador ¡Leer + compilar + cargar + ejecutar!

baseImponible IRPF IVA codigo

String

ENTRADA

SALIDA

Page 55: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

compilador

Groovy Templates

ENTRADA

SALIDA

Page 56: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy templates

Page 57: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy templates

Page 58: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Groovy templates

Page 59: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Resumen

Scripts Pueden incluir definiciones de clases. Pueden recibir un Binding con variables. Puede retornar un objeto:

String, Collection, Integer, etc. La instancia de una clase que se define en el propio Script. Un objeto class de este misma clase con el que luego trabajar.

Templates Pueden recibir un Map con variables. Siempre devuelve un String.

Page 60: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config Slurper

Page 61: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Alternativa a los ficheros Properties No texto plano -> ¡código groovy! Valores nativos, no solo Strings Anidado opcional

Page 62: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Page 63: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Page 64: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Page 65: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Agrupación por entornos

Page 66: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Agrupación por entornos server.port = 8090 sobrescribe el valor 80, solo si

el entorno es development

Page 67: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Config slurper

Como leer un fichero de configuración desde Java:

Page 68: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

SCRIPTS

Page 69: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Scripts

#!/usr/bin/env groovy

Page 70: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Scripts

#!/usr/bin/env groovy

Page 71: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

SCRIPTS + SQL

Page 72: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Scripts + sql

a

Page 73: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Scripts + sql

a

Page 74: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

Scripts + sql

a

Page 75: Groovy programadores Java - Codemotion 2012

Alberto Vilches @albertovilches – Grupo de usuarios de Groovy de Madrid

¡GRACIAS!

¿Preguntas?