SlideShare uma empresa Scribd logo
1 de 51
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Introducción a Groovy
Un lenguaje dinámico para la JVM
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Agenda
• Que es Groovy
• Caracteristicas Lenguaje Groovy
• Sintaxis en Groovy
• Comunidad Groovy
• Laboratorios (1-13)
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinámicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Agenda
• Que es Groovy
• Caracteristicas Lenguaje Groovy
• Sintaxis en Groovy
• Comunidad Groovy
• Laboratorios (1-12)
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Que es Groovy?
• Groovy es un agil y dinámico lenguaje para la Java
Virtual Machine
• Construido pensando en Java pero adicionando las
poderosas caracteristicas de lenguajes como Python,
Ruby & Smalltalk.
• Entregas atractivas caracteristicas disponibles para los
desarrolladores de Java con una pequeña curva depequeña curva de
aprendizaje.aprendizaje.
• Soporta Domain Specific Languages y otras
sintaxis compactas que facilitan tanto la lectura como
la mantencion del codigo.
• Permite la integracion con todo los Objetos y librerias
existentes desarrolladas en Java.
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Agenda
• Que es Groovy
• Caracteristicas de Groovy
• Sintaxis en Groovy
• Comunidad Groovy
• Laboratorios (1-12)
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Caracteristicas de Groovy
• Closures
• Sintaxis nativa para List y Maps
• Soporte para GroovyMarkup y GPath
• Soporte nativo para expresiones regulares
• Soporte para tipificación dinámica y estática.
• Soporta embeber expresiones dentro de string
• Una gran cantidad de Metodos agregados al JDK.
• Simple sintaxis para escribir Beans ( getter y setter )
• Soporte para Anotaciones y Genericos
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Agenda
• Que es Groovy
• Caracteristicas de Groovy
• Sintaxis en Groovy
• Comunidad Groovy
• Laboratorios (1-12)
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Sintaxis en Groovy
• La keyword para la definición de variables es def
• Los punto y coma al final de las sentencias son opcionales
 println x
 def y = 5; def x = y + 7
• Las declaraciones puede ir en varias lineas
• Los comentarios para una linea con el caracter // ....
• Los comentarios para varias lineas son con el caracter /* ... */
• La sentencia return es opcional
• Los parentesis son opcionales
• Soporta el paso de parametros con nombre en las invocaciones
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Sintaxis en Groovy
• Metodos y Clases en Groovy por defecto son public.
• La palabra in es keyword
• La palabra as es keyword
• Se realizan import por default
 * java.io.*
 * java.lang.*
 * java.math.BigDecimal
 * java.math.BigInteger
 * java.net.*
 * java.util.*
 * groovy.lang.*
 * groovy.util.*
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Agenda
• Que es Groovy
• Caracteristicas de Groovy
• Sintaxis en Groovy
• Recursos
• Laboratorios (1-12)
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Recursos
• Groovy Language, guides, examples
 http://groovy.codehaus.org
• Groovy Eclipse Plugin
 http://groovy.codehaus.org/Eclipse+Plugin
• Groovy Related News
 http://aboutgroovy.com
 http://groovyblogs.org
 http://groovy.dzone.com
