Introducción a Groovy

Preview:

DESCRIPTION

Presentación para el #Gulev2KX en Veracruz

Citation preview

@grailsmx

Groovy: el lenguaje dinámico para la JVM

José Juan R. Zuñiga

(@neodevelop)

Agenda• Introducción abierta(Open Source y lenguajes de

desarrollo)• ¿Que es groovy?• Hola Mundo en Groovy• Azúcar Sintáctica• +Groovy en una mirada• Aplicaciones Desktop con Groovy• Acceso a base de datos con Groovy• Metaprogramación• Testing

Introducción

Groovy

HolaMundo en Javapublic class HolaMundo { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String saluda() { return "Hola " + this.nombre + " !!!"; } public static void main(String[] args) { HolaMundo objeto = new HolaMundo(); objeto.setNombre("@grailsmx"); System.out.println(objeto.saluda()); }}

HolaMundo en Groovypublic class HolaMundo { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String saluda() { return "Hola " + this.nombre + " !!!"; } public static void main(String[] args) { HolaMundo objeto = new HolaMundo(); objeto.setNombre("@grailsmx"); System.out.println(objeto.saluda()); }}

Mejor a la manera Groovy

class HolaMundo { String nombre def saluda() { "Hola ${this.nombre} !!!" } }

def objeto = new HolaMundo(nombre:"@grailsmx")println(objeto.saluda())

¿Cómo llegamos a esto…?• Tener el JDK instalado• Establecer la variable JAVA_HOME y agregarla al

PATH en el subdirectorio /bin• Descargamos la distribución de Groovy en http://

groovy.codehaus.org/• Creamos una variable de entorno GROOVY_HOME

apuntando al directorio donde se descomprimió la distribución

• Adicionalmente, incluir en el PATH el directorio /bin de la variable de entorno GROOVY_HOME, es decir: %GROOVY_HOME%/bin

• Let’s rock the code!!!

+ Groovy en una mirada• Totalmente Orientado a objetos• Perfecta integración con Java• Closures• Convención de JavaBeans• Esencia vs. Ceremonia• Aritmética con BigDecimal por default para la operación

de punto flotante• API’s amigables y prácticas• XML, JDBC, JMX, Swing• DSL(Domain Specific Language)• Builders• Sobrecarga de operadores• GDK

Azúcar sintáctica + GDK• Listas– def numeros = [1,2,3,4,5]

• Mapas– def mapa = [DF:'Distrito

Federal',MTY:'Monterrey']• Rangos– def rangos = 199..299

• Asignación Múltiple– def (a,b) = [10,20]

• Return Opcional– def metodo(bool) { if(bool) 1 else 0 }

Groovy en profundidad• Meta-programación

– La habilidad de un lenguaje para modificarse a sí mismo• Transformaciones AST

– @Singleton– @Inmutable, @Lazy, @Delegate– @Newify– @Category & @Mixin– @PackageScope– @Bindable & @Vetoable– @Grab

Aplicaciones Desktop

Let’s code again!!!

Base de Datos

Metaprogramación

Testing

¿Quieres ser Groovy?

@grailsmx

Aun hay algo más…

@grailsmx

Esperen…

• GULEV• @springhispano• @grailsmx

Agradecimiento

@grailsmx

¿Preguntas?

…o comentarios…springhispano.org

grails.org.mx@neodevelop