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"
[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
Posta un commento