• Andres Almiray’s Groovy Commiter
http://jroller.com/aalmiray
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
Un lenguaje dinámico para la JVM
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Lab 01 – Instalación de Groovy ( Linux y Windows)
• Download Groovy 1.5.6 stable
• http://groovy.codehaus.org/Download
• Linux
Ubuntu/Debian http://dist.codehaus.org/groovy/distributions/installers/deb/groovy-1.5.6.deb
Install
# sudo dpkg –install groovy-1.5.6.deb
# groovy -version
Groovy Version: 1.5.6 JVM: 1.5.0_14-b03
• Windows
 http://dist.codehaus.org/groovy/distributions/installers/windows/nsis/groovy-1.5.6-installer.exe
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Lab 01 – Instalación de Groovy ( Linux y Windows)
• GroovyConsole ( Consola Gráfica de Groovy )
print “hola” Ctrl + R
• groovysh ( Consola de Groovy )
print “hola” Enter
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Lab 02 – Eclipse y Groovy Plug-in
• Eclipse 3.3.1
Help >> Software Update >> Find and Install
* Search for new feature for install
• Plug-in site
http://dist.codehaus.org/groovy/distributions/update/
• Detalles
http://docs.codehaus.org/download/attachments/2744/Groovy_Installation_Eclipse_Plugin.pdf?version=1
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 03 – Hola Mundo
class HelloWorld {
String name
String greet()
{ return "Hello "+ name }
static void main( args ){
HelloWorld helloWorld = new HelloWorld()
helloWorld.setName("Groovy")
println( helloWorld.greet() )
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 04 – Tipos dinámicos
• Utiliza el operador def , cuando no necesites tipificar la variable a utilizar.
( def es el equivalente al operador var en JavaScript)
• Groovy utilizara el tipo correcto para la variable.
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 04 – Tipos dinámicos
class HelloWorld {
def name
def greet()
{ return "Hello "+ name }
static void main( args ){
def helloWorld = new HelloWorld()
helloWorld.setName("Groovy")
println( helloWorld.greet() )
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 04 – Tipos dinámicos
class Calculadora {
def suma(a,b)
{ return a+b }
def resta(a,b)
{ return a-b }
static void main( args ){
def calculadora = new Calculadora()
println calculadora.suma(5,5)
println calculadora.resta(5,5)
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 05 - GString
• Groovy soporta la capacidad de incrustar variables dentro de
String
• Capacidad de definir bloques de String entre los caracteres
“”” …. “””
• Capacidad de invocar APIs dentro de String
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 05 – GString
class HelloWorld {
def name
def greet()
{ return "Hello ${name}" }
static void main( args ){
def helloWorld = new HelloWorld()
helloWorld.setName("Groovy")
println( helloWorld.greet() )
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 05 – GString
class Noticia {
def titulo
def cuerpo
def publicar() {
return “””
t ${titulo} n
t t ${cuerpo} n
“””
}
static void main( args ){
def noticia = new Noticia()
noticia.setTitulo(“Liberacion de Groovy")
noticia.setCuerpo(“Se libero la version 1.5.6 ")
println( noticia.publicar() )
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 05 – GString
class Noticia {
def titulo
def cuerpo
def publicar() {
return “””
t ${title} n
t t ${cuerpo} n
“”” }
static void main( args ){
def noticia = new Noticia()
noticia.setTitulo(“Liberacion de Groovy")
noticia.setCuerpo(“Se libero la version 1.5.6 ")
println( noticia.publicar() )
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 05 – GString
class Noticia {
def titulo
def cuerpo
def publicar() {
return “””
t ${titulo} n
t t ${cuerpo} n
“””
}
static void main( args ){
def noticia = new Noticia()
noticia.setTitulo(“Liberacion de Groovy")
noticia.setCuerpo(“Se libero la version 1.5.6 ")
println “${noticia.publicar()}”
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 06 – POGOs
class Noticia {
def titulo
def cuerpo
static void main( args ){
def noticia = new Noticia()
noticia.setTitulo(“Liberacion de Groovy”)
noticia.setCuerpo(“Se libero la version 1.5.6 “)
println “${noticia.getTitulo()}”
println “${noticia.getCuerpo()}”
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 06 – POGOs
class Noticia {
def titulo
def cuerpo
static void main( args ){
def noticia = new Noticia()
noticia.titulo = “Liberacion de Groovy”
noticia.cuerpo = “Se libero la version 1.5.6 “
println “${noticia.titulo}”
println “${noticia.cuerpo}”
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 06 – POGOs
class Noticia {
def titulo
def cuerpo
static void main( args ){
def noticia = new Noticia(titulo: “Liberacion de Groovy”,
cuerpo: “Se libero la version 1.5.6“)
println “${noticia.titulo}”
println “${noticia.cuerpo}”
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 07 - Closures
• Bloque de código anónimo definido entre llaves, el cual toma
argumentos y retorna valor.
• Si se omite el nombre del argumento , este recibe el nombre de it
• Los Closures siempre generan un return ,la cual sera por defecto
la ultima sentencia evaluada.
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 06 – Closures
class Noticia {
def titulo
def cuerpo
static void main( args ){
def salida = { println it }
def noticia = new Noticia(titulo: “Liberacion de Groovy”,
cuerpo: “Se libero la version 1.5.6“)
salida( “${noticia.titulo}”)
salida( “${noticia.cuerpo}”)
}
}
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 08 –Operadores
• ?: (elvis) - Una redifinicion del ternary operator
• ?. Safe dereference – Navegando por un objeto sin tener la
preocupacion de obtener un NullPointerException.
• <=> (spaceship) – Comparacion de dos valores con un retorno a
boolean.
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 10 – GroovyMarkup y GPath
• Groovy tiene un sorpote para varios tipos de
lenguajes de marcas como lo son : XML, HTML, SAX,
W3C DOM, Ant tasks.
• GPath define una sintaxis para la navegacion por
estructuras de datos.
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramación
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 11 – Metaprogramación
• Escribir programas que escriben o manipulan a otros programas
o a si mismos.
• Soporte para agregar metodos y propiedades a un objeto en
runtime.
• Soporte para interceptar llamadas a metodos, simulando algo parecido a
AOP.
• Groovy extiende clases como String y Integer con nuevos metodos, esto
es conocido con el nombre de GDK.
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 12- GroovyServlet
• Permite el desarrollo de Servlet en formato de script
• Se pueder realizar cambios sin tener que reiniciar el server
• No es necesario parsar por un proceso de compilacion
• Utilies para el desarrollo de prototipos o funcionalidades
acotadas
• Se realiza el binding de una serie de objetos para faciliar el uso
dentro del scope de Groovy
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 12- GroovyServlet
• request - the HttpServletRequest
• response - the HttpServletResponse
• application - the ServletContext associated with the servlet
• session - the HttpSession associated with the HttpServletRequest
• out - the PrintWriter associated with the ServletRequest
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 12- GroovyServlet
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>GroovyAction</servlet-name>
<servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GroovyAction</servlet-name>
<url-pattern>/action/*</url-pattern>
</servlet-mapping>
</web-app>
http://www.jroller.com/afuentes/entry/groovyservlet_ejemplo
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Laboratorios
• Lab 01 – Instalación de Groovy ( Linux and Windows )
• Lab 02 - Eclipse y Groovy Plug-ins
• Lab 03 - Hola Mundo
• Lab 04 - Tipos dinamicos
• Lab 05 - GString
• Lab 06 - POGOs
• Lab 07 - Closures
• Lab 08 - Operadores
• Lab 09 - List y Map y iteradores
• Lab 10 - GroovyMarkup y GPath
• Lab 11 - Metaprogramacion
• Lab 12 - GroovyServlet
• Lab 13 - Gsql
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Labs 13 - GSql
• API que permite todo el manejo de Acceso a Base de Datos en
forma facil
• Permite la generacion de select en pocas lineas de codigos
Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0
Gracias!

Mais conteúdo relacionado

Mais procurados

Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en españolRamón Glez
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitSergio Rus
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada diaAlan Descoins
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a GitMario IC
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideferosorno
 

Mais procurados (13)

Introducción a Git (Git 101)
Introducción a Git (Git 101)Introducción a Git (Git 101)
Introducción a Git (Git 101)
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a Git
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
 
Git git hub
Git git hubGit git hub
Git git hub
 

Semelhante a Introduction a Groovy

Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Seminario de Groovy y grails
Seminario de Groovy y grailsSeminario de Groovy y grails
Seminario de Groovy y grailsParadigma Digital
 
Introducción a Grails
Introducción a GrailsIntroducción a Grails
Introducción a Grailsjose diaz
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaDomingo Suarez Torres
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011jose diaz
 
Lenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineLenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineÓscar Andrés López
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Jose Juan R. Zuñiga
 
Java 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreJava 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreHillmerC
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9Eudris Cabrera
 
Sun y el software de código abierto
Sun y el software de código abiertoSun y el software de código abierto
Sun y el software de código abiertoIban Nieto Castillero
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)Alvaro Huarte
 

Semelhante a Introduction a Groovy (20)

Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Eleva tu capacidad con Groovy
Eleva tu capacidad con GroovyEleva tu capacidad con Groovy
Eleva tu capacidad con Groovy
 
grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
 
Taller Groovy
Taller GroovyTaller Groovy
Taller Groovy
 
Seminario de Groovy y grails
Seminario de Groovy y grailsSeminario de Groovy y grails
Seminario de Groovy y grails
 
Introducción a Grails
Introducción a GrailsIntroducción a Grails
Introducción a Grails
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Lenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineLenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual Machine
 
Dynamic jvm
Dynamic jvmDynamic jvm
Dynamic jvm
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
 
Intro a Grails @ ITESCA
Intro a Grails @ ITESCAIntro a Grails @ ITESCA
Intro a Grails @ ITESCA
 
Java 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreJava 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and more
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9
 
Sun y el software de código abierto
Sun y el software de código abiertoSun y el software de código abierto
Sun y el software de código abierto
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
Experiencia en el desarrollo de GIS opensource (QGIS, GWC, GDAL-OGR)
 
Open ls
Open lsOpen ls
Open ls
 

Último

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 

Último (20)

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 

Introduction a Groovy

  • 1. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Introducción a Groovy Un lenguaje dinámico para la JVM
  • 2. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Agenda • Que es Groovy • Caracteristicas Lenguaje Groovy • Sintaxis en Groovy • Comunidad Groovy • Laboratorios (1-13)
  • 3. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinámicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 4. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Agenda • Que es Groovy • Caracteristicas Lenguaje Groovy • Sintaxis en Groovy • Comunidad Groovy • Laboratorios (1-12)
  • 5. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Que es Groovy? • Groovy es un agil y dinámico lenguaje para la Java Virtual Machine • Construido pensando en Java pero adicionando las poderosas caracteristicas de lenguajes como Python, Ruby & Smalltalk. • Entregas atractivas caracteristicas disponibles para los desarrolladores de Java con una pequeña curva depequeña curva de aprendizaje.aprendizaje. • Soporta Domain Specific Languages y otras sintaxis compactas que facilitan tanto la lectura como la mantencion del codigo. • Permite la integracion con todo los Objetos y librerias existentes desarrolladas en Java.
  • 6. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Agenda • Que es Groovy • Caracteristicas de Groovy • Sintaxis en Groovy • Comunidad Groovy • Laboratorios (1-12)
  • 7. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Caracteristicas de Groovy • Closures • Sintaxis nativa para List y Maps • Soporte para GroovyMarkup y GPath • Soporte nativo para expresiones regulares • Soporte para tipificación dinámica y estática. • Soporta embeber expresiones dentro de string • Una gran cantidad de Metodos agregados al JDK. • Simple sintaxis para escribir Beans ( getter y setter ) • Soporte para Anotaciones y Genericos
  • 8. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Agenda • Que es Groovy • Caracteristicas de Groovy • Sintaxis en Groovy • Comunidad Groovy • Laboratorios (1-12)
  • 9. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Sintaxis en Groovy • La keyword para la definición de variables es def • Los punto y coma al final de las sentencias son opcionales  println x  def y = 5; def x = y + 7 • Las declaraciones puede ir en varias lineas • Los comentarios para una linea con el caracter // .... • Los comentarios para varias lineas son con el caracter /* ... */ • La sentencia return es opcional • Los parentesis son opcionales • Soporta el paso de parametros con nombre en las invocaciones
  • 10. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Sintaxis en Groovy • Metodos y Clases en Groovy por defecto son public. • La palabra in es keyword • La palabra as es keyword • Se realizan import por default  * java.io.*  * java.lang.*  * java.math.BigDecimal  * java.math.BigInteger  * java.net.*  * java.util.*  * groovy.lang.*  * groovy.util.*
  • 11. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Agenda • Que es Groovy • Caracteristicas de Groovy • Sintaxis en Groovy • Recursos • Laboratorios (1-12)
  • 12. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Recursos • Groovy Language, guides, examples  http://groovy.codehaus.org • Groovy Eclipse Plugin  http://groovy.codehaus.org/Eclipse+Plugin • Groovy Related News  http://aboutgroovy.com  http://groovyblogs.org  http://groovy.dzone.com • Andres Almiray’s Groovy Commiter http://jroller.com/aalmiray
  • 13. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios Un lenguaje dinámico para la JVM
  • 14. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 15. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Lab 01 – Instalación de Groovy ( Linux y Windows) • Download Groovy 1.5.6 stable • http://groovy.codehaus.org/Download • Linux Ubuntu/Debian http://dist.codehaus.org/groovy/distributions/installers/deb/groovy-1.5.6.deb Install # sudo dpkg –install groovy-1.5.6.deb # groovy -version Groovy Version: 1.5.6 JVM: 1.5.0_14-b03 • Windows  http://dist.codehaus.org/groovy/distributions/installers/windows/nsis/groovy-1.5.6-installer.exe
  • 16. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Lab 01 – Instalación de Groovy ( Linux y Windows) • GroovyConsole ( Consola Gráfica de Groovy ) print “hola” Ctrl + R • groovysh ( Consola de Groovy ) print “hola” Enter
  • 17. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 18. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Lab 02 – Eclipse y Groovy Plug-in • Eclipse 3.3.1 Help >> Software Update >> Find and Install * Search for new feature for install • Plug-in site http://dist.codehaus.org/groovy/distributions/update/ • Detalles http://docs.codehaus.org/download/attachments/2744/Groovy_Installation_Eclipse_Plugin.pdf?version=1
  • 19. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 20. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 03 – Hola Mundo class HelloWorld { String name String greet() { return "Hello "+ name } static void main( args ){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName("Groovy") println( helloWorld.greet() ) } }
  • 21. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 22. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 04 – Tipos dinámicos • Utiliza el operador def , cuando no necesites tipificar la variable a utilizar. ( def es el equivalente al operador var en JavaScript) • Groovy utilizara el tipo correcto para la variable.
  • 23. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 04 – Tipos dinámicos class HelloWorld { def name def greet() { return "Hello "+ name } static void main( args ){ def helloWorld = new HelloWorld() helloWorld.setName("Groovy") println( helloWorld.greet() ) } }
  • 24. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 04 – Tipos dinámicos class Calculadora { def suma(a,b) { return a+b } def resta(a,b) { return a-b } static void main( args ){ def calculadora = new Calculadora() println calculadora.suma(5,5) println calculadora.resta(5,5) } }
  • 25. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 26. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 05 - GString • Groovy soporta la capacidad de incrustar variables dentro de String • Capacidad de definir bloques de String entre los caracteres “”” …. “”” • Capacidad de invocar APIs dentro de String
  • 27. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 05 – GString class HelloWorld { def name def greet() { return "Hello ${name}" } static void main( args ){ def helloWorld = new HelloWorld() helloWorld.setName("Groovy") println( helloWorld.greet() ) } }
  • 28. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 05 – GString class Noticia { def titulo def cuerpo def publicar() { return “”” t ${titulo} n t t ${cuerpo} n “”” } static void main( args ){ def noticia = new Noticia() noticia.setTitulo(“Liberacion de Groovy") noticia.setCuerpo(“Se libero la version 1.5.6 ") println( noticia.publicar() ) } }
  • 29. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 05 – GString class Noticia { def titulo def cuerpo def publicar() { return “”” t ${title} n t t ${cuerpo} n “”” } static void main( args ){ def noticia = new Noticia() noticia.setTitulo(“Liberacion de Groovy") noticia.setCuerpo(“Se libero la version 1.5.6 ") println( noticia.publicar() ) } }
  • 30. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 05 – GString class Noticia { def titulo def cuerpo def publicar() { return “”” t ${titulo} n t t ${cuerpo} n “”” } static void main( args ){ def noticia = new Noticia() noticia.setTitulo(“Liberacion de Groovy") noticia.setCuerpo(“Se libero la version 1.5.6 ") println “${noticia.publicar()}” } }
  • 31. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 32. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 06 – POGOs class Noticia { def titulo def cuerpo static void main( args ){ def noticia = new Noticia() noticia.setTitulo(“Liberacion de Groovy”) noticia.setCuerpo(“Se libero la version 1.5.6 “) println “${noticia.getTitulo()}” println “${noticia.getCuerpo()}” } }
  • 33. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 06 – POGOs class Noticia { def titulo def cuerpo static void main( args ){ def noticia = new Noticia() noticia.titulo = “Liberacion de Groovy” noticia.cuerpo = “Se libero la version 1.5.6 “ println “${noticia.titulo}” println “${noticia.cuerpo}” } }
  • 34. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 06 – POGOs class Noticia { def titulo def cuerpo static void main( args ){ def noticia = new Noticia(titulo: “Liberacion de Groovy”, cuerpo: “Se libero la version 1.5.6“) println “${noticia.titulo}” println “${noticia.cuerpo}” } }
  • 35. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 36. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 07 - Closures • Bloque de código anónimo definido entre llaves, el cual toma argumentos y retorna valor. • Si se omite el nombre del argumento , este recibe el nombre de it • Los Closures siempre generan un return ,la cual sera por defecto la ultima sentencia evaluada.
  • 37. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 06 – Closures class Noticia { def titulo def cuerpo static void main( args ){ def salida = { println it } def noticia = new Noticia(titulo: “Liberacion de Groovy”, cuerpo: “Se libero la version 1.5.6“) salida( “${noticia.titulo}”) salida( “${noticia.cuerpo}”) } }
  • 38. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 39. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 08 –Operadores • ?: (elvis) - Una redifinicion del ternary operator • ?. Safe dereference – Navegando por un objeto sin tener la preocupacion de obtener un NullPointerException. • <=> (spaceship) – Comparacion de dos valores con un retorno a boolean.
  • 40. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 41. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 42. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 10 – GroovyMarkup y GPath • Groovy tiene un sorpote para varios tipos de lenguajes de marcas como lo son : XML, HTML, SAX, W3C DOM, Ant tasks. • GPath define una sintaxis para la navegacion por estructuras de datos.
  • 43. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramación • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 44. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 11 – Metaprogramación • Escribir programas que escriben o manipulan a otros programas o a si mismos. • Soporte para agregar metodos y propiedades a un objeto en runtime. • Soporte para interceptar llamadas a metodos, simulando algo parecido a AOP. • Groovy extiende clases como String y Integer con nuevos metodos, esto es conocido con el nombre de GDK.
  • 45. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 46. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 12- GroovyServlet • Permite el desarrollo de Servlet en formato de script • Se pueder realizar cambios sin tener que reiniciar el server • No es necesario parsar por un proceso de compilacion • Utilies para el desarrollo de prototipos o funcionalidades acotadas • Se realiza el binding de una serie de objetos para faciliar el uso dentro del scope de Groovy
  • 47. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 12- GroovyServlet • request - the HttpServletRequest • response - the HttpServletResponse • application - the ServletContext associated with the servlet • session - the HttpSession associated with the HttpServletRequest • out - the PrintWriter associated with the ServletRequest
  • 48. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 12- GroovyServlet <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>GroovyAction</servlet-name> <servlet-class>groovy.servlet.GroovyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GroovyAction</servlet-name> <url-pattern>/action/*</url-pattern> </servlet-mapping> </web-app> http://www.jroller.com/afuentes/entry/groovyservlet_ejemplo
  • 49. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Laboratorios • Lab 01 – Instalación de Groovy ( Linux and Windows ) • Lab 02 - Eclipse y Groovy Plug-ins • Lab 03 - Hola Mundo • Lab 04 - Tipos dinamicos • Lab 05 - GString • Lab 06 - POGOs • Lab 07 - Closures • Lab 08 - Operadores • Lab 09 - List y Map y iteradores • Lab 10 - GroovyMarkup y GPath • Lab 11 - Metaprogramacion • Lab 12 - GroovyServlet • Lab 13 - Gsql
  • 50. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Labs 13 - GSql • API que permite todo el manejo de Acceso a Base de Datos en forma facil • Permite la generacion de select en pocas lineas de codigos
  • 51. Introduccion a Groovy | © 2008 by «Alex Fuentes»; made available under the GPL v1.0 Gracias!