Groovy.v2

49
Nicolás Bello Camilletti @nbellocam

description

Groovy slides used at 24/05/2012 talk at FIUBA

Transcript of Groovy.v2

Page 1: Groovy.v2

Nicolás Bello Camilletti@nbellocam

Page 2: Groovy.v2

¿Que es Groovy?

Page 3: Groovy.v2

Esto era Groovy

Page 4: Groovy.v2
Page 5: Groovy.v2

Lenguaje ágil y dinámico para

la JVM

Page 6: Groovy.v2

Integración con Java

JVM

Java Groovy Scala …

Page 7: Groovy.v2

Curva de aprendizaje

casi nula

Page 8: Groovy.v2
Page 9: Groovy.v2

Facilita la escritura de

scripts

Page 10: Groovy.v2

Soporta Domain

Specific

Languages

Page 11: Groovy.v2

Fuertemente tipado

Page 12: Groovy.v2

Orientado a

objetos

Page 13: Groovy.v2

Duck Typing

Page 14: Groovy.v2

Historia

29/08/2003

Nacimiento

16/03/2004

Propuesta JSR 241

29/03/2004 Se

aprueba la JSR 241

02/01/2007 Versión

1.0

07/12/2007 Versión

1.5

Actualmente Versión

1.8.#y beta de

2

Page 15: Groovy.v2

Algunasparticularidades

Page 16: Groovy.v2

Variables

• Tipado estático– Escribiendo el tipo explícitamente

• Tipado dinámico– Utilizando la palabra reservada def

Page 17: Groovy.v2

Sistema de Tipos

• Numeros Enteros– Integer

– Long

– BigInteger

– Byte

– Short

• Punto flotante– BigDecimal

– Float

– Double

• Boolean

• Strings

• Colecciones

– List

– Map

– Set

• Rangos

• Expresiones Regulares

Page 18: Groovy.v2

Colecciones – Listas

Page 19: Groovy.v2

Colecciones - Maps

Page 20: Groovy.v2

Colecciones - Rangos

Page 21: Groovy.v2

Strings y GStrings

Page 22: Groovy.v2

Expresiones Regulares

Page 23: Groovy.v2

Groovy Truth

• Boolean• Cosas que son false– Colecciones vacías(listas, maps)– Iteradores y enumeradores sin mas

elementos– Strings vacios–Matchers de regex que no coinciden (=~)– Cero– null

Page 24: Groovy.v2

Métodos

Page 25: Groovy.v2

Closures (1)

• { [param1, param2 …] -> sentencia1; sentencia2... }

Page 26: Groovy.v2

Closures (2)

Page 27: Groovy.v2

Ciclos con closures (1)

• Each

• EachWithIndex

• Times

Page 28: Groovy.v2

Ciclos con closures (2)

• Collect

• FindAll

Page 29: Groovy.v2

Operadores (1)

• Colección*.operación Spread Operator

• objeto?.operación Safe Navigation

Operator

– Similar a:

Page 30: Groovy.v2

Operadores (2)

• objeto?:valorDefault Elvis Operator

def displayName = user.name ?: "Anonymous"

– Operador ternario equivalente

def displayName = user.name ? user.name :

"Anonymous“

Page 31: Groovy.v2

Orientación a Objetos

Page 32: Groovy.v2

GroovyBeans (1)

Page 33: Groovy.v2

GroovyBeans (2)

• Con access modifier – Field

• Sin access modifier– Field privado– Mas getter y setter públicos (una property)

• Se pueden sobreescribir

• Property final– Field privado como final– Solo getter

Page 34: Groovy.v2

Expando

Page 35: Groovy.v2

Implementando Interfaces con Map

Page 36: Groovy.v2

Domain Specific Languages

• Muy buen soporte

• Concepto de Builders

• Sobrecarga de operadores

• Closures como parámetros

• Y muchos mas…

Page 37: Groovy.v2

Soporte para Lenguajes de Marcado

Page 38: Groovy.v2

Diferencias con java

• Defaults imports

• == es equals

• Return opcional

• This en métodos estáticos para clase

• The Groovy way…

Page 39: Groovy.v2

Ejemplos

• Java

• Groovy

Page 40: Groovy.v2

Ejemplo concurrencia• Groovy

• Java

Page 41: Groovy.v2

Programación de GUI

• Wrapper de Swing Usa Builders

Page 42: Groovy.v2

Conclusiones

Page 43: Groovy.v2
Page 44: Groovy.v2

Usar Groovy en:

• Integración de componentes

• Modelos de negocio muy dinámicos

• Pruebas de concepto

• Proyectos rápidos y chicos

• Scripting

Page 45: Groovy.v2

No usar Groovy en:

• Algoritmos complejos

– Cálculos intensivos

• Manejo de grandes cantidades de datos

– Problema con creación de objetos por ser dinámico

• Sistemas con

– Requerimientos bien definidos

– Pocas posibilidades de evolución

• Proyectos muy grandes

Page 46: Groovy.v2

No trabajen

duro.

Trabajen de forma

inteligente!

Page 47: Groovy.v2

Recursos

• Sitio oficial– http://groovy.codehaus.org/

Page 48: Groovy.v2

Pruébenlo!

Page 49: Groovy.v2

Muchas Gracias!!!