Baterias incluidas
Herramientas de Java
Es simplemente asombroso:
- IDEs: incluso si algunos IDE admiten JavaScript, el nivel de soporte simplemente no se compara. Intente refactorizar el código JavaScript en bases de código grandes (por ejemplo, 40K + LOC) y llore.
- Pruebas unitarias: aunque eso aumentó en los últimos años, también es mucho más maduro en el mundo de Java.
- Integración continua e inspección continua
- Generación de documentación: seguro que tiene JSDoc y algunos otros
Tipificación estática
Atrapa insectos temprano. (Google Closure aborda eso un poco mientras mantiene al desarrollador en el mundo de JavaScript, si lo prefiere).
JavaScript optimizado
GWT escribe JavaScript más rápido y más compacto que usted (para aplicaciones grandes), y le permite determinar qué se envía al cliente posiblemente más fácilmente que con soluciones JS completas equivalentes.
Arquitectura
Proporciona una buena separación de preocupaciones para aplicaciones grandes, con arquitecturas MVC o MVP decentes ya preparadas al alcance de su mano.
Biblioteca decente
GWT proporciona bibliotecas interesantes y facilita (bueno, más fácil) crear aplicaciones habilitadas para I18N con carga dinámica de paquetes.
Examen de la unidad
Usando JUnit desde Eclipse IDE y desde la línea de comandos. Esto se relaciona con mi primer punto. También podría utilizar algunas de las herramientas de calidad de código de Java en un proyecto GWT (para verificaciones de origen, no verificaciones de código de bytes, ya que no hay ninguna).
¡¡Es todo acerca de usted!!
GWT no es para todos. Hace que algunas personas sean más productivas y ofrece una buena herramienta para que los desarrolladores que no son JS creen aplicaciones web profesionales con front-end dinámicos sin tocar (demasiado) JavaScript. Pero si no funciona para usted, simplemente use otra cosa.
Si desea la mayor parte de lo anterior pero simplemente no desea Java, tal vez mire Google Closure o Dojo Toolkit .
Fue una buena idea en ese momento: ¡La historia importa!
El mundo de JavaScript (y las tecnologías front-end web en general) está extremadamente activo en estos días, por lo que las cosas están mejorando. Pero solo hace unos años, las cosas no eran tan brillantes. LESS / SASS no eran tan populares, jQuery todavía no era la biblioteca JS de fábrica, las bibliotecas JavaScript no se generaban cada dos semanas y las herramientas no eran tan geniales en general.
Pero, ya había una creciente demanda de aplicaciones web profesionales y grandes con front-end dinámicos, por lo que había un vacío que llenar para que los desarrolladores fueran más productivos. JavaScript tiene una gran cantidad de trampas y rarezas que debe tener en cuenta, y tal vez sea mejor no tener que preocuparse por ellas. De ahí el nicho para herramientas como GWT.
Desde entonces, han aparecido otros (CoffeeScript viene a la mente, Dart está en camino, pero también grandes marcos de JavaScript, la revolución de JS del lado del servidor con Node.JS y otros, y un fuerte regreso de JavaScript como "lo suficientemente bueno" todo lenguaje alternativo que se utilizará no solo en el lado del cliente sino también en otras partes de su negocio.
Notas adicionales
Con respecto a su pregunta original (ahora editada) sobre el uso de Firebug
Puede depurar el código GWT con Firebug, por supuesto, pero lo ideal sería depurarlo directamente desde el depurador de Eclipse IDE, que ahora proporciona soporte de depuración de código en vivo.
Sin embargo, Firebug sigue siendo utilizable, aunque debe tener en cuenta que GWT genera JavaScript optimizado y comprimido, que puede no ser fácil de depurar como está.
Con respecto a su pregunta original (ahora editada) sobre CSS
Sí, aún necesita escribir código CSS usted mismo, por supuesto. Sin embargo, combina su proyecto GWT con otras herramientas (como SASS), más o menos fácilmente.
¡Es solo una herramienta!
No confunda GWT con lo que no es: no escribe código Java para que se ejecute directamente en el lado del cliente como código de bytes Java. Escribe código en el lenguaje Java, que luego se traduce a JavaScript para mayor eficiencia y para permitirle usar un lenguaje de nivel superior (o, al menos, así es como debe verse).
Podría decirse que Java y JavaScript podrían considerarse comparables en términos de niveles de abstracción. Sin embargo, Java tiene algunas ventajas (detalladas anteriormente), de ahí la ventaja de cosechar los beneficios de las herramientas existentes sin la necesidad de volver a escribirlas. Los desarrolladores de Google tuvieron la ingeniosa idea de hacer posible reutilizar las herramientas orientadas a Java existentes, pero en efecto desarrollar aplicaciones JavaScript.
Además, resuelven otro problema, que a menudo era el engorroso manejo de las aplicaciones web de dos idiomas donde el código JavaScript y Java se trataban por separado. El uso de GWT permite un cierto nivel de convergencia para ambos lados del proceso de desarrollo.
Otras lecturas: