Inizierò dicendo che sono un grande fan di GWT, ma sì, ci sono molte insidie, ma la maggior parte, se non tutte, siamo riusciti a superare:
Problema: i tempi di compilazione lunghi, man mano che il progetto cresce, aumenta anche il tempo necessario per la compilazione. Ho sentito parlare di compilazioni di 20 minuti, ma le mie sono in media circa 1 minuto.
Soluzione: dividere il codice in moduli separati e dire a ant di crearlo solo quando viene modificato. Inoltre, durante lo sviluppo, puoi velocizzare notevolmente i tempi di compilazione creando solo un browser. Puoi farlo inserendolo nel tuo file .gwt.xml:
<set-property name="user.agent" value="gecko1_8" />
Dove gecko1_8 è Firefox 2+, ie6 è IE, ecc.
Problema: modalità Hosted è molto lenta (almeno su OS X) e non si avvicina alla corrispondenza delle modifiche 'live' che si ottengono quando si modificano elementi come pagine JSP o Rails e si fa clic su Aggiorna nel browser.
Soluzione: puoi dare più memoria alla modalità host (generalmente ho 512M) ma è ancora lento, ho scoperto che una volta che sei abbastanza bravo con GWT smetti di usarlo. Apportate una grande quantità di modifiche, quindi compilate per un solo browser (in genere 20 anni di compilazione) e quindi premete semplicemente Aggiorna nel browser.
Aggiornamento: con GWT 2.0+ questo non è più un problema, perché usi la nuova "Modalità di sviluppo". Fondamentalmente significa che puoi eseguire il codice direttamente nel tuo browser preferito, quindi nessuna perdita di velocità, oltre a poter eseguire il firebug / ispezionarlo, ecc.
http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM
Problema: il codice GWT è java e ha una mentalità diversa da quella di creare una pagina HTML, il che rende più difficile prendere un progetto HTML e trasformarlo in GWT
Soluzione: ancora una volta ci si abitua a questo, ma purtroppo la conversione di un progetto HTML in un progetto GWT sarà sempre più lenta rispetto a fare qualcosa come convertire un progetto HTML in una pagina JSP.
Problema: GWT si prende un po 'la testa, e non è ancora mainstream. Ciò significa che la maggior parte degli sviluppatori che si uniscono al tuo team o mantengono il tuo codice dovranno impararlo da zero
Soluzione: resta da vedere se GWT decollerà, ma se sei un'azienda che controlla chi assumi, puoi sempre scegliere persone che conoscono GWT o vogliono impararlo.
Problema: GWT è una mazza rispetto a qualcosa come jquery o semplicemente javascript. Ci vuole molta più configurazione per farlo accadere che includere semplicemente un file JS.
Soluzione: utilizzare librerie come jquery per attività più piccole e semplici adatte a quelle. Usa GWT quando vuoi creare qualcosa di veramente complesso in AJAX, o dove devi passare i tuoi dati avanti e indietro tramite il meccanismo RPC.
Problema: a volte per popolare la pagina GWT, è necessario effettuare una chiamata al server al primo caricamento della pagina. Può essere fastidioso per l'utente sedere lì e guardare un simbolo di caricamento mentre recuperi i dati di cui hai bisogno.
Soluzione: nel caso di una pagina JSP, la tua pagina era già stata renderizzata dal server prima di diventare HTML, quindi puoi effettivamente effettuare tutte le tue chiamate GWT e precaricarle sulla pagina, per un caricamento immediato. Vedi qui per i dettagli:
Accelerare il caricamento della pagina pre-serializzando le chiamate GWT
Non ho mai avuto problemi nello stile dei miei widget CSS, pronti all'uso, personalizzati o meno, quindi non so cosa intendi per essere una trappola?
Per quanto riguarda le prestazioni, ho sempre scoperto che una volta compilato il codice GWT è veloce e le chiamate AJAX sono quasi sempre più piccole rispetto a un aggiornamento di un'intera pagina, ma non è univoco per GWT, anche se i pacchetti RPC nativi che ottieni se usi un back-end JAVA è piuttosto compatto.