¿Los Mayores Escollos de GWT? [cerrado]


Estoy al principio/medio de un proyecto que elegimos implementar usando GWT. ¿Alguien ha encontrado alguna dificultad importante en el uso de GWT (y GWT-EXT) que no se pudo superar? ¿Qué tal desde una perspectiva de rendimiento?

Un par de cosas que hemos visto/escuchado ya incluyen:

  • Google no puede indexar el contenido
  • CSS y estilo en general parece ser un poco escamoso

Buscando cualquier comentario adicional sobre estos elementos también. ¡Gracias!

Author: Michael Neale, 2008-09-19

24 answers

Comenzaré diciendo que soy un gran fan de GWT, pero sí hay muchos escollos, pero la mayoría, si no todos, fuimos capaces de superar:

Problema: Tiempos de compilación largos, a medida que su proyecto crece también lo hace la cantidad de tiempo que se necesita para compilarlo. He oído de informes de compilaciones de 20 minutos, pero los míos son en promedio de 1 minuto.

Solución: Divide tu código en módulos separados y dile a ant que solo lo compile cuando haya cambiado. También durante el desarrollo, usted puede acelere masivamente los tiempos de compilación creando solo para un navegador. Usted puede hacer esto poniendo esto en su .gwt.archivo xml:

<set-property name="user.agent" value="gecko1_8" />

Donde gecko1_8 es Firefox 2+, ie6 es IE, etc.


Problema: El modo alojado es muy lento (al menos en OS X) y no se acerca a los cambios 'en vivo' que obtiene cuando edita cosas como páginas JSPs o Rails y presiona actualizar en su navegador.

Solución: Puede darle al modo alojado más memoria (generalmente got para 512M) pero sigue siendo lento, he encontrado una vez que usted consigue lo suficientemente bueno con GWT dejar de usar esto. Usted hace una gran cantidad de cambios, luego compila para un solo navegador (generalmente 20s de compilación) y luego simplemente presiona actualizar en su navegador.

Actualización: Con GWT 2.0+ esto ya no es un problema, porque utiliza el nuevo 'Modo de desarrollo'. Básicamente significa que puede ejecutar código directamente en su navegador de elección, por lo que no hay pérdida de velocidad, además de que puede firebug / inspeccionarlo, sucesivamente.

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: De nuevo te acostumbras a esto, pero desafortunadamente convertir un diseño HTML a un diseño GWT siempre va a ser más lento que hacer algo como convertir un diseño HTML a un JSP pagina.


Problema: GWT toma un poco de conseguir su cabeza alrededor, y todavía no es corriente principal. Lo que significa que la mayoría de los desarrolladores que se unen a tu equipo o mantienen tu código tendrán que aprenderlo desde cero

Solución: Queda por ver si GWT despegará, pero si eres una empresa que controla a quién contratas, siempre puedes elegir personas que conozcan GWT o quieran aprenderla.


Problema: GWT es un mazo en comparación con algo como jquery o simplemente javascript. Se necesita mucha más configuración para que suceda que solo incluir un archivo JS.

Solución: Use bibliotecas como jquery para tareas más pequeñas y simples que se adapten a ellas. Utilice GWT cuando desee construir algo realmente complejo en AJAX, o cuando necesite pasar sus datos de ida y vuelta a través del mecanismo RPC.


Problema: A veces para rellenar su página GWT, necesita hacer una llamada al servidor cuando el primera carga de la página. Puede ser molesto para el usuario sentarse allí y ver un símbolo de carga mientras obtiene los datos que necesita.

Solución: En el caso de una página JSP, su página ya fue renderizada por el servidor antes de convertirse en HTML, por lo que en realidad puede hacer todas sus llamadas GWT entonces, y pre-cargarlas en la página, para una carga instantánea. Vea aquí para más detalles:

Acelere la carga de la página pre-serializando sus llamadas GWT


Nunca he tenido ninguna problemas CSS estilo mis widgets, fuera de la caja, personalizado o de otra manera, así que no se lo que quiere decir con que es un escollo?

En cuanto al rendimiento, siempre he encontrado que una vez compilado el código GWT es rápido, y las llamadas AJAX son casi siempre más pequeñas que hacer una actualización de página completa, pero eso no es realmente único para GWT, aunque los paquetes RPC nativos que obtienes si usas un back-end JAVA son bastante compactos.

 231
Author: rustyshelf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-02 19:12:44

