tutorial google example java javascript gwt

java - google - install gwt



¿Alguien ha usado GWT y puede decir que realmente cumple lo que promete? (11)

Soy un desarrollador web de Java desde hace mucho tiempo y, como la mayoría de los desarrolladores web, he usado bastante JavaScript. Aunque no odio JavaScript como muchos otros desarrolladores de Java, todavía soy consciente de sus fallas.

GWT es una forma de escribir javascript usando java. Como conozco ambos idiomas desde hace mucho tiempo, soy bastante escéptico sobre esta afirmación. Quiero decir, me está costando creer que realmente puedas crear aplicaciones web dinámicas completas de Java con una rica GUI usando solo GWT. Es por eso que estoy preguntando si alguien tuvo la oportunidad de trabajar con GWT en un proyecto a gran escala. Si es así, me gustaría escuchar lo que piensan de él.


Al igual que con cualquier herramienta, debe usarse correctamente. Uno puede manejar un martillo hábilmente y construir algo bueno, o simplemente agitarlo en las cosas y hacer más daño que bien.

Google Wave , creo, se ha convertido en el prototipo de "lo que es posible" con GWT.

Todavía es bastante difícil encontrar buenos patrones de diseño GWT porque la tecnología es demasiado nueva, por lo que puede dañar los esfuerzos para desarrollar una aplicación web muy rica y de gran escala en GWT. Antes de comenzar dicho proyecto, recomendaría buscar ejemplos del patrón model-view-presenter (MVP) y asegúrese de usarlo, o algo así, como base para el flujo de control de su aplicación web. Una cosa buena de GWT, y escribir su código en Java, es que el alto grado de abstracción y desacoplamiento necesario para una implementación limpia de MVP es bastante fácil (gracias al compilador).


Creo que GWT hace lo que dice en el estaño ...

Las 5 razones principales para elegir GWT:

  1. El tapiz puede ser demasiado complicado y la curva de aprendizaje es bastante pronunciada para los nuevos desarrolladores que están comenzando / unirse al equipo. Esp. en proyectos más grandes.

  2. Descubrí que podía desarrollar aplicaciones "más ricas" usando GWT, ya que mi fortaleza es Java, no JavaScript. Para poder implementar una funcionalidad similar usando Tapestry, tendría que escribir Javascript a mano, lo que luego se convertiría en una pesadilla de mantenimiento.

  3. Compatibilidad con el navegador. Pasaría mucho tiempo intentando que Javascirpt escribiera en mi mano todos los navegadores (como dije, el Javascript no es mi fortaleza :-) El compilador de GWT me oculta de esto, lo que hace que pase más tiempo. características de escritura.

  4. Back button blues, el detector de historial de GWT maneja el botón de retroceso de los navegadores en comparación con Tapestry.

  5. GWT tiene una huella más pequeña porque solo los datos se envían a través del cable para refrescar toda la página.

La lista continúa pero, en general, estoy muy feliz de haber hecho el cambio y no haber mirado hacia atrás desde entonces.


Hay una curva de aprendizaje abrupta, pero para las aplicaciones de la interfaz de usuario realmente dinámicas, simplemente no hay forma de que pueda compilar de forma manual en javascript de manera eficiente. Lo que quiero decir en particular es, por ejemplo, una interfaz de aplicación para un servicio donde todos los campos de búsqueda y los tipos de resultados y la longitud eran completamente desconocidos. Para este tipo de cosas, un tiempo de ejecución dinámico definido ui, no hay nada mejor que GWT en mi opinión.

Los inconvenientes son la pronunciada curva de aprendizaje (especialmente para los programadores de Java que no son swing, los tipos y las API tradicionales de petición / respuesta servlet) y que se ven acorralados en GWT una vez que se toma esa decisión.


He creado dos aplicaciones de GWT bastante sustanciales en mis tres años en Google. Entrega lo que promete: mis aplicaciones fueron mucho más interactivas y mucho más atractivas que mi conocimiento de Javascript y mi herramienta de Javascript me hubiera permitido producir usando otras herramientas.

También encontré las aplicaciones más interactivas y más divertidas que las alternativas puramente del lado del servidor que había usado antes de moverme a ellas.

No está libre de verrugas, pero es un entorno muy productivo para hacer los tipos de aplicaciones que hago.

Y mira la presentación de Kelly. Esto, y algunos de los otros de I / O, dan una idea muy clara de lo que puede hacer GWT. Rápidamente tendrá una buena idea de si es la herramienta adecuada para la tarea que está visualizando.


He escrito aplicaciones bastante grandes en GWT, y debo decir que GWT me impresionó aún más de lo que estaba cuando comenzó el proyecto. Mi "sensación" general de la plataforma es que las cosas están muy bien pensadas, y no hacen las cosas a menos que puedan hacerlo bien, y pueden hacerlo bien en todos los navegadores (¡los usuarios de IE siguen siendo sus usuarios!)

Ahora, tenga en cuenta que lo que GWT realmente destaca es la creación de grandes y dinámicas aplicaciones de estilo de una sola página. Si su objetivo es mejorar una página que de otro modo sería estática con algunos efectos de javascript, entonces GWT es una sobrecarga masiva (gquery puede cambiar esto, pero no tengo experiencia con gquery)

