tutorial gwt gwt2

gwt tutorial



GWT sigue siendo una opción para una gran aplicación de negocios (7)

¡GWT definitivamente no es viejo ni está muriendo! Muchas de las aplicaciones propias de Google se desarrollan utilizando GWT. Puede descargar el caso de estudio de GBST y aprender cómo la compañía financiera mundial usa GWT para mejorar la productividad y crear una experiencia de usuario rica. Debes saber que cuando usas GWT automáticamente usas javascript, html, etc. Creas una aplicación gwt en java, pero cuando la compilas gwt crea una carpeta con archivos html, código javascript, css, etc ...

¡Definitivamente lo recomiendo!

Mi compañía está planeando desarrollar una nueva aplicación de front-end web.

Algunos antecedentes:

  1. Debe "chisporrotear", es decir, una agradable apariencia comercial.
  2. Nuestro equipo de desarrollo no tiene experiencia en Java, con experiencia limitada en Silverlight, Javascript, JQuery o CSS.
  3. El tiempo de comercialización es un factor.
  4. Necesitamos transmitir grandes cantidades de datos desde una base de datos Oracle.
  5. Debe admitir de 500 a 1000 usuarios concurrentes
  6. Será alojado internamente detrás de un firewall.
  7. Necesitamos capacidades de mapeo (geoespaciales).

Alguien ha recomendado usar GWT en lugar de las tecnologías Silverlight o Traditional (Javascript, jquery, CSS, etc.).

No estoy seguro de si este es el camino correcto a seguir. Muchas de las noticias de GWT son de 2007/2008. Me hace pensar que esta tecnología es vieja y tal vez esté muriendo.

Si tuviera una opción, ¿elegiría GWT?


Antes que nada, GWT no está muriendo, su uso aumenta, y su última versión es 2.2. Estoy usando GWT durante 2 años, desde la versión 1.6. Sus mejoras desde ellos son bastante sorprendentes.

Como GWT es una tecnología del lado del cliente, solo tiene efectos positivos de la función de escalabilidad de la aplicación. Debido a que las tecnologías web del lado del servidor como jsf, struts, wicket son consumidores de recursos del servidor, pero gwt no necesita ningún recurso de servidor para representar la interfaz de usuario.

Pero hay un problema para tu equipo. Como su equipo no tiene experiencia en Java, sería bastante difícil adaptarse a dos nuevas tecnologías, java y gwt. Si tiene tiempo para aprender, le recomendaría encarecidamente GWT.


Como otros han dicho, GWT definitivamente no es un proyecto en extinción. Todo lo contrario, ya que ahora hay más de 20 contribuidores regulares desde Google (frente a una media docena en 2008). Wave (a pesar de ser suspendido como un servicio de Google, todavía está vivo como un proyecto de la Fundación Apache), Orkut, AdWords, Google Moderator y los nuevos Grupos de Google (aún beta) están hechos con GWT; y partes de Google Buzz y algunos otros proyectos en Google también se crean con él.

Ahora en cuanto a tu elección:

  • Silverlight es una tecnología en extinción. Microsoft dejó en claro que ahora invierte en "HTML5": http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834
  • GWT es principalmente un kit de herramientas del lado del cliente, pero viene con herramientas de "alta productividad" para comunicaciones entre el cliente y el servidor (GWT-RPC y RequestFactory para protocolos de extremo a extremo, AutoBeans para una fácil serialización de JSON). Con UiBinder, puedes poner en práctica fácilmente tus habilidades como diseñador web.
  • si se siente cómodo con JS, entonces hágalo, pero luego tendrá que elegir el "kit de herramientas correcto" (jQuery? Google Closure?). De lo contrario (lo que parece ser el caso), realmente depende de la cantidad de "ajaxy" que necesita / desea ser. Soy un firme defensor de las "aplicaciones de una página", pero YMMV, o puede tener restricciones específicas que lo descartan. En cualquier caso, tendrías que elegir una tecnología del lado del servidor.