Hemos estado trabajando con gwt durante casi 2 años. Hemos aprendido muchas lecciones. Esto es lo que pensamos:

  1. No utilice bibliotecas de widgets de terceros, especialmente gwt-ext. Matará su rendimiento de depuración, desarrollo y tiempo de ejecución. Si tienes preguntas sobre cómo sucede esto, contáctame directamente.

  2. Utilice gwt para rellenar solo las partes dinámicas de sus aplicaciones. Así que si usted tiene algunas interacciones de usuario complejas con un montón de campos. Sin embargo, no utilice el paneles que vienen con él. Tome las páginas suministradas por el diseñador de stock existente. Talle las áreas que contendrán los controles para su aplicación. Adjunte estos controles a la página dentro de onModuleLoad (). De esta manera puede utilizar las páginas estándar de su diseñador y también hacer todo el estilo fuera de la gwt.

  3. No construyas toda la aplicación como una página estándar que luego construya dinámicamente todas las piezas. Si haces lo que sugiero en el punto 2, esto no sucederá de todos modos. Si construyes todo dinámicamente matará el rendimiento y consumirá enormes cantidades de memoria para aplicaciones medianas y grandes. Además, si haces lo que estoy sugiriendo, el botón atrás funcionará muy bien, así como la indexación de motores de búsqueda, etc.

Los otros comentaristas también tenían algunas buenas sugerencias. La regla general que uso es crear páginas como si estuvieras haciendo una página web estándar. Luego talle las piezas que necesitan ser dinámicas. Reemplácelos con elementos que tengan id y luego use RootPanel.get( id ).add( widget ) para rellenar esas áreas.

 54
Author: olibre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-15 15:47:49

Trampas con las que nos hemos topado:

  • Si bien puede obtener mucho rendimiento al usar algo como GWT EXT, cada vez que usa este tipo de chapa delgada encima de una biblioteca de JavaScript, pierde la capacidad de depurar. Más de una vez me he golpeado la cabeza en el escritorio porque no puedo inspeccionar (dentro de mi depurador IntelliJ) lo que está sucediendo en la clase de tabla GWT EXT... Todo lo que puedes ver es que es un JavaScriptObject. Esto hace que sea bastante difícil averiguar lo que se ha ido Equivocada...

  • No tener a alguien en tu equipo que sepa CSS. Por mi experiencia, no importaba que la persona no fuera expert...it ' es suficiente que él tiene un buen conocimiento de trabajo, y conoce los términos correctos para Google cuando sea necesario.

  • Depuración entre navegadores. Mantenga un ojo en el Modo Alojado Fuera de Proceso[1][2][3], con suerte en GWT 1.6... Por ahora, solo tiene que hacer las cosas bien con el modo alojado, luego use el Botón" Compile/Browse", donde se puede jugar con otros navegadores. Para mí, trabajando en Windows, esto significa que puedo ver mi trabajo en FireFox, y utilizar FireBug para ayudar a ajustar y hacer las cosas mejor.

  • IE6. Es increíble cómo diferentes IE 6 rendirá las cosas. He tomado el enfoque de aplicar un estilo al "viewport" más externo de acuerdo con el navegador para que pueda tener reglas CSS como:

    .my-style { /* stuff that works most everywhere */ }
    
    .msie6 .my-style { /* "override" so that styles work on IE 6 */ }
    

Finalmente, asegúrate de usar un editor que te ayude. Yo uso IntelliJ -- tiene mucha inteligencia. Por ejemplo, si intento usar una clase que no es manejada por la emulación de JRE, me lo hace saber; si especifico un estilo para un widget, y aún no he definido ese estilo, el código obtiene el pequeño garabato rojo... O, al mirar el CSS, me dirá cuando he especificado atributos conflictivos en una sola regla. (Todavía no lo he probado, pero entiendo que la versión 8 tiene aún mejor soporte GWT, como mantener las interfaces e implementaciones RPC" local "y" async" sincronizado.)

 20
Author: jgindin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-15 15:53:51

GWT 2.0, que se supone que saldrá en algún momento en los próximos meses, resuelve muchos de los problemas discutidos.

  • Crear diseños usando una sintaxis similar a html / xml
  • Carga de script dinámico - solo el JS esencial se descargará inicialmente. El resto se descargará según sea necesario
  • Modo alojado en el navegador: Esto podría encargarse de los problemas de velocidad del modo alojado discutidos, entre otros beneficios
  • "Optimizaciones del compilador" - Compilación más rápida, con suerte

