giovedì 10 gennaio 2008

Google Web ToolKit - GWT

Ed ecco che oggi inizio a guardarmi GWT (http://code.google.com/webtoolkit/).
In pratica son una serie di librerie di Java che permettono di programmare in Java per poi produrre del codice Javascript al fine di creare applicazioni in AJAX.
Sostanzialmente ci si scorpora dall'obbligo di conoscere a menadito Javascript, ma soprattutto, di evitare di addentrarsi nei problemi di compatibilità dei broweser... fa tutto l'interprete di GWT.

Leggendo la documentazione sul sito di google code, scopro che l'IDE da preferirsi per lo sviluppo di applicazioni con GWT è l'open source Eclipse. Infatti uno degli eseguibili di GWT può, volendo, creare dei file per usare al meglio questo IDE.

Installare GWT è semplice... poche istruzioni da seguire.
Per iniziare i progetti con eclipse basta dare dei parametri in più all'eseguibile "crea progetto" di gwt.
Creo la mia cartella di progetto, che chiamamo "GWT_Esempio", dal promt dei comandi (CMD) entro in questa cartella
eseguo poi il creatore di progetto passandogli come parametri il fatto che voglio creare un progetto eclipse che si chiama GWT_Esempio (come la cartella che ho creato) con questa riga di codice:
c:\Programmi\gwt-windows-1.4.61\projectCreator -eclipse GWT_Esempio
per poi fare uan cosa simile con il creatore di applicazioni
c:\Programmi\gwt-windows-1.4.61\applicationCreator -eclipse GWT_Esempio GWT_Moonwalk.client.GWT_Esempio
Così facendo creo i file principali che serviranno per compilare con GWT ed eseguire l'applicazione in maniera HOSTED MODE
Ma ancora meglio così si crea la situazione ideale per programmare in eclipse... posso semplicemente accedere in eclipse, cliccare file, import, import existing project, seleziono la cartella ed ecco il progetto importato... con tutto pronto per eseguire il tutto direttamente in eclipse, con la possibilità di fare il debugging


Prima disperazione:
Sembrano non esistere tutorial ufficiali di gwt... il sito di google code ha un sacco di materiale su gwt, ma pare più che altro adatto a chi conosce bene Java... e non chi l'ha iniziata a studiare meno di un mese fa
Cerco in rete dei tutorial... ne trovo alcuni per il classico "Hello World" che non mi insegnano molto, dato che sono quasi identici a Java puro... ma almeno prendo un minimo di pratica con Eclipse

Trovo un tutorial Working with GWT, decente, inizio a capire qualcosa... ma non è spiegato molto bene e vado subito in confusione

Ne trovo un altro, sul sito della ibm: Build an Ajax application using Google Web Toolkit, Apache Derby, and Eclipse sembra promettere bene
Mi installo quindi Derby, che se non erro è un database sviluppato e pensato per Java
Perdo tutta la mattinata e il primo pomeriggio ad installarlo... ho un conflitto con due versioni di java presenti sul portatile che ho in dotazione, un maledetteo
java.lang.UnsupportedClassVersionError
In pratica, navigando in rete, scopro che è un conflitto tra due versioni di java che ho sul pc... ho meglio... io ne uso normalmente una (qualcosa come 1.6.x), questo derby richiede una 1.4.x ma sul pc, da qualche parte, ho una 1.3.x che continua a prendere il sopravvento

impazzisco... cerco le variabili di sistema, sembra tutto ok... mamma mia aiuto cosa è
disinstallo java, reinstallo... ma nulla
dopo un po' scopro che sul pc è stato installato (prima che io lo toccassi) Oracle... e oracle ha un jdk 1.3.x
impazzendo un po' trovo la variabile di sistema installata da oracle. Ed ecco lì la stronza... c'era un "Path" settato da lui... e quindi il mio pc cercava prima lì dentro il java.exe
metto prima di questa variabile un altra path specificando la nuova directory di isntallazione
riavvio e....

funziona
derby installato... ma... alla fine mi accorgo che il tutorial non fa per me
(l'intero tutorial, che riprenderò in seguito, si trova: parte 1 | parte 2 | parte 3 )


Nel pomeriggio trovo un tutorial con qualche esempio un minimo complesso... e qui inizio a capire come funziona davvero GWT: KickStartin GWT on clint side
Ci sono 3 demo, con un minimo di complessità
riesco a vedere le prime due...a modificarle un po', a capire come funzionano i Panel e I widgets (tutto funziona in pannelli a quanto pare, simili a quelli di Swing, ma ovviamente con nomi e proprietà diversi)



2 commenti:

panic ha detto...

Salve.
Anche io, come te, mi sono avvicinato al mondo java da poco (sono un programmatore php).
Sono partito con Spring Framework, con quache prova "esplorativa" (accesso ai database, sicurezza, validazione, chiamate ajax etc) e finora (a parte le naturali difficoltà iniziali) è andato tutto liscio.
Per quanto riguarda il framework Ext-js, sono riuscito (insieme a spring) a costruire un piccolo esempio di chiamate ajax (il tutto integrato con dwr, direct web remoting, un'altro framework per la gestione delle chiamate ajax e non solo, che si integra bene con Spring).
In questo modo pero devi avere ancora a che fare con javascript (necesariamente, dovendo eseguire le request ajax ci devi mettere le mani). Non che mi faccia schifo il javascript, anzi...
Solo che poi ho "scoperto" gwt-exr che mi permetterebbe di sviluppare codice lato client in puro java, svincolandomi cosi dall'editi di codice javascript.
Ciò che mi interessa, è mettere in piedi un esempio minimo, con una widget creata con gwt-ext, all'interno di un progetto spring, che richiama un metodo di una servlet.
Tu hai qualche idea?

Gabriele ha detto...

Adesso mi metterò ad usare spring+gwt+groovy e vediamo cosa salta fuori

stiamo pensando di svilluppare la parte client con gwt assieme a mygwt e/o gwt-ext che si interfacciano lato server cons ervizi web sviluppati nel frameworlk spring con grails