Lenguaje Groovy

  • Es un lenguaje que utiliza la máquina virtual de Java.
  • Es un lenguaje dinámico (al igual de lo que pasa con Javascript, nos permite añadir propiedades dinámicamente y el tipado de las variables es opcional)
  • Tiene una sintaxis muy concisa, fácil de aprender y similar a Java, que nos permite ser más productivos ya que nos permite hacer mucho más con menos código.
  • Podemos poner códigos de Groovy en un documento Java ( siempre que importemos el compilador).
  • Puedes utilizar código Java en Groovy.
  • Permite compilar en tiempo de ejecución ( modificaciones en caliente).
  • En Groovy, por defecto, las clases y los métodos son públicos.
  • Internamente, se generarán los getters y los setters de todas los atributos, y será utilizados utilizando una sintaxis similar a cuando llamamos a una propiedad.
persona.nombre = "Juan"

De esta forma estamos accediendo al getter del objeto, por lo que podemos omitir el modificador private de la propiedad porque de todas formas no vamos a poder acceder a ella directamente.

  • La última línea de todos los métodos que devuelven algo siempre es un return. Por tanto, podemos omitir el return e igualmente se ejecutará.
  • Podemos llamar a System.out.println escribiendo simplemente println.
  • Por cada clase, además del constructor vacío, se crean varios constructores, con todas las combinaciones posibles de atributos que tiene la clase. Podremos alimentar dichos constructores con un mapa.
  • Es indiferente usar comillas simples o dobles.
  • Los paréntesis de los métodos son opcionales.
  • El método que está fuera de la clase es automáticamente el public static void main.
  • Todas las excepciones son unchecked.
  • Es un Java con esteroides.

Utilizaremos la versión Community de IntelliJ.

Groovy vs Java

Saludador.java

public class Saludador {
    private String saludo;

    public void setSaludo(String saludo){
        this.saludo=saludo;
    }

    public String getSaludo(){
        return this.saludo;
    }

    public void diHolaA(String... nombres){
        String mensajeSaludo=prepararMensajeSaludo(nombres);
        System.out.println(mensajeSaludo);
    }

    public String prepararMensajeSaludo(String... nombres){
        String delimitador="";
        StringBuilder sb=new StringBuilder();
        for(String nombre: nombres){
            sb.append(delimitador).append(nombre);
            delimitador=", ";
        }
        return this.saludo+" "+sb.toString()+"!";
    }

    public static void main(String[] args){
        final Saludador saludador=new Saludador();
        saludador.setSaludo("Hola");
        saludador.diHolaA("Pablo", "Alex", "Conde Bracula", "Hombre del saco");
    }
}

Saludador.groovy

class Saludador {
    String saludo

    void diHolaA(String... nombres){
       println "${this.saludo} ${nombres.join(', ')}!"
    }
}
final Saludador saludador=new Saludador(saludo: "Hola")
saludador.diHolaA "Pablo", "Alex", "Conde Bracula", "Hombre del saco"

Operador *

Nos permite acceder a todos los elementos de una lista.

def saludos=[new Saludador(saludo:'hola'), new Saludador(saludo: 'hello')]
println saludos*.saludo

Aviso Legal | Política de privacidad