Groovy

1,621 views

Published on

Clase de Groovy para Seminario de ingeniería en informática. Cátedra de Pablo Cosso. Clase a cargo de Nicolás Bello Camilletti.
Mas información y código fuente: http://www.assembla.com/spaces/clase-groovy/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,621
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 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
  • 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.
  • // Ahora vemos que cambiando la variable cambiamos el closure
  • 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.
  • 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
  • Default imports:java.io.*java.lang.*java.math.BigDecimaljava.math.BigIntegerjava.net.*java.util.*groovy.lang.*groovy.util.*
  • Groovy

    1. 1. Seminario de Ing. en Informática Cátedra: Pablo CossoColaborador: Nicolás Bello Camilletti 2do cuatrimestre 2011
    2. 2. ¿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
    3. 3. 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.#
    4. 4. Características Lenguaje interpretado Orientado a Objetos Fuertemente tipado Duck Typing (tipado dinámico) Se ejecuta sobre la JVM Soporte para DSL
    5. 5. Variables Tipado estático  Escribiendo el tipo explícitamente Tipado dinámico  Utilizando la palabra reservada def
    6. 6. Sistema de Tipos Numeros Enteros  Colecciones  Integer  List  Long  Map  BigInteger  Set  Byte  Short  Rangos Punto flotante  Strings  BigDecimal  Float  Expresiones Regulares  Double  Boolean
    7. 7. Colecciones – Listas
    8. 8. Colecciones - Maps
    9. 9. Colecciones - Rangos
    10. 10. Strings y GStrings
    11. 11. Expresiones Regulares
    12. 12. 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
    13. 13. Condicionales
    14. 14. Ciclos
    15. 15. Métodos
    16. 16. Closures (1) { [param1, param2 …] -> sentencia1; sentencia2... }
    17. 17. Closures (2)
    18. 18. Ciclos con closures (1) Each EachWithIndex Times
    19. 19. Ciclos con closures (2) Collect FindAll
    20. 20. Operadores Colección*.operación  Aplica la operación a cada elemento de la colección objeto?.operación  elvis operator  Similar a
    21. 21. Orientación a Objetos (1)
    22. 22. Orientación a Objetos (2)
    23. 23. OO (3) - Interfaces
    24. 24. GroovyBeans (1)
    25. 25. 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
    26. 26. Expando
    27. 27. Implementando Interfaces con Map
    28. 28. Excepciones
    29. 29. Concurrencia
    30. 30. Domain Specific Languages Muy buen soporte Concepto de Builders Sobrecarga de operadores Closures como parámetros Y muchos mas…
    31. 31. Soporte para Lenguajes de Marcado
    32. 32. Diferencias con java Defaults imports == es equals Return opcional This en métodos estáticos para clase The Groovy way… 
    33. 33. Ejemplos Java Groovy
    34. 34. Programación de GUI Wrapper de Swing  Usa Builders
    35. 35. Usar Groovy en: Integración de componentes Modelos de negocio muy dinámicos Pruebas de concepto Proyectos rápidos y chicos Scripting
    36. 36. 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

    ×