Apache Groovy un amore a prima vista

INTRODUZIONE

Prima di introdurre qualche esempio facendo un confronto tra Java e Groovy voglio citare la traduzione della frase principale indicata sul sito ufficiale di Apache Groovy:

Apache Groovy è un potente linguaggio opzionale, tipizzato e dinamico, con capacità di tipizzazione statica e di compilazione statica, per la piattaforma Java volta a migliorare la produttività degli sviluppatori grazie a una sintassi concisa, familiare e facile da apprendere. 

Forse è un pò troppo? O forse no?

Ecco a voi qualche esempio. Scoprirete che groovy a volte è veramente sensazionale!

LISTE

Le liste sono utilizzatissime strutture dati che manipolarle in java è semplice ma macchinoso. 

Vediamo alcune operazioni base!

Dichiarare una lista

[JAVA]
List list = new LinkedList();
[GROOVY]
def list = []

Inserire un elemento in lista

[JAVA]
list.add("FabryProg");
[GROOVY]
list << "FabryProg"

Inserire più di un elemento in lista

[JAVA]
list.addAll(anotherList);
[GROOVY]
list.addAll(["Fabry", "Prog"])

Cancellare un elemento in lista

[JAVA]
list.remove("FabryProg");
[GROOVY]
list = list - "FabryProg"

Iterare la lista (senza indice)

[JAVA]
for(String item : list) {
   ....
}
[GROOVY]
list.each { ... }

Iterare la lista (con indice)

[JAVA]
for(int i=0; i < list.size(); i++) {
   ....
}
[GROOVY]
list.eachWithIndex { .... }

Controllare la presenza di un elemento in lista

[JAVA]
list.contains("Fabry");
[GROOVY]
"Fabry" in list

MAPPE

Le mappe sono strutture dati "chiave valore" e anch'esse vengono utilizzate moltissimo da ogni sviluppatore java. 

Vediamo anche qui qualche esempio:

Dichiarare la mappa

[JAVA]
Map map = new HashMap();
[GROOVY]
def map = [:]

Aggiungere i valori nella mappa

[JAVA]
map.put("name", "Fabrizio");
map.put("work", "Developer");
[GROOVY]
def map = [:]
map["name"] = "Fabrizio"
map["work"] = "Developer"
oppure
map << ["name" : "Fabrizio"]
map << ["work" : "Developer"] 

Iterare la mappa (senza indice)

[JAVA]
for(String key : map.keySet()) {
 .....
}
[GROOVY]
list.each { ... }

UTILITA'

Oltre a questi due categorie di esempi sulle strutture date molto comuni voglio segnalare:

Elvis Operator

Per ritornare un valore di default nel caso in cu il valore sia null.

[JAVA]
name = user.name != null ? user.name : "none";
[GROOVY]
name = user.name ?: "none"

Operator Overloading

Per invocare lo stesso metodo per ogni elemento di una lista

[GROOVY]
name = ["Fabry", "Prog"]
name*.toUpperCase();

Naturalmente questo è un subset molto ristretto di esempi che potevo fare ma spero sia bastato a farvi nascere la curiosità e studiare questo "potente linguaggio opzionale .... " 

Una volta preso coscenza della potenza del linguaggio potrete guardare il framework Grails studiato per scrivere web-application basate su groovy!

Fabrizio Spataro

Commenti

Post popolari in questo blog

Hadoop, how to create a single node cluster using docker

Apache Spark - Try it using docker!

How to install IOTA node with docker