sesión 1: introducción a groovy - jtech.ua.es · groovy & grails: desarrollo rápido de...
TRANSCRIPT
![Page 1: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/1.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
Groovy & Grails: Desarrollo rápido de aplicaciones
Sesión 1: Introducción a Groovy
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-1
![Page 2: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/2.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2
¿Qué es Groovy?
• Lenguaje de programación ágil y dinámico • Plataforma Java • Características típicas de Python, Ruby o
Smalltalk • Sintaxis típica de Java • Superclase de Java • Evita la ceremonia de Java
![Page 3: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/3.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-3
¿A quién va dirigido Groovy?
• A los programadores Java
• A los programadores de scripts
• A los programadores ágiles y extremos
![Page 4: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/4.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-4
Editores Groovy
• Plugin IntelliJ IDEA • Plugin para Eclipse (Spring Source ToolSuite) • NetBeans • UltraEdit • Plugin para Jedit
![Page 5: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/5.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-5
Instalación
• Descargar desde http://groovy.codehaus.org • Descomprimir • Establecer variable de entorno GROOVY_HOME • Añadir GROOVY_HOME/bin al PATH • Establecer variable de entorno JAVA_HOME
![Page 6: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/6.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-6
Hola Mundo!
Tres formas de ejecutar programas en Groovy • groovysh
• groovyConsole
• groovy
![Page 7: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/7.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-7
Hola Mundo!
Compilación de archivos .groovy
• Modo directo
• Modo precompilado con groovyc
![Page 8: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/8.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-8
Características de Groovy
• Comentarios
• //, comentarios de una línea • /*…*/, comentarios multilínea • /**….*/, comentarios estilo Javadoc • #!, comentarios estilo shebang sólo en la primera
línea
![Page 9: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/9.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-9
Características de Groovy
• Comparando la sintaxis de Java y Groovy. En común: • Mecanismo de paquetes • Sentencias • Definición de clases y métodos • Estructuras de control • Operadores, asignaciones y expresiones • Manejo de excepciones • Declaración de literales • Instanciación de objetos y llamadas a métodos
![Page 10: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/10.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-10
Características de Groovy
• Comparando la sintaxis de Java y Groovy. Valor añadido en Groovy
• Nuevas expresiones y operadores • Nuevas formas de declarar objetos • Nuevas estructuras de control • Nuevos tipos de datos con sus operadores y
expresiones • Todo es un objeto
![Page 11: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/11.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-11
Características de Groovy
• Brevedad del lenguaje
• Groovy evita la ceremonía que acompaña a Java
• Aumenta expresividad al lenguaje
• Importa automáticamente varios paquetes
![Page 12: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/12.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-12
Características de Groovy
• Aserciones
• Desde Java 1.4
• Aseguran la corrección de nuestro programa
• Nuevo debug
![Page 13: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/13.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-13
Características de Groovy
• Aserciones
assert(true) assert 1 == 1 def x = 1 assert x == 1 def y = 1; assert y == 1
assert 1==2 : "Desde cuando 1 es igual a 2" //Obteniendo el siguiente mensaje Exception thrown: Desde cuando 1 es igual a 2. Expression: (1 == 2)
![Page 14: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/14.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-14
El código de Groovy
• Declaración de clases
class Libro { private String titulo Libro (String elTitulo){ titulo = elTitulo } String getTitulo(){ return titulo }
}
![Page 15: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/15.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-15
El código de Groovy
• Scripts en Groovy
Libro cgg = new Libro('Curso GroovyGrails')
assert cgg.getTitulo() == 'Curso GroovyGrails’ assert getTituloAlReves(cgg) == 'sliarGyvoorG osruC'
String getTituloAlReves(libro) { titulo = libro.getTitulo() return titulo.reverse()
}
![Page 16: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/16.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-16
El código de Groovy
• GroovyBeans
/*Un Bean en Java*/ class Libro{
String titulo;
String getTitulo(){ return this.titulo; } void setTitulo(String str){ this.titulo = new String(str); }
}
![Page 17: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/17.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-17
El código de Groovy
• GroovyBeans
/*Un Bean en Groovy*/ class Libro{
String titulo; }
![Page 18: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/18.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-18
El código de Groovy
• Cadenas de texto • GString
def part1 = 'groovy' def part2 = 'grails' assert "me gusta groovy grails" == "me gusta $part1 $part2"
![Page 19: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/19.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-19
El código de Groovy
• Los números son objetos
def x = 1 def y = 2 assert x + y == 3 assert x.plus(y) == 3 assert x instanceOf Integer
![Page 20: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/20.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-20
El código de Groovy
• Listas, mapas y rangos
• Groovy facilita el trabajo con este tipo de colecciones de datos
![Page 21: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/21.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-21
El código de Groovy
• Listas, mapas y rangos
def sesiones = [ 'Introducción a Groovy', 'El lenguaje Groovy', 'Aspectos avanzados en Groovy']
assert sesiones[1] == 'El lenguaje Groovy'
sesiones[3] = 'Librerías propias de Groovy’
assert sesiones.size() == 4
![Page 22: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/22.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-22
El código de Groovy
• Listas, mapas y rangos
def http = [ 100 : 'Continue’, 200 : 'OK’, 400 : 'Bad Request'
]
assert http[200] == 'OK’ assert http.size() == 4
![Page 23: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/23.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-23
El código de Groovy
• Listas, mapas y rangos
def x = 1..10 assert x.contains(2) assert x.size() == 10 assert x.reverse() == 10..1
![Page 24: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/24.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-24
Closures
• Bloques de código anónimo definido entre llaves
def ayer = {Date dia -> dia - 1}
ayer.call(new Date())
![Page 25: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/25.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-25
Closures
• Nos permiten ser más ágiles programando
['Pedro','Lola','Juan'].each { it -> println(it) }
![Page 26: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/26.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-26
Closures
• Los closures pueden ser pasados como parámetros a funciones
def lista = ['a','b','c','d'] def nuevaLista = []
lista.collect( nuevaLista ) { it.toUpperCase() }
println nuevaLista // ["A", "B", "C", "D"]
![Page 27: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/27.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-27
Estructuras de control en Groovy
• Los típicos if-else, while, switch y try-catch-finally if ( ... ) { ... } else if (...) { ... } else { ... }
![Page 28: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/28.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-28
Estructuras de control en Groovy
• Operadores ternario y Elvis
def y = 5 def x = (y > 1) ? "funciona" : "falla" assert x == "funciona”
def nombreMostrado = usuario.nombre ?: "Anónimo"
![Page 29: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/29.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-29
Estructuras de control en Groovy
• El bloque for utiliza la notacion for (i in x) { cuerpo}
for(i in 1..10) println i
for(i in [1,2,3,4,5,6,7,8,9,10]) println i
![Page 30: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/30.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-30
Estructuras de control en Groovy
• O mediante closures
def alumnos = ['Pedro','Miguel','Alejandro','Elena'] alumnos.each{nombre -> println nombre}
![Page 31: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/31.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-31
Groovy en el entorno Java
• Groovy puede ser ejecutado en la JVM:
• Compilando con groovyc
• Sin compilar
![Page 32: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/32.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-32
GDK: la librería Groovy
• GDK es una extensión a la librería JDK
• Facilita el acceso a base de datos y procesamiento de XML
• Extiende funcionalidades de Java
![Page 33: Sesión 1: Introducción a Groovy - jtech.ua.es · Groovy & Grails: Desarrollo rápido de aplicaciones © 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-2](https://reader030.vdocuments.pub/reader030/viewer/2022040123/5e05ee488b9888528a7b7867/html5/thumbnails/33.jpg)
Groovy & Grails: Desarrollo rápido de aplicaciones
© 2008-2011 Depto. Ciencia de la Computación e IA Introducción a Groovy-33
GDK: la librería Groovy
Tipo En Java En Groovy Array Propiedad length Método size() String Método length() Método size() StringBuffer Método length() Método size() Collection Método size() Método size() Map Método size() Método size() File Método length() Método size() Matcher Método groupCount() Método size()