Algunas características que disfruto incluyen:

  • La capacidad de compartir código entre el lado del servidor y el lado del cliente. (Si su lado del servidor está escrito en Java, por supuesto). No esperaba usar esto mucho al principio, pero en la práctica, realmente puede ahorrar mucha duplicación de código. Sin embargo, me parece que, en general, esto solo funciona con código que se ha escrito con GWT en mente; usar códigos que no se escribieron con GWT en mente a menudo no funciona bien. Esto se debe a que GWT solo tiene un subconjunto de las clases en el JDK, y en javascript, debe preocuparse por el rendimiento mucho más que por el lado del servidor.
  • Su objetivo es lograr el javascript más rápido, más rápido de lo que escribiría a mano (porque si lo escribiera a mano, el código no se podría mantener). La desafortunada realidad es que los navegadores que mucha gente usa tienen motores JavaScript increíblemente lentos, por lo que el rendimiento de su código de JavaScript es muy importante. El compilador de Gwt es un compilador de optimización real: aplicará métodos en línea, interne todas sus cadenas. desvirtualice sus llamadas a métodos siempre que sea posible, etc. Debido a que está compilando para cada navegador y configuración regional, el compilador también puede alinear el código específico del navegador y el idioma local. Esta presentación de Google I / O tiene algunos puntos de referencia y algunas diapositivas.
  • También controlará automáticamente sus imágenes para minimizar la cantidad de solicitudes HTTP necesarias, mejorando nuevamente la velocidad de su sitio. GWT 2.0 le permitirá combinar archivos arbitrarios juntos.
  • la mayoría de los archivos creados por gwt tienen un hash fuerte como nombre de archivo, lo que le permite configurar los archivos para que se almacenen en caché para siempre, pero no se preocupe si las personas tienen versiones antiguas si el archivo cambia
  • La división del código en GWT 2.0 es muy impresionante y sería muy difícil hacerlo a mano. A medida que crece el tamaño de su aplicación, es cada vez más importante ocuparse del tamaño de su javascript, y debe poder dividirlo en fragmentos.
  • Está codificando en un lenguaje estáticamente tipado. Sé que algunas personas prefieren la escritura dinámica, pero me gusta comparar este debate con el debate de emacs vs vi: hay mucha gente inteligente en ambos campos, y discutir en Internet no va a cambiar las preferencias de nadie
  • Puede utilizar muchas de las excelentes herramientas que existen en el ecosistema de Java, que en general son mucho más maduras que las herramientas equivalentes de javascript. - junit, Java IDEs, depuradores de Java, refactorización, etc.

He estado desarrollando una aplicación de campo verde en GWT durante un año y ha sido sorprendentemente agradable. El subconjunto de Java utilizado en GWT causa algunos dolores de cabeza pero nada importante después de todo. No tenía mucho conocimiento de JavaScript cuando me uní al proyecto, pero creo que no fue un problema.

Los problemas comunes relacionados con GWT que he encontrado tenían generalmente algo que ver con el marco Ext GWT / GXT o la integración FCKEditor.


He hecho algunos proyectos durante algunos años y es fantástico. Volver al marco basado en JS / JSP / request es realmente horrible.

No quiero renunciar a las comprobaciones de tiempo de compilación, pruebas unitarias en mi IDE, refactorización IDE, etc., compartir código entre diferentes niveles, conjunto sólido de widgets, marco increíblemente bien pensado.

Puede hacer mucho más mucho más rápido de una manera sostenible.


Lo he visto brevemente para una aplicación más antigua en uno de mis trabajos, y debo admitir que fue muy impresionante. Todo el código fue escrito en Java, y el javascript fue construido maravillosamente.

Tenía AJAX, páginas dinámicas, las obras. También hay complementos para él, como el marco Ext GWT .

Definitivamente vale la pena investigar y probar, pero es posible que el ciclo de desarrollo no "se sienta bien", por lo que puede optar por usar JavaScript regular.


No sabía mucho Javascript cuando traté de crear mi sitio web. De hecho, es por eso que postergué la creación del sitio web.

Entonces, para mí, GWT marcó una gran diferencia, ya que me permitió crear un sitio web dinámico y multiproveedor que definitivamente no habría sido capaz de crear sin poner mucho esfuerzo en aprender Javascript.


Si tiene familiaridad con JavaScript y Java, realmente está perfectamente preparado para sacar el máximo provecho de GWT. Lo que muchas personas no se dan cuenta es que GWT tiene muchas capas y que usted puede decidir realmente en cuáles de esos niveles desea trabajar.

Por ejemplo, a veces escribo directamente en contra de la biblioteca DOM para proyectos. Es muy similar a escribir código JavaScript, excepto que puede usar un IDE correctamente y obtener el poder de un compilador. Del compilador obtengo verificación de tipo estático, muchas optimizaciones buenas del compilador y (en realidad, mi favorito para mantener el código) las aserciones del modo de depuración. Nadie realmente tiene mucha capacidad para hacer afirmaciones, pero es muy agradable poder compilar un modo de depuración que realiza chequeos costosos para desenterrar errores y luego apaga el modo de depuración y hace que el código simplemente se evapore. (No solo desaparecen las afirmaciones afirmativas, sino que también se compila todo el código accesible desde los asertos).

Otras veces, escribo código en la biblioteca de UI de GWT. Ese código se parece un poco al código swing o SWT, por lo que es más cómodo para los desarrolladores de Java puro. Al trabajar en este nivel, no tiene que preocuparse tanto por el DOM y, por lo general, es posible construir una aplicación sin escribir ningún JavaScript. Ocasionalmente se encuentra con un error donde algo no funciona de manera consistente en un navegador en particular. La gente de GWT considera esos errores.

Puede elegir el nivel de abstracción en el que desea trabajar. Hay compensaciones en cada nivel, pero GWT debería apoyarlas.

Además, la revelación completa: soy el tipo en el video que Chi vinculados anteriormente, por lo que podría decir que estoy muy apegado a GWT.


Simplemente GWT rocks google está haciendo "google wave" completamente en GWT.