Groovy.v2

824 views

Published on

Groovy slides used at 24/05/2012 talk at FIUBA

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

  • Be the first to like this

No Downloads
Views
Total views
824
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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.v2

    1. 1. Nicolás Bello Camilletti @nbellocam
    2. 2. ¿Que es Groovy?
    3. 3. Esto era Groovy
    4. 4. Lenguaje ágil ydinámico para la JVM
    5. 5. Integración con JavaJava Groovy Scala … JVM
    6. 6. Curva de aprendizaje casi nula
    7. 7. Facilita la escritura de scripts
    8. 8. Soporta DomainSpecific Languages
    9. 9. Fuertemente tipado
    10. 10. Orientado a objetos
    11. 11. Duck Typing
    12. 12. Historia 29/03/200429/08/2003 Se aprueba 07/12/2007Nacimiento la JSR 241 Versión 1.5 16/03/2004 02/01/2007 Actualmente Propuesta Versión 1.0 Versión 1.8.# JSR 241 y beta de 2
    13. 13. Algunasparticularidades
    14. 14. Variables• Tipado estático – Escribiendo el tipo explícitamente• Tipado dinámico – Utilizando la palabra reservada def
    15. 15. Sistema de Tipos• Numeros Enteros • Boolean – Integer – Long • Strings – BigInteger – Byte • Colecciones – Short – List – Map• Punto flotante – Set – BigDecimal – Float • Rangos – Double • Expresiones Regulares
    16. 16. Colecciones – Listas
    17. 17. Colecciones - Maps
    18. 18. Colecciones - Rangos
    19. 19. Strings y GStrings
    20. 20. Expresiones Regulares
    21. 21. 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
    22. 22. Métodos
    23. 23. Closures (1)• { [param1, param2 …] -> sentencia1; sentencia2... }
    24. 24. Closures (2)
    25. 25. Ciclos con closures (1)• Each• EachWithIndex• Times
    26. 26. Ciclos con closures (2)• Collect• FindAll
    27. 27. Operadores (1)• Colección*.operación  Spread Operator• objeto?.operación  Safe Navigation Operator – Similar a:
    28. 28. Operadores (2)• objeto?:valorDefault Elvis Operator def displayName = user.name ?: "Anonymous" – Operador ternario equivalente def displayName = user.name ? user.name : "Anonymous“
    29. 29. Orientación a Objetos
    30. 30. GroovyBeans (1)
    31. 31. 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
    32. 32. Expando
    33. 33. Implementando Interfaces con Map
    34. 34. Domain Specific Languages• Muy buen soporte• Concepto de Builders• Sobrecarga de operadores• Closures como parámetros• Y muchos mas…
    35. 35. Soporte para Lenguajes de Marcado
    36. 36. Diferencias con java• Defaults imports• == es equals• Return opcional• This en métodos estáticos para clase• The Groovy way… 
    37. 37. Ejemplos• Java• Groovy
    38. 38. Ejemplo concurrencia• Groovy• Java
    39. 39. Programación de GUI• Wrapper de Swing  Usa Builders
    40. 40. Conclusiones
    41. 41. Usar Groovy en:• Integración de componentes• Modelos de negocio muy dinámicos• Pruebas de concepto• Proyectos rápidos y chicos• Scripting
    42. 42. 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
    43. 43. No trabajen duro.Trabajen de forma inteligente!
    44. 44. Recursos• Sitio oficial – http://groovy.codehaus.org/
    45. 45. Pruébenlo!
    46. 46. Muchas Gracias!!!

    ×