GWT 2.0 Preview Video at Google I/O

 18
Author: Adam Albrecht,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-10 19:07:40

No "incapaz de ser superado" sino un poco de dolor por algo básico.

Tratamiento de la fecha:

GWT utiliza el obsoleto java.util.Date que puede conducir a un comportamiento inesperado cuando se trata de fechas en el lado del cliente. java.util.Calendar no es compatible con GWT. Más información aquí .

Ejemplos de problemas relacionados:

 15
Author: Jla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:44

Añadiré algunos puntos a los ya mencionados:

  • Databinding/validation. GWT no tiene un soporte de databinding / validación fuera de la caja, aunque hay algunos proyectos en esta área comenzando a surgir. Te encontrarás escribiendo mucho de esto:
TextField fname, faddress;
...
fname.setText(person.getName());
faddress.setText(person.getAddress());
...
  • Carga lenta. Dado que gwt está en el lado del cliente, la carga lenta no es realmente una opción. Tendrás que diseñar tus RPCs y Objetos de Dominio cuidadosamente para
    • envía todo tu objeto datos que se necesitan
    • evite buscar ansiosamente todos sus datos
    • También tendrá que asegurarse de que no enviará proxies/objetos no serializables. hibernate4gwt puede ayudarte con estos puntos.
  • Diseño de interfaz de usuario. Es más difícil visualizar una interfaz de usuario en java (Paneles, Botones, etc.) que en html.
  • Soporte de historial. GWT no se envía con un subsistema de Historial, ni se envía con ningún subsistema para url agradables o marcadores statefull. Usted tendrá que roll your own (aunque tiene soporte para tokens de historia, que es un comienzo). Esto sucede con todos los conjuntos de herramientas AJAX AFAIK.

En mi humilde opinión, a GWT le falta un framework que tenga soporte listo para usar para todos los problemas mencionados en este 'hilo'.

 10
Author: Miguel Ping,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-19 11:23:00

Estoy trabajando en un proyecto en este momento que utiliza EXT GWT (GXT) que no debe confundirse con GWT EXT. Hay una diferencia, EXT GWT es el que en realidad es producido por la empresa que escribió ExtJS la biblioteca javascript. GWT EXT es un envoltorio GWT alrededor de la biblioteca ExtJS. GXT es GWT nativo.

De todos modos, GXT todavía es un poco inmaduro y carece de una comunidad sólida que siento que GWT EXT tiene. Sin embargo, el futuro está con GXT, ya que es GWT nativo y en realidad desarrollado por la compañía que hecho ExtJS. GWT EXT está algo paralizado ya que la licencia cambió en la biblioteca ExtJS, ralentizando así el desarrollo de GWT EXT.

En general, creo que GWT/GXT es una buena solución para desarrollar una aplicación web. En realidad, me gusta bastante el modo alojado para el desarrollo, hace que las cosas sean rápidas y fáciles. También obtienes el beneficio de poder depurar tu código. Las pruebas unitarias con JUnit también son bastante sólidas. Todavía no he visto un gran marco de pruebas unitarias de JavaScript que sentí que era suficientemente maduro para probar una aplicación empresarial.

Para más información sobre GWT EXT: http://gwt-ext.com /

Para más información sobre EXT GWT (GXT): http://extjs.com/products/gxt /

 9
Author: JP Richardson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-07 20:18:56

No hay grandes escollos que no haya podido superar fácilmente. Utilice el modo alojado en gran medida. Como está utilizando GWT-ext, casi nunca tendrá que tocar CSS usted mismo a menos que desee modificar el aspecto de la caja.

Mi recomendación es usar un widget GWT "nativo" sobre una biblioteca donde estén cerca en características.

Re indexación en motores de búsqueda: sí, el sitio no tendrá URL navegables normalmente (a menos que solo agregue widgets a elementos de un sitio web normal). Sin embargo, puede hacer la funcionalidad de retroceso/avance del historial.

 5
Author: Michael Neale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 05:38:29

Usé GWT y GWT-ext juntos en un proyecto hace un tiempo. Encontré la experiencia bastante suave como desarrollo web va, pero mi consejo sería este:

No mezcles widgets nativos GWT con widgets EXT. Es confuso como el infierno, ya que por lo general los nombres son los mismos (GWT.Botón o GWText.Botón?)

