Comenzaré diciendo que soy un gran fanático de GWT, pero sí, hay muchas trampas, pero la mayoría, si no todas, pudimos superar:
Problema: largos tiempos de compilación, a medida que su proyecto crece, también lo hace la cantidad de tiempo que lleva compilarlo. He oído hablar de informes de compilaciones de 20 minutos, pero los míos son en promedio aproximadamente 1 minuto.
Solución: Divida su código en módulos separados y dígale a Ant que solo lo construya cuando se modifique. Además, durante el desarrollo, puede acelerar enormemente los tiempos de compilación compilando solo para un navegador. Puede hacerlo colocando esto en su archivo .gwt.xml:
<set-property name="user.agent" value="gecko1_8" />
Donde gecko1_8 es Firefox 2+, ie6 es IE, etc.
Problema: El modo hospedado es muy lento (al menos en OS X) y no se acerca a los cambios 'en vivo' que obtienes cuando editas cosas como páginas JSP o Rails y presionas actualizar en tu navegador.
Solución: puede darle más memoria al modo alojado (generalmente tengo 512M) pero todavía es lento, descubrí que una vez que se vuelve lo suficientemente bueno con GWT, deja de usar esto. Realiza una gran cantidad de cambios, luego compila para un solo navegador (generalmente 20 años de compilación) y luego presiona actualizar en su navegador.
Actualización: con GWT 2.0+, esto ya no es un problema, ya que utiliza el nuevo 'Modo de desarrollo'. Básicamente significa que puede ejecutar el código directamente en el navegador de su elección, por lo que no hay pérdida de velocidad, además puede dispararlo / inspeccionarlo, etc.
http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM
Problema: el código GWT es java y tiene una mentalidad diferente a la de diseñar una página HTML, lo que hace que tomar un diseño HTML y convertirlo en GWT sea más difícil
Solución: Una vez más te acostumbras a esto, pero desafortunadamente convertir un diseño HTML a un diseño GWT siempre será más lento que hacer algo como convertir un diseño HTML a una página JSP.
Problema: GWT requiere un poco de comprensión, y aún no es convencional. Lo que significa que la mayoría de los desarrolladores que se unen a su equipo o mantienen su código tendrán que aprenderlo desde cero
Solución: Queda por ver si GWT despegará, pero si usted es una compañía que controla a quién contrata, siempre puede elegir personas que conozcan GWT o quieran aprenderlo.
Problema: GWT es un mazo en comparación con algo como jquery o simplemente javascript. Se necesita mucha más configuración para que esto suceda que solo incluir un archivo JS.
Solución: utilice bibliotecas como jquery para tareas más pequeñas y simples que se adapten a ellas. Use GWT cuando desee construir algo realmente complejo en AJAX, o donde necesite pasar sus datos de un lado a otro a través del mecanismo RPC.
Problema: a veces para completar su página GWT, debe realizar una llamada al servidor cuando se carga la página por primera vez. Puede ser molesto para el usuario sentarse allí y mirar un símbolo de carga mientras busca los datos que necesita.
Solución: en el caso de una página JSP, su página ya fue procesada por el servidor antes de convertirse en HTML, por lo que puede hacer todas sus llamadas GWT y luego cargarlas previamente en la página, para una carga instantánea. Ver aquí para más detalles:
Acelere la carga de páginas pre-serializando sus llamadas GWT
Nunca he tenido ningún problema con CSS para diseñar mis widgets, listos para usar, personalizados o de otro tipo, así que no sé a qué te refieres con eso.
En cuanto al rendimiento, siempre he descubierto que una vez que el código GWT compilado es rápido, y las llamadas AJAX son casi siempre más pequeñas que hacer una actualización completa de la página, pero eso no es realmente exclusivo de GWT, aunque los paquetes RPC nativos que obtienes si usas Un back end de JAVA es bastante compacto.