SlideShare une entreprise Scribd logo
1  sur  41
Seminario de Ing. en Informática
               Cátedra: Pablo Cosso

Colaborador: Nicolás Bello Camilletti
               2do cuatrimestre 2011
¿Que es Groovy?
 Lenguaje ágil y dinámico para la JVM

 Basado en Python, Ruby, Perl y Smalltalk

 Curva de aprendizaje casi nula

 Facilita la escritura de scripts

 Soporta Domain Specific Languages (DSL)

 Integración con Java
Historia
 29/08/2003: post de James Strachan  Nace Groovy.

 16/03/2004: Propuesta JSR 241

 29/03/2004: Se aprueba la JSR 241

 02/01/2007: se lanza la versión 1.0

 07/12/2007: versión 1.1  se renombra a 1.5

 Actualmente -> 1.8.#
Características
 Lenguaje interpretado

 Orientado a Objetos

 Fuertemente tipado

 Duck Typing (tipado dinámico)

 Se ejecuta sobre la JVM

 Soporte para DSL
Variables
 Tipado estático
   Escribiendo el tipo explícitamente



 Tipado dinámico
   Utilizando la palabra reservada def
Sistema de Tipos
 Numeros Enteros    Colecciones
    Integer
                        List
    Long
                        Map
    BigInteger
                        Set
    Byte

    Short           Rangos
 Punto flotante     Strings
    BigDecimal

    Float           Expresiones Regulares
    Double
                     Boolean
Colecciones – Listas
Colecciones - Maps
Colecciones - Rangos
Strings y GStrings
Expresiones Regulares
Groovy Truth
 Boolean
 Cosas que son false
    Colecciones vacías(listas, maps)
    Iteradores y enumeradores sin mas elementos
    Strings vacios
    Matchers de regex que no coinciden (=~)
    Cero
    null
Condicionales
Ciclos
Métodos
Closures (1)
 { [param1, param2 …] -> sentencia1; sentencia2... }
Closures (2)
Ciclos con closures (1)
 Each




 EachWithIndex


 Times
Ciclos con closures (2)
 Collect




 FindAll
Operadores
 Colección*.operación


   Aplica la operación a cada elemento de la colección


 objeto?.operación  elvis operator

   Similar a
Orientación a Objetos (1)
Orientación a Objetos (2)
OO (3) - Interfaces
GroovyBeans (1)
GroovyBeans (2)
 Con access modifier
    Field

 Sin access modifier
    Field privado
    Mas getter y setter públicos (una property). Se pueden sobreescribir

 Property final
    Field privado como final
    Solo getter
Expando
Implementando Interfaces con Map
Excepciones
Concurrencia
Domain Specific Languages
 Muy buen soporte

 Concepto de Builders

 Sobrecarga de operadores

 Closures como parámetros

 Y muchos mas…
Soporte para Lenguajes de Marcado
Diferencias con java
 Defaults imports

 == es equals

 Return opcional

 This en métodos estáticos para clase

 The Groovy way… 
Ejemplos
 Java




 Groovy
Programación de GUI
 Wrapper de Swing  Usa Builders
Usar Groovy en:
 Integración de componentes

 Modelos de negocio muy dinámicos

 Pruebas de concepto

 Proyectos rápidos y chicos

 Scripting
No usar Groovy en:
 Algoritmos complejos
    Cálculos intensivos

 Manejo de grandes cantidades de datos
    Problema con creación de objetos por ser dinámico

 Sistemas con
    Requerimientos bien definidos

    Pocas posibilidades de evolución

 Proyectos muy grandes
Groovy
Groovy
Groovy
Groovy

Contenu connexe

Tendances (7)

Merge sort
Merge sortMerge sort
Merge sort
 
Etiquetas de lenguaje html mas utilizadas
Etiquetas de lenguaje html mas utilizadasEtiquetas de lenguaje html mas utilizadas
Etiquetas de lenguaje html mas utilizadas
 
Introduction to html course digital markerters
Introduction to html course digital markertersIntroduction to html course digital markerters
Introduction to html course digital markerters
 
Raíz cuadrada ppt
Raíz cuadrada pptRaíz cuadrada ppt
Raíz cuadrada ppt
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
 
Java script -23jan2015
Java script -23jan2015Java script -23jan2015
Java script -23jan2015
 
Medición - 3D Poliedros Área Total
Medición - 3D Poliedros Área TotalMedición - 3D Poliedros Área Total
Medición - 3D Poliedros Área Total
 

Similaire à Groovy

Manual De Javascript
Manual De JavascriptManual De Javascript
Manual De Javascript
Steven Gomez
 
Manual javascript
Manual javascriptManual javascript
Manual javascript
Hinovska
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascript
Crisworks
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascript
David Blanco
 

