Newsgroup: it.comp.java
Titolo: Grails e Groovy

Vorrei portare all'attenzione di tutti due progetti di cui mi pare si
sia già accennato sul gruppo, ma che meritano altissima
considerazione.
Si tratta di Groovy, linguaggio dinamico per la JVM, e di Grails,
metaframework per lo sviluppo rapido di applicazioni web.
http://groovy.codehaus.org/
http://aboutgroovy.com/item/list
http://grails.codehaus.org/
Groovy è un linguaggio dinamico, come lo sono Ruby e Python, che ha
però alcuni vantaggi rispetto a questi, dal punto di vista di uno
sviluppatore java.
1) è completamente compatibile a livello di bytecode con java. Questo
significa che groovy può usare direttamente le classi java, e
viceversa, senza bisogno di adattamenti particolari.
2) è sviluppato fin da subito per girare sulla JVM. Non è un port di
linguaggio già esistente sulla JVM, ma un linguaggio _scritto per_ la
jvm, fin dalle primissime fasi di design.
3) è possibile scrivere codice groovy mantenendo la stessa sintassi di
java (punti e virgola, parentesi, etc), oppure senza. In alcuni casi è
possibile riportare interi blocchi di codice java senza alcuna
modifica. (ovvero, per fare il port da java a groovy posso copiare
interi blocchi di codice, per poi riscrivere progressivamente frammenti
di codice per renderlo più "groovy")
4) fornisce feature aggiuntive a moltissime classi java funzionalità
aggiuntive che rendono più semplice lo sviluppo
5) aggiunge il concetto di closure (chiusura), che è un frammento di
codice che può essere trattato come una variabile (permettento una
forma di programmazione funzionale)
6) l'uso della funzionalità .each() sulle collections, permettendo di
eseguire una closure (frammento di codice) su tutti gli elementi:
es.
listaDiNomi.each { print it } // dove it corrisponde all'elemento
corrente ed è valorizzato automaticamente
7) le specifiche di groovy sono stabilite tramite il JCP (Java
Community Process), ed è stato approvato da grandi nomi come Apache,
Oracle ed IBM, garantendo un set di specifiche solide e pubbliche.
Sul sito :
http://groovy.codehaus.org/
è possibile trovare tante altre informazioni sul linguaggio, nonchè
le mailing list del progetto, mentre sono già disponibili 2 testi:
"Groovy in Action"
http://www.amazon.com/gp/product/1932394842?tag2=httpgroovycan-20
e "Groovy programming"
http://www.amazon.co.uk/Groovy-Programming-Introduction-Java-Developers/dp/0123725070/sr=11-1/qid=1166697489/ref=sr_11_1/026-5524576-4308452
GRAILS è invece un meta-framework di sviluppo web. Meta-, perchè in
realtà raccoglie sotto di se diversi altri framework java, come
hibernate, spring e quartz. L'ispirazione deriva chiaramente da Ruby on
Rails (infatti inizialmente il progetto si chiamava "Groovy on Rails",
prima che DHH chidesse al team di grails di cambiare il nome, sebbene
DHH non abbia alcun trademark o copyright sul nome "on rails")
In questo caso alle funzionalità di groovy si aggiungono:
- Possibilità di mappare automaticamente gli oggetti su DB mappanti
automaticamente con hibernate
- possibilità di configurare in modo diretto hibernate in caso di
necessità, per esempio per utilizzare un database esistente
- utilizzo di quartz per la gestione dei jobs
http://www.opensymphony.com/quartz/
- possibilità di usare con relativa semplicità alcune tra le più
usate librerie AJAX (come prototype, dojo e yahoo)
e molto altro ancora.
Anche per Grails è disponibile un testo:
http://www.apress.com/book/bookDisplay.html?bID=10205
Ora come ora ho ordinato i testi, e sto provando groovy (per ora non su
scenari reali, ma solo a livello didattico), ma ho sentore che
sentiremo sempre più parlare di Groovy e Grails.
Spero l'argomento interessi!
Ciao!
Raffaele

 considerazione.
Grazie, questi posts mi piacciono, stimolano la mia curiosita' :)

 writes:
raffaele> 
http://groovy.codehaus.org
Caaaaaaaaaaaaaaarino assai, con le closures e mapcar      each
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

 Caaaaaaaaaaaaaaarino assai, con le closures e mapcar      each
Eh, però groovy non è compatibile con Java Web Start...
ciao!
gl

 metaframework per lo sviluppo rapido di applicazioni web.
Groovy è carino, e spero sia l'occasione per spostare il focus delle 
modifiche e ammodernamenti, in modo da tenerci Java così com'è per un 
po' di tempo... tanto più che i due linguaggi son compatibili!
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://ammentos.biobytes.it
Flash tutorial: 
http://ammentos.biobytes.it/quickstart/quickstart.html

 po' di tempo... tanto più che i due linguaggi son compatibili!
Però per dargli una spinta (ammesso che ce ne sia bisogno...) è
opportuno parlarne, discuterne, provare e sperimentare.
Scrivo "ammesso che ce ne sia bisogno" perchè groovy ha seguito un
percorso un pò diverso dal solito. Inizialmente vi fu un pò di
pubblicità (lontano 2004), ma poi il progetto passò in sordina per un
sacco di tempo, con un manipolo di sviluppatori impegnati a definirne
le specifiche in seno al JCP. Questo ha sicuramente aiutato ad avere
delle specifiche stabili e ben definite, ma ora come ora bisogna
lavorare per pubblicizzare il progetto.
Quindi, come dicevo all'inizio, bisogna parlarne, discuterne, provare,
ed invitare altri a farlo.
Saluti!
Raffaele