Una cosa que me pasó que realmente hizo el código más complejo de lo que me gustaría, era que quería un Panel que era a) actualizable dinámicamente b) en cascada

Nativo de GWT los paneles son dinámicos, los paneles Ext son en cascada. Solución? Un GWT.VerticalPanel envolviendo un panel GWTExt... Caos. :)

Pero bueno, funciona. ;)
 4
Author: Ace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 15:06:56

Secundo el comentario de ykagano, la mayor desventaja es perder la V en MVC. Aunque puede separar la clase true ui del resto del código del lado del cliente, no puede usar fácilmente una página HTML generada por un diseñador gráfico/web. Esto significa que necesita un desarrollador para traducir HTML a Java.

Obtenga un editor de interfaz de usuario wysiwyg, le ahorrará mucho tiempo. Yo uso GWTDesigner.

La mayor ventaja de GWT es poder olvidarse de los problemas del navegador cruzado. No es 100% pero quita casi todo ese dolor. Combinado con el beneficio de la depuración en modo alojado (a diferencia de Firebug, que es excelente pero no es lo mismo que un depurador de Java), le da al desarrollador una gran ventaja en la generación de aplicaciones ajax complejas.

Oh y es rápido en tiempo de ejecución, especialmente si utiliza un filtro gzip.

 4
Author: Steve Buikhuizen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-20 01:05:13

Ligeramente fuera de tema, pero el canal #gwt en irc es muy útil, en caso de que tenga un problema persistente.

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-20 15:11:17

GWT es bastante sencillo e intuitivo.

Especialmente con el lanzamiento de UiBinder para permitir que los widgets GWT se presenten en XML y luego se codifiquen en Java.

Así que si ha utilizado otras herramientas de diseño Ajax o Flash, o Silverlight, etc, GWT es muy fácil de aprender.

El mayor obstáculo, si no la trampa, es GWT RPC. La razón por la que desea utilizar GWT es debido a GWT async RPC. De lo contrario, ¿por qué no confiar en css para formatear su página?

GWT RPC es que elemento que permite a su servidor actualizar los datos en su servidor sin tener que actualizar la página. Este es un requisito absoluto para páginas como el monitoreo del rendimiento de las acciones (o la deuda nacional y pública actual de los EE.UU. o el número de bebés no nacidos abortados en todo el mundo por segundo).

GWT RPC toma un poco de esfuerzo para entender, pero dadas unas pocas horas, debería estar todo claro.

Por encima de eso, después de poner un poco de esfuerzo para aprender GWT RPC, finalmente descubres que no se puede usar JSPs como componente de servicio para RPC, a menos que ... Tengo una serie de 8 partes (creo) en mi blog sobre cómo usar JSP como el administrador de GWT RPC. Sin embargo, ya que no había pedido respuestas, sino solo problemas, voy a desistir de la publicidad de mi blog.

So. Creo mucho que los peores obstáculos / escollos para usar GWT es descubrir cómo implementar correctamente GWT async RPC y cómo habilitarlo para usar servidores JSP.

 4
Author: Blessed Geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-02 07:45:40

Nos ha costado mucho combinar nuestra base de código GWT con plantillas web HTML que obtuvimos de un diseñador web (páginas HTML estáticas con ids div específicos que queríamos que GWT administrara). Al menos cuando lo usamos, no pudimos lograr que GWT se integrara con partes de nuestro sitio web que no estaban codificadas en GWT. Al final lo tuvimos funcionando, pero fue un gran truco.

 3
Author: ykaganovich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 20:14:51
  • La interfaz asincrónica que tiene que escribir para cada interfaz de servicio parece algo que podría haber sido generado automáticamente por el compilador GWT.
  • Los tiempos de compilación se vuelven largos para proyectos grandes

Pero para un gran proyecto Javascript es la mejor opción

 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-07 14:38:00

GWT 2.4 ha solucionado muchos de los problemas mencionados anteriormente y una gran biblioteca de widgets acaba de salir de Beta (Ext GWT 3.0.4 a.k.a. GXT), que está escrito completamente en GWT, no en un envoltorio de una lib de JS.