Entonces, dependiendo de tus necesidades / deseos y habilidades, elegiría GWT o "algún juego de herramientas de JS". En cualquier caso, tendrá control total sobre la apariencia (a menos que elija uno de los jugadores inflados: ExtJS / ExtGWT, SmartGWT o similar, probablemente tenga un tiempo de comercialización más corto con estos, pero Pagaré más tarde, en términos de rendimiento, integración con otros kits de herramientas y apariencia.

A la luz de lo que dices sobre tus habilidades, definitivamente recomendaría GWT (a pesar de tu falta de experiencia con Java); porque la falta de experiencia con JavaScript es mucho peor que la falta de experiencia con Java (está hablando de una "gran aplicación", por lo que es realmente importante comenzar a construir correctamente y / o tener herramientas para ayudar a refactorizar, que tendrá con Java).

@ianmayo respondió mientras escribía lo de arriba, ¡y solo puedo decir lo que dijo!


GWT no es un marco moribundo, sino un marco que mata el tiempo. Tiene un problema de seguridad. Puede realizar fácilmente una solicitud de CSRF (falsificación de solicitudes entre sitios) a las aplicaciones de GWT. Además, Java y Javascript son idiomas totalmente diferentes, no se puede traducir fácilmente. Para su productividad, evite GWT.


desafortunadamente, dos de sus declaraciones son mutuamente excluyentes en este contexto:

  • Nuestro equipo de desarrollo no tiene experiencia en Java
  • El tiempo de comercialización es un factor

Soy un programador de Java que adquirió GWT durante el último año más o menos. Es inmensamente efectivo poder escribir directamente al navegador usando un lenguaje compilado y herramientas de desarrollo maduras. Puedo volar a través del desarrollo web más rápido que nunca (usando ASP, JSP, ExtJS ...).

Pero, como han dicho los otros comentaristas: si no tienes experiencia en Java, vas a encontrar un verdadero desafío para obtener ambas tecnologías (Java y GWT) en poco tiempo. Si logras llegar al mercado en un tiempo razonable, solo podría imaginar que la base de códigos estaría en muy malas condiciones (ya que estarías aprendiendo sobre la marcha), lo cual sería una base muy pobre para el brillante nuevo de tu organización. riesgo.

Una vez más, no tienes un montón de habilidades en las otras habilidades relacionadas que enumeró.

Sospecho que hay una solución más efectiva. Como dijo un viejo y sabio gerente de proyecto de cabra:

Tengo tres variables para entregar tu proyecto: tiempo, costo y calidad. Elija cualquiera de los dos

En su situación, si la organización quiere un producto de calidad en poco tiempo, es el factor de costo lo que debe compensar: su organización debe comprar algunos conocimientos provisionales de GWT para brindarle una arquitectura de software sólida y ser mentor de su equipo durante los próximos meses. . Después de eso, estarás listo para tomar las riendas, heredando una base de código de calidad ''parados sobre los hombros de los gigantes''.


Se tarda aproximadamente 1 año para convertirse en experto en GWT. Usar GWT vale la pena si desarrolla una aplicación tan sofisticada como Microsoft Office o PhotoShop. No tiene sentido usar GWT para aplicaciones pequeñas y relativamente simples, en mi humilde opinión. GWT es un marco para matar el tiempo de hecho, y debe tener razones muy sólidas para usarlo. Creo que el 99% de las aplicaciones web no necesitan GWT.


Para no engañar a los lectores con respuestas aparentemente unánimes, mantenga la vista objetiva en respetado, después de revisar las experiencias exactas que tuve al usar GWT. Si GWT está muriendo depende de cuántas nuevas aplicaciones lo adoptarán, la tendencia de Google puede decir ( tendencia gwt ).

Extracto de https://softwareengineering.stackexchange.com/questions/38441/when-not-to-use-google-web-toolkit

> Estoy a la vez bueno y malo para responder a esta pregunta, bueno, en realidad lo he usado antes, y malo, porque tenía bastante experiencia con HTML / CSS / JavaScript antes de trabajar con GWT. Esto me dejó enloquecido al usar GWT de una manera que otros desarrolladores de Java que realmente no conocen DHTML pueden no haber sido.

GWT hace lo que dice: abstrae JavaScript y, hasta cierto punto, HTML en Java. Para muchos desarrolladores, esto suena brillante. Sin embargo, sabemos, como dice Jeff Atwood, que todas las abstracciones son abstracciones fallidas (vale la pena leerlas si se considera GWT). Con GWT, esto introduce específicamente los siguientes problemas:

Usar HTML en GWT apesta.

Como lo dije, hasta cierto punto, incluso abstrae HTML. Suena bien para un desarrollador de Java. Pero no lo es. HTML es un formato de marcado de documento. Si quisiera crear objetos Java para definir un documento, no usaría elementos de marcado de documento. Es enloquecedoramente detallado. Tampoco es lo suficientemente controlado. En HTML, hay esencialmente una forma de escribir

<p>Hello how are <b>you</b>?</p>

En GWT, tiene 3 nodos secundarios (texto, B, texto) conectados a un nodo P. Puede crear el P primero o crear los nodos secundarios primero. Uno de los nodos secundarios podría ser el resultado de una función. Después de unos meses de desarrollo con muchos desarrolladores, tratar de descifrar cómo se ve su documento HTML rastreando su código GWT es un proceso que induce al dolor de cabeza.

Al final, el equipo decidió que tal vez usar HTMLPanel para todo el HTML era el camino correcto. Ahora, ha perdido muchas de las ventajas de GWT de tener elementos fácilmente disponibles para el código de Java para vincular fácilmente los datos.

Usar CSS en GWT es una mierda

Por el apego a la abstracción de HTML, esto significa que la forma en que debe usar CSS también es diferente. Pudo haber mejorado desde la última vez que utilicé GWT (hace unos 9 meses), pero en ese momento, el soporte de CSS era un desastre. Debido a la forma en que GWT te hace crear HTML, a menudo tienes niveles de nodos que no sabías que fueron inyectados (cualquier desarrollador de CSS sabe cómo esto puede afectar dramáticamente el renderizado). Había demasiadas formas de insertar o vincular CSS, lo que daba como resultado un confuso desorden de espacios de nombres. Además de eso, tenías el soporte de Sprite, que de nuevo suena bien, pero en realidad mutó tu CSS y tuvimos problemas para escribir propiedades que luego tuvimos que sobreescribir explícitamente más tarde o, en algunos casos, frustramos nuestros intentos de hacer coincidir nuestra mano. codificó CSS ​​y tuvo que rediseñarlo de manera que GWT no lo arruinó.

Unión de problemas, intersección de beneficios

Cualquier idioma va a tener su propio conjunto de problemas y beneficios. Si lo usa es una fórmula ponderada basada en ellos. Cuando tienes una abstracción, lo que obtienes es una unión de todos los problemas y una intersección de los beneficios. JavaScript tiene sus problemas, y es comúnmente ridiculizado entre los ingenieros del lado del servidor, pero también tiene bastantes características que son útiles para el desarrollo web rápido. Piensa en cierres, taquigrafía de sintaxis, objetos ad-hoc, todas las cosas hechas por Jquery (como consultas DOM por selector de CSS). ¡Ahora olvídate de usarlo en GWT!

Separación de intereses

Todos sabemos que a medida que crece el tamaño de un proyecto, es fundamental tener una buena separación de las preocupaciones. Una de las más importantes es la separación entre visualización y procesamiento. GWT hizo esto realmente difícil. Probablemente no sea imposible, pero el equipo en el que estaba nunca tuvo una buena solución, e incluso cuando pensamos que teníamos, siempre teníamos una filtración en la otra.

Desktop! = Web

Como @Berin Loritsch publicó en los comentarios, el modelo o modo de pensar en el que GWT está diseñado es para aplicaciones vivas, en las que un programa tiene una pantalla interactiva muy unida a un motor de procesamiento. Esto suena bien porque eso es lo que muchos sienten que falta la web. Pero hay dos problemas: A) La web se basa en HTTP y esto es inherentemente diferente. Como mencioné anteriormente, las tecnologías basadas en HTTP: HTML, CSS, incluso la carga de recursos y el almacenamiento en caché (imágenes, etc.) se han creado para esa plataforma. B) Los desarrolladores de Java que han estado trabajando en la web no cambian fácilmente a esta mentalidad de aplicación de escritorio. La arquitectura en este mundo es una disciplina completamente diferente. Los desarrolladores de Flex probablemente serían más adecuados para GWT que los desarrolladores web de Java.

En conclusión ... GWT es capaz de producir aplicaciones AJAX rápidas y sucias con bastante facilidad usando solo Java. Si el sonido rápido y sucio no suena como lo que quiere, no lo use. La empresa para la que trabajaba era una compañía que se preocupaba mucho por el producto final y por su sentido de pulido, tanto visual como interactivo, para el usuario. Para los desarrolladores front-end de EE. UU., Esto significaba que necesitábamos controlar HTML, CSS y JavaScript de forma que usar GWT como tocar el piano con guantes de boxeo en