Similaire à Groovy (20)

Groovy.v2
Groovy.v2Groovy.v2
Groovy.v2
 
Groovy
GroovyGroovy
Groovy
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVM
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Lenguaje de programación Ruby
Lenguaje de programación RubyLenguaje de programación Ruby
Lenguaje de programación Ruby
 
Manual De Javascript
Manual De JavascriptManual De Javascript
Manual De Javascript
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascript
 
Manual javascript
Manual javascriptManual javascript
Manual javascript
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascript
 
javascript
 javascript javascript
javascript
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Clase15
Clase15Clase15
Clase15
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 
Lenguaje de Alto Nivel (I Bimestre)
Lenguaje de Alto Nivel (I Bimestre)Lenguaje de Alto Nivel (I Bimestre)
Lenguaje de Alto Nivel (I Bimestre)
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
Curso Java Inicial 2 - Introducción y Sintaxis
Curso Java Inicial  2 - Introducción y SintaxisCurso Java Inicial  2 - Introducción y Sintaxis
Curso Java Inicial 2 - Introducción y Sintaxis
 
Realizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y EficaciaRealizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y Eficacia
 

Plus de Nicolás Bello Camilletti

Plus de Nicolás Bello Camilletti (16)

Novedades en CI/CD
Novedades en CI/CDNovedades en CI/CD
Novedades en CI/CD
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
 
Personalizando experiencias de usuario con Reinforcement learning y Azure
Personalizando experiencias de usuario con Reinforcement learning y AzurePersonalizando experiencias de usuario con Reinforcement learning y Azure
Personalizando experiencias de usuario con Reinforcement learning y Azure
 
Progressive Web Apps - Workshop
Progressive Web Apps - WorkshopProgressive Web Apps - Workshop
Progressive Web Apps - Workshop
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Introducción a .NET Core y Docker
Introducción a .NET Core y DockerIntroducción a .NET Core y Docker
Introducción a .NET Core y Docker
 
Progressive Web Apps - .NET Conf CO 2017
Progressive Web Apps - .NET Conf CO 2017Progressive Web Apps - .NET Conf CO 2017
Progressive Web Apps - .NET Conf CO 2017
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Creando una SPA con Angular y ASP.NET Core
Creando una SPA con Angular y ASP.NET CoreCreando una SPA con Angular y ASP.NET Core
Creando una SPA con Angular y ASP.NET Core
 
Creando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET CoreCreando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET Core
 
Creando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET CoreCreando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET Core
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Clase Html + CSS
Clase Html + CSSClase Html + CSS
Clase Html + CSS
 
Windows Azure DPE Toolkits
Windows Azure DPE ToolkitsWindows Azure DPE Toolkits
Windows Azure DPE Toolkits
 
Grails
GrailsGrails
Grails
 

Dernier

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Dernier (15)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Groovy

Notes de l'éditeur

  1. FilosofíaLenguaje ágil y dinámico para la Java Virtual MachinePuntos fuertes de Java pero con características adicionales inspiradas en lenguajes como Python, Ruby y SmalltalkCurva de aprendizaje casi nula para desarrolladores JavaCódigo fácil de leer y mantener.Facilita la escritura de scripts Reducción de código estructural en aplicaciones web, GUI, de bases de datos o de consolaSimplifica el testeoSe integra sin problemas a objetos Java y librerías existentes.Compila directamente a bytecode de la JVM.Groovy is licensed under the Apache 2 license:http://www.apache.org/licenses/LICENSE-2.0.html
  2. 29/08/2003: James Strachan hace un post en su blog dándole nacimiento a Groovy.16/03/2004: se propone al JCP, bajo la JSR 241 la especificación de Groovy dentro de la JVMJava Specification Request241: The Groovy Programming Language29/03/2004: se aprueba de forma unánime por todo el comité. La especificación se larga con una licencia estilo BSD / Apache02/01/2007: se lanza la versión 1.0 y durante este año Groovy gana el premio JAX al proyecto más innovador y creativo del año.
  3. // Ahora vemos que cambiando la variable cambiamos el closure
  4. An Expando is different from a map in that you can provide synthetic methods that you can call on the object.The player.greeting assignment passes in a closure to execute when greeting() is called on the Expando. Notice that the closure has access to the properties assigned to the Expando, even though these values may change over time, using Groovy's GString "$variableOrProperty" notation.
  5. Builders are based on the builder pattern from the GOF design pattern book. It provides a way to build your own DSL and represents a powerful concept in Groovy
  6. Default imports:java.io.*java.lang.*java.math.BigDecimaljava.math.BigIntegerjava.net.*java.util.*groovy.lang.*groovy.util.*