Dolor restante:

  • A falta de soporte para el selector CSS3, puede usar "literal()" en algunos casos para evitarlo.
  • Falta de soporte para CSS3 y eventos de navegador modernos como transitionEnd.
  • Falta de soporte de clase de calendario Java (muchos años tarde).
  • Falta de soporte JUnit4 (5 años y contando).
  • Falta de una hoja de ruta clara y un calendario de lanzamiento del equipo de Google GWT.
 3
Author: Joseph Lust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-19 16:26:23

Con respecto a GWT 2.4, Utilizar Firefox al depurar GWT, mucho más rápido que el uso de chrome. Y si vas a usar solo Firefox, considera poner esta línea en tu proyecto .gwt.archivo xml

<set-property name="user.agent" value="gecko1_8" />

Además, si está utilizando eclipse, agregue lo siguiente en argumentos - > Argumentos de VM:

-Xmx512m-XX: MaxPermSize = 1024m-XX: PermSize = 1024m

Puede dividir su servidor y cliente, y usar lo siguiente en argumentos - > Programa argumento: - codeServerPort 9997-startupUrl http://yourserver/project - noserver

También, para evitar actualizar su servidor en cada cambio, use JRebel http://zeroturnaround.com/blog/how-to-rock-out-with-jrebel-and-google-web-toolkit-gwt / Y aquí hay una demostración en vivo http://www.youtube.com/watch?feature=player_embedded&v=4JGGFCzspaY

 2
Author: Gal Bracha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-01 08:23:03

Un escollo importante es que a veces es necesario asignar explícitamente un id a lo que finalmente se convierte en un elemento HTML para poder usar ciertos estilos CSS. Por ejemplo: un TabPanel GWT solo hará: hover sobre tabBarItems cuando a la TabBar del TabPanel se le haya asignado un id y especifique un: hover en ese ElementId.

Escribí sobre algunas otras desventajas de GWT en otro lugar, pero ya están cubiertas por rustyshelfs respuesta :).

 1
Author: Confusion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 10:53:09

He hecho mucho trabajo en GWT recientemente, y esto es wht tengo que decir:

  1. El estilo CSS es complicado solo a veces, use la herramienta de desarrollador IE en IE y firebug en Firefox para averiguar qué está sucediendo exactamente y obtendrá una idea clara de lo que css debe cambiarse
  2. Puedes usar trucos para que Google lo indexe. Un sitio muy famoso es http://examples.roughian.com / compruebe sus calificaciones en Google. Un sitio mucho menos famoso es www.salvin.in (couldnt resista a mencionar eso), lo optimicé a palabras: salvin home page (busque en Google estas tres palabras)

No sé mucho acerca de GWT-EXT, pero yo también soy de la creencia de que no hay necesidad de incluir bibliotecas de terceros.

La mejor de las suertes en su decisión:)

 1
Author: Salvin Francis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-10 04:57:28
 1
Author: Eduardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-14 20:12:38

El equipo de GWT ha hecho muchas mejoras en el lanzamiento del año pasado de GWT 2.7. Una debilidad importante de GWT era que la compilación toma mucho tiempo en GWT 2.6 y más abajo. Esto se ha ido GWT no tiene compilación incremental que es súper rápido y compila solo los cambios.

GWT 2.7 ahora tiene (Fuente):

  • Compilaciones incrementales ahora solo segundos
  • Más compacto, más preciso SourceMaps
  • Soporte GSS
  • JSInterop
  • Gran JavaScript Rendimiento
  • Menor Tamaño de Código
 1
Author: confile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-30 01:25:21

La mejor manera de obtener datos fiables es a partir de la encuesta gwt. Uno de los mayores problemas con GWT siempre ha sido un largo tiempo de compilación. Afortunadamente, está mejorando muy rápidamente, por lo que no será un problema significativo en el futuro cercano. Otra trampa es que GWT es dramáticamente más complicado porque Java es un lenguaje más complicado que resiste a los malos codificadores en cada paso del camino. Además, la compilación agrega una capa. Por ejemplo, js interop requiere un pequeño boilerplate. El el problema fundamental es que GWT no fue diseñado para ser simple. Fue diseñado desde cero para aplicaciones web extremadamente complicadas y toda la comunidad prioriza constantemente el rendimiento, la calidad del código, la arquitectura, etc. sobre easy coding.
Recuerde que puede usar js en GWT en cualquier momento, por lo que si está luchando con GWT considere usar js. Al final del día GWT es js así que puedes hacer cualquier cosa en GWT que puedas en js. De hecho, la mayoría de los proyectos GWT utilizan js. El problema es que GWT es drásticamente más complicado. Sin embargo, a veces vale la pena la complejidad adicional.

