Groovy: el lenguaje dinámico
para la JVM
José Juan R.
Zuñiga
(@neodevelop)
@grailsmx
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
HolaMundo en Java
public 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 Groovy
public 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
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