Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Introduction a Groovy

on

  • 3,192 views

Groovy nos entrega una nueva generación de lenguajes scripting que permite el desarrollo de aplicaciones en menos tiempo y de manera mucho mas legibles. Además la con la metaprogramacion de Groovy , ...

Groovy nos entrega una nueva generación de lenguajes scripting que permite el desarrollo de aplicaciones en menos tiempo y de manera mucho mas legibles. Además la con la metaprogramacion de Groovy , permite extender las funcionalidades de la API de Java en Runtime.

Statistics

Views

Total Views
3,192
Views on SlideShare
3,179
Embed Views
13

Actions

Likes
0
Downloads
60
Comments
0

2 Embeds 13

http://www.slideshare.net 9
http://www.linkedin.com 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introduction a  Groovy Introduction a Groovy Presentation Transcript

  • Introducción a Groovy Un lenguaje dinámico para la JVM
  • Agenda
    • Que es Groovy
    • Caracteristicas Lenguaje Groovy
    • Sintaxis en Groovy
    • Comunidad Groovy
    • Laboratorios (1-13)
  • 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
  • Agenda
    • Que es Groovy
    • Caracteristicas Lenguaje Groovy
    • Sintaxis en Groovy
    • Comunidad Groovy
    • Laboratorios (1-12)
  • 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 de 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.
  • Agenda
    • Que es Groovy
    • Caracteristicas de Groovy
    • Sintaxis en Groovy
    • Comunidad Groovy
    • Laboratorios (1-12)
  • 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
  • Agenda
    • Que es Groovy
    • Caracteristicas de Groovy
    • Sintaxis en Groovy
    • Comunidad Groovy
    • Laboratorios (1-12)
  • 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
  • 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.*
  • Agenda
    • Que es Groovy
    • Caracteristicas de Groovy
    • Sintaxis en Groovy
    • Recursos
    • Laboratorios (1-12)
  • 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
  • Laboratorios Un lenguaje dinámico para la JVM
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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() )
    • }
    • }
  • 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
  • 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.
  • 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() )
    • }
    • }
  • 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)
    • }
    • }
  • 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
  • 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
  • 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() )
    • }
    • }
  • Labs 05 – GString
    • class Noticia {
    • def titulo
    • def cuerpo
    • def publicar() {
    • return “ ””
    • ${titulo}
    • ${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.publicar() )
    • }
    • }
  • Labs 05 – GString
    • class Noticia {
    • def titulo
    • def cuerpo
    • def publicar() {
    • return “ ””
    • ${title}
    • ${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.publicar() )
    • }
    • }
  • Labs 05 – GString
    • class Noticia {
    • def titulo
    • def cuerpo
    • def publicar() {
    • return “ ””
    • ${titulo}
    • ${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.publicar() }”
    • }
    • }
  • 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
  • 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() }”
    • }
    • }
  • 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 }”
    • }
    • }
  • 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 }”
    • }
    • }
  • 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
  • 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.
  • 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 }” )
    • }
    • }
  • 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
  • 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.
  • 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
  • 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
  • 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.
  • 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
  • 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.
  • 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
  • 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
  • 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
  • Labs 12- GroovyServlet
    • <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?>
    • <web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;
    • xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    • xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;
    • version=&quot;2.4&quot;>
    • <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
  • 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
  • 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
  • Gracias!