Vale la pena señalar que GWT 3.0 traerá mejoras masivas.

 1
Author: jgleoj23,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-31 23:32:10

Reutilización de objetos de servicio RPC.
Causa condiciones de carrera con síntomas que se parecen a la aplicación colgando.

 0
Author: antony.trupe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-27 02:23:32

Trampas con las que me encontré 1. Comportamiento diferente en modo superdev. Por ejemplo, Alguna clase.clase.getName () funciona absolutamente bien en modo Superdev y devuelve el nombre completo de la clase. En modo productivo esto no funciona.

  1. addWidget (widget) llamará a removefromparent()
 0
Author: Marcel Pater,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-11 23:10:36

GWT es una obra maestra de la tecnología. Une la programación de cliente y servidor convirtiéndola en una aplicación coherente: la forma en que el software se escribía antes de la" estratificación " y la forma en que debería escribirse. Elimina diferentes conjuntos de habilidades, la falta de comunicación entre los miembros del equipo y, en general, toda la fase de diseño web: tanto la artística como la programación. Y es lo más cercano que llegarías a dispositivos móviles, por ejemplo, el desarrollo de Android. De hecho, GWT fue diseñado para generar diferentes UIs nativas, no solo HTML. Aunque requiere una enorme disciplina para garantizar tal desacoplamiento-para mantener sus capas internas de presentación-agnóstica.

El primer error que debe evitar, que me llevó cuatro años darme cuenta, es usar extensiones de terceros como EXT-GWT aka GXT y SmartGWT. Es muy tentador comenzar a usar sus bonitos widgets de escritorio en lugar de invertir en su propio estilo, pero no puedo decir cuántos problemas tuve con SmartGWT hasta que finalmente me harté. En resumen, congela el núcleo GWT características establecidas en el cierto nivel (bastante anticuado) y luego se construye sobre él. También tenga en cuenta, que el aspecto y la sensación de escritorio cincelado se ve tonto hoy en día, por no mencionar el rendimiento lento, toneladas de errores y características de compatibilidad, especialmente en dispositivos móviles. Desea mantenerse lo más cerca posible de los controles nativos del navegador, es decir, desplegables renderizados como elementos nativos

Gracias a las tendencias móviles, todo el UX se está simplificando y más plano, por lo que no necesita hacer mucho para diseñar una aplicación de aspecto nítido. Aunque si quieres un aspecto "3D", también hay gradientes. CSS3 hizo todo fácil, y GWT lo envuelve de una manera elegante orientada a objetos a diferencia del CSS raw. Así que no te desanimes mirando los controles de barebones bastante feos en el escaparate de GWT. El equipo de GWT intencionalmente no ofreció ningún estilo, porque es el trabajo del desarrollador.

El resto es más o menos la programación del navegador convencional en fuertemente escrito Java con hermosas API concisas. Pero, por supuesto, nunca olvidando que su código se ejecuta dentro del navegador, por lo que todas las llamadas son asíncronas, por ejemplo, no puede llamar a los métodos GWT-RPC en un bucle (para completar alguna lista), pero necesita encadenarlos recursivamente si alguna vez llega a esta situación.

Hay algunos autoproclamados "anti-patrones" como no usar GWT-RPC. Ha sido bueno para mí hasta ahora: durante 10 años. La simplicidad es la clave. No pensaría ni un segundo para sacrificar algún rendimiento marginal para la elegancia del código y la capacidad de mantenimiento. además, aquí no es donde estarían sus cuellos de botella , en la base de datos. Por supuesto, tenga en cuenta la cantidad de datos que está enviando al cliente.

Y si no puede encontrar o estilizar el conjunto de elementos HTML5 ricos de lectura de gadget existente, siempre puede empaquetar uno de terceros. Lo hice con un popular jQuery FullCalendar. No es ciencia espacial en absoluto. Todo lo demás como Google Maps y Google Charts tiene envoltorios GWT semioficiales.

GWT es perfecto. El único la razón por la que no recibe suficiente amor es porque los primeros usuarios de Internet que todavía influyen en la industria no vinieron de la Informática y los lenguajes orientados a objetos para apreciarlos. Tienen fondo artístico (Photoshop / WordPress) o de red (Perl/Python).

 0
Author: Alex Rogachevsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-07 01:19:51