Groovy programadores Java - Codemotion 2012

Post on 31-May-2015

1569 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

Transcript

Groovy para programadores Java

Alberto Vilches

http://albertovilches.com Twitter: @albertovilches

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

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

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

Antes de empezar

GROOVY != GRAILS

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

¿Qué diferencia hay?

Groovy -> Lenguaje

Grails -> Plataforma desarrollo Web

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 +

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

Antes de empezar

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

Antes de empezar

JPA

Java app

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

Antes de empezar

JPA

Java app

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

Antes de empezar

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

Java!

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

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

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

Lenguaje groovy

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

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

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”)

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

Sintaxis nativa Colecciones

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

gdk

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

gdk

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

xml

a

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

Groovy Console

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

Groovy console

http://groovyconsole.appspot.com groovyConsole App

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

Testing

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

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

GROOVY power asserts

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

GROOVY power asserts

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

GROOVY power asserts

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

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

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

Mocking con groovy

Closure as OnlyMethodInterface

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

Mocking con groovy

Map as Interface

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

Mocking con groovy

MOP: Meta Object Protocol

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

Mocking con groovy

Expando

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

Mocking con groovy

a

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

Mocking con groovy

a

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

Mocking con groovy

a

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)

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

Testing: spock

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

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

Compilador

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

compilador

Leer

Compilar

Cargar

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

compilador

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

Compilador: leer

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

Compilador: compilar

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

Compilador: cargar

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

Compilador: cargar

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

Compilador groovy

GroovyShell Script Eval.me()

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

Compilador: leer

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

Compilador: leer

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

Compilador: leer

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

compilador

¡Leer + compilar + cargar + ejecutar!

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

compilador

¡Leer + compilar + cargar + ejecutar!

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

compilador ¡Leer + compilar + cargar + ejecutar!

SALIDA

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

compilador ¡Leer + compilar + cargar + ejecutar!

baseImponible IRPF IVA codigo

String

ENTRADA

SALIDA

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

compilador ¡Leer + compilar + cargar + ejecutar!

baseImponible IRPF IVA codigo

String

ENTRADA

SALIDA

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

compilador ¡Leer + compilar + cargar + ejecutar!

baseImponible IRPF IVA codigo

String

ENTRADA

SALIDA

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

compilador

Groovy Templates

ENTRADA

SALIDA

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

Groovy templates

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

Groovy templates

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

Groovy templates

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.

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

Config Slurper

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

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

Config slurper

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

Config slurper

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

Config slurper

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

Config slurper

Agrupación por entornos

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

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

Config slurper

Como leer un fichero de configuración desde Java:

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

SCRIPTS

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

Scripts

#!/usr/bin/env groovy

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

Scripts

#!/usr/bin/env groovy

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

SCRIPTS + SQL

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

Scripts + sql

a

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

Scripts + sql

a

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

Scripts + sql

a

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

¡GRACIAS!

¿Preguntas?

top related