introducción a groovy
DESCRIPTION
Presentación para el #Gulev2KX en VeracruzTRANSCRIPT
@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