Groovy es un lenguaje dinámico para la JVM y la evolución natural para un programador Java debido a su baja curva de aprendizaje.
Si quieres saber por qué programar con Groovy es una Hora de Aventuras, esta es tu charla. Aprenderás a través de ejemplos las principales características que hacen de Groovy un lenguaje tan potente y versatil: tipado dinámico, closures, manejo de listas y mapas, power asserts, builders, metaprogramación, scripting, DSL's, transformaciones AST y muchas más.
Te aseguro que después de ella tendrás ganas de profundizar y utilizarlo en tu día a día.
4. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
5. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
6. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
7. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
8. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
9. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
10. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
11. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
12. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
13. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
14. “Groovy es un lenguaje dinámico poderoso, opcionalmente
tipado, con capacidad de tipado y compilación estáticos para la
plataforma Java centrado en multiplicar la productividad de
los desarrolladores gracias a una sintaxis concisa, familiar y
fácil de aprender.
Se integra sin problemas con cualquier programa Java e
inmediatamente proporciona a tu aplicación poderosas
características como capacidades de scripting, DSLs,
metaprogramación en runtime y compile-time y programación
funcional.
– Web de Groovy
17. ➢ Java es sólido
➢ Conocido por muchos desarrolladores
➢ Muy extendido
➢ Es rápido
Pero...
➢ Java es verboso
➢ Puede ser incómodo en algunos casos
➢ No es dinámico
¿Y por qué no Java?
40. ➢ Dinámico
➢ Compilación estática opcional
➢ Todo es un objeto
➢ Sobrecarga de operadores
➢ + es .plus()
➢ * es .multiply()
➢ Sintaxis nativa de listas, mapas y rangos
➢ Métodos y clases public por defecto
➢ Las excepciones son unchecked
➢ http://groovy-lang.org/differences.html
Diferencias entre Java y Groovy
41. Getters y setters
public class Persona {
private String nombre;
private int edad;
String getNombre() {
return nombre;
}
void setNombre(String nombre) {
this.nombre = nombre;
}
int getEdad() {
return edad;
}
void setEdad(int edad) {
this.edad = edad;
}
}
42. Getters y setters
public class Persona {
private String nombre;
private int edad;
String getNombre() {
return nombre;
}
void setNombre(String nombre) {
this.nombre = nombre;
}
int getEdad() {
return edad;
}
void setEdad(int edad) {
this.edad = edad;
}
}
class Persona {
String nombre
int edad
}
43. Named constructors
class Persona {
String nombre
int edad
}
def p = new Persona(nombre: 'Iván', edad: 36)
assert p.nombre == 'Iván'
p.edad = 37
assert p.edad == 37
112. @EqualsAndHashCode
public class User extends java.lang.Object {
private java.lang.String name
private java.lang.Integer age
public int hashCode() {
java.lang.Object _result = org.codehaus.groovy.util.HashCodeHelper.initHash()
if (!(this.getName().is(this))) {
_result = org.codehaus.groovy.util.HashCodeHelper.updateHash(_result, this.getName())
}
if (!(this.getAge().is(this))) {
_result = org.codehaus.groovy.util.HashCodeHelper.updateHash(_result, this.getAge())
}
return _result
}
public boolean canEqual(java.lang.Object other) {
return other instanceof User
}
public boolean equals(java.lang.Object other) {
if ( other == null) {
return false
}
if (this.is(other)) {
return true
}
if (!( other instanceof User)) {
return false
}
User otherTyped = (( other ) as User)
if (!(otherTyped.canEqual( this ))) {
return false
}
if (!(this.getName() == otherTyped.getName())) {
return false
}
if (!(this.getAge() == otherTyped.getAge())) {
return false
}
return true
}
}