¿La mejor biblioteca de widgets de GWT? [cerrado]


134

Pregunta para todos los gurús de GWT: ¿cuál es la mejor biblioteca de widgets de GWT? ¿Y por qué?

Lista basada en las respuestas:

И наконец- новое поколение основанное en JsInterop :


¿Olvidaste incluir gwt-mosaic en la lista?
Ashwin Prabhu

2
Esta pregunta no era específica sobre los requisitos, por lo que, como era previsible, se votó el más visible (núcleo GWT) a pesar de que no cumple con todos los requisitos. Si tiene una aplicación empresarial compleja con muchas pantallas y alto volumen de datos y necesita poderosas cuadrículas y editores, para eso está SmartGWT. Plain GWT es ideal para muchas aplicaciones, pero muchas empresas con este conjunto específico de requisitos evalúan GWT y deciden que SmartGWT se ajusta mejor. Para obtener una descripción general y decidir por sí mismo, lea la Guía de inicio rápido. smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf
Charles Kendrick el

te estás perdiendo gwt-bootstrap
caarlos0

He creado una propuesta de sitio para dar a preguntas como esta un hogar oficial lejos de Stack Overflow. Se llama Código de Recomendaciones. ¡ Ayúdenos a hacerlo realidad uniéndose y haciendo preguntas ahora!
daviewales

Esto también parece prometedor: gwt-material-demo.herokuapp.com
kozla13

Respuestas:


52

No se una a NINGUNA de estas bibliotecas. Use Vanilla GWT para crear la estructura de su proyecto. En particular, use el patrón MVP y un bus de eventos. Consulte el artículo de Google para saber cómo diseñar mejor su aplicación cliente con GWT: creación de aplicaciones MVP

Después, puede usar cualquier widget de estas bibliotecas (por ejemplo, una tabla o un cuadro combinado, un selector de fechas, etc.) e incorporarlo a su proyecto. Intente usar componentes extendidos SOLAMENTE si no ve una manera de hacerlo con GWT de vainilla. De esta manera, no se vincula a estas bibliotecas, que SIEMPRE son una molestia cuando intenta hacer algo que no aparece en la aplicación de demostración, contiene muchos errores y su soporte es, en el mejor de los casos, deficiente.

Cómo buscar widgets debe seguir este orden:

Cuidado con otras bibliotecas, he trabajado con ellas (y todavía tengo pesadillas).


1
¿Alguna experiencia específica con otras bibliotecas que le gustaría compartir?
Adam

66
GXT, no lo recomendaría a mi peor enemigo. Si lo considera, primero, búsquelo en Google y asegúrese de saber dónde se está metiendo. SmartGWT, un contenedor JS, muy feo. Corre lejos de eso. Tengo experiencia con ambos en un proyecto real. Primero usé SmartGWT, pero sus limitaciones me hicieron pasar a GXT. Pronto descubrí el desorden que tenían allí con enlaces de formas y genéricos de Java (Jesús, cada vez que recuerdo ...) ¡No sé cuál es peor! Lo terminé, sí, pero sufrí inmensamente. Después de eso aprendí a usar Vanilla GWT y solo el widget que me gustó de otras bibliotecas.
monzonj

Esta publicación es antigua y, por su naturaleza, se actualizará, pero he usado GXT ampliamente durante los últimos 2 años y, aunque tiene problemas, también permite la creación de aplicaciones muy atractivas con relativa facilidad. Tiene cuadrículas muy útiles, cuadrículas amortiguadas y cuadrículas vivas. SmartGWT también tiene cuadrículas y componentes bien presentados. Considere también a Vaadin .
Carl Pritchett

43

Depende de lo que quieras decir con "mejor". ¿Mejor aspecto? Mejor API? ¿Lo mejor para extender a sus propias necesidades personalizadas?

Por ejemplo, estaba evaluando clases de tabla para usar en nuestra aplicación. Hemos estado usando GWT-Ext, pero tiene muchos problemas de rendimiento y es muy difícil obtener el tamaño de las tablas de la forma en que las necesitamos. Estuve muy cerca de ir con GWT-Mosaic , pero decidí construir los widgets en la Incubadora GWT .

Entonces, ¿por qué tomé esta decisión? Parece que muchas de las bibliotecas vienen con su propio equipaje, a falta de una palabra mejor, equipaje. O tiene que sumergirse por completo en un marco MVC (que puede no ser completamente compatible con el resto de su base de código), o tiene que adoptar el nuevo sistema de diseño enredado de alguien, o tiene que vivir con el hecho de que no puede Realmente depurar el código (porque son solo envoltorios JSNI).

No me malinterpreten, la Incubadora GWT no es perfecta ... los widgets que hay tienen cierta cantidad de flujo. Sin embargo, en mi caso, esta fue la mejor opción. Me da bien (pero definitivamente no es perfecto):

  • API
  • Extensibilidad
  • Apariencia (bueno, esto es algo débil, pero para eso es CSS).

Entonces ... la respuesta (para mí) es una combinación de:

  • Stock de widgets GWT (con mucho estilo personalizado)
  • Mesas Incubadoras GWT
  • Unos cuantos widgets de cosecha propia

(Debo agregar: el "equipaje" al que me refiero no es necesariamente algo malo. Pero, si solo quieres un widget o dos, puede elevar el listón de lo que se necesita para hacer tu trabajo y cómo se ve bien tu aplicación.)


La mayoría de las bibliotecas de widgets requieren alguna licencia debido a la dependencia de alguna biblioteca externa AJAX. Esto también agrega tamaño extra a su solución. Tenga en cuenta también que la mayoría de las bibliotecas de widgets dependen de uno o más componentes externos adicionales.
IgorM


10

GWT solo es una muy buena biblioteca.

No utilicé todos los mencionados, pero puedo recomendar Ext GWT .


2
Estoy de acuerdo con GWT desnudo. Junto con los proyectos de incubadora ( code.google.com/p/google-web-toolkit-incubator ), puede implementar cualquier cosa básicamente. Usé MyGwt pero apesta cuando cerraron el proyecto y cambiaron su nombre y todos los foros y soporte, la licencia cambió
Robert Childan

1
Eso debe ser terrible. No es una forma muy práctica de mantener una pieza de software.
DragonBorn

9

Prefiero vainilla GWT. Algunas de las otras API se ven bonitas y sus vitrinas realmente muestran los widgets, pero siempre encuentro que el rendimiento no es el mejor ... cuando digo rendimiento me refiero más al tiempo de respuesta. Odio cuando una aplicación se siente lenta.


8

La mayoría de las bibliotecas mencionadas no son de código abierto y, lo que es peor, son envoltorios en la parte superior de una biblioteca de JavaScript. El poder de GWT radica en el hecho de que la aplicación funciona en diferentes navegadores (debido a la generación de código para los navegadores "grandes" específicamente). Estas bibliotecas subyacentes de JavaScript pueden causar muchos problemas.

Estoy de acuerdo con jgindin GWT Incubator y GWT Mosaic son los mejores hasta ahora.


Muy engañoso Casi todas las bibliotecas enumeradas son de código abierto con licencias comerciales amigables (Apache, BSD, LGPL) excepto ExtGWT (GPL). Además, incluso en el conjunto de componentes muy limitado que se proporciona actualmente, GWT tiene muchos errores entre navegadores: simplemente busque en su base de datos de errores para verificar esto. El compilador GWT no es mágico y no corrige automáticamente los errores de diseño de navegador extraños específicos de la situación y similares, deben solucionarlos como cualquier otro marco. Tampoco están siempre a la vanguardia: SmartGWT no ha anunciado el soporte oficial para iPhone o Android.
Charles Kendrick

7

No digo que sea "el mejor", pero últimamente he estado usando GWT-Ext en el trabajo. Tiene algunos pros y contras:

Pros:

  • Relativamente fácil de configurar y usar
  • Comunidad de tamaño decente detrás de ella
  • MUCHOS ejemplos en línea, todos los cuales tienen un código adjunto
  • Buena selección de widgets que cubren una amplia gama de funcionalidades.

Contras:

  • Hace suposiciones sobre el formato y la estructura de sus datos que es posible que no pueda acomodar
  • La biblioteca es solo un contenedor JSNI, lo que hace que sea más difícil depurar y extender
  • El futuro apoyo y desarrollo en la biblioteca es incierto
  • Todavía existen algunos problemas molestos entre navegadores (especialmente con diseños)
  • La función de búsqueda en sus foros es esencialmente inútil. (Esto se está convirtiendo en una gran mascota mía> _ <)

6

¡NO use ninguno de ellos! Si planea desarrollar una aplicación a gran escala, debería considerar usar el patrón MVP. La mejor implementación es el marco MVP4G , es compatible con la división de código GWT de fábrica . Hay muchos buenos ejemplos con los que puedes comenzar. El más valioso es Mvp4GModules.


5

Agregue el nuevo: GWT-Bootstrap :)

No hay una versión estable en este momento, pero lo habrá pronto.


1
GWT-Bootstrap tiene el potencial de ser el mejor.
Mike

Excepto por la supervisión de diseño muy fundamental en áreas como pestañas y modales. Necesitan reducir su dependencia de JQuery y pensar más en "aplicación".
Καrτhικ

Los parches son muy bienvenidos. Gracias por la sugerencia de todos modos
caarlos0

4

Mi experiencia muestra que siempre hay muchos problemas con las bibliotecas de terceros. La mejor manera es utilizar tecnología conocida y bien fabricada, además de sus propios componentes. Puede llevar más tiempo escribirlos y mantenerlos, pero el TCO siempre está en un nivel inferior.

Las bibliotecas de terceros a menudo pueden romper sus planes inesperadamente. Y es difícil encontrar y solucionar la fuente del problema.

Por lo tanto, sugeriría usar GWT simple.


3

Creo que SmartGWT está bien si solo quieres usar los Widgets como son, pero si deseas extender o modificar los widgets como lo hago en el Programador de Gxt , creo que Ext-GWT es una mejor opción.


3

para mí EXT-GWT (también conocido como GXT) es la mejor biblioteca disponible actualmente, la uso en proyectos de 6 meses y ayuda mucho con muchos componentes predefinidos como cuadrículas, árboles ... También es hermoso


3
¡Debes estar bromeando! He estado usando GXT durante 18 meses a diario y puedo decir honestamente que es una pesadilla.
Alex Worden


2

El grupo de usuarios de gwt-mosaic no parece muy activo y no pude encontrar un manual de usuario además de los fragmentos de wiki. gwt-mosaic me presentó dos herramientas interesantes.

1) gwt-mosaic incluye un contenedor para el PageBus de Tibco, que es una herramienta de publicación / suscripción para las partes JS de su aplicación (controladores RPC, devoluciones de llamada de widget, configuradores de widget). Esta es una alternativa al bus de eventos de gwt.

2) gwt-mosaic fomenta el uso de Beans Binding (http://code.google.com/p/gwt-beans-binding/) para vincular datos a widgets y validar widgets.

smartgwt no es barato para el conjunto completo de funciones y soporte. El jar es demasiado grande para anexar a menos que elimine los archivos de tema que no usa. También invierten ingeniería en el lado del servidor.

He oído que ext-gwt es lento y los archivos JS son grandes.

La incubadora de widgets gwt parece obsoleta. Creo que la grilla de lujo se lanzará con el nuevo gwt.

La falta de estándares de apariencia, vinculación y validación está obstaculizando la interoperabilidad de las bibliotecas de widgets.


No hay problema de SmartGWT GAE con grandes archivos .jars a menos que ignore las instrucciones de instalación en los documentos, de hecho, SmartGWT Pro incluye un proyecto de muestra que se ejecuta en GAE y proporciona CRUD completo, utilizando JPA para persistencia. Además, lo barato es relativo: la opción de licencia y soporte más costosa que se ofrece para SmartGWT sigue siendo una parte insignificante del costo para entregar la aplicación / producto en general cuando se consideran el costo de los desarrolladores, control de calidad, hardware / alojamiento, etc. Si tiene un presupuesto reducido, existe la versión gratuita (LGPL).
Charles Kendrick el

2

Definitivamente no es SmartGWT. Su marco está hinchado y tiene una naturaleza muy a medias. Tienen un millón de widgets, pero intentar que funcionen para su proyecto no es fácil. Las fuentes de datos complican el proceso de administrar sus datos de una manera muy grande, por ejemplo, para obtener datos en su fuente de datos, debe usar fecth e inspeccionar con frecuencia. Si bien puede almacenar en caché los resultados, no siempre es fácil interrogarlos.

RPC es otra área débil y enrevesada. Hay información contradictoria en la documentación y en los foros. Si bien la documentación dirá que rara vez debe usar una operación personalizada como parte de un ds, el foro le dirá que está perfectamente bien. Aprender a usar estas herramientas de manera efectiva es una subida cuesta arriba en el mejor de los días.

Venderán en exceso el producto. Por ejemplo, el paquete de gráficos / análisis contiene gráficos ... Pero esos gráficos no mostrarán valores negativos o le permitirán manipular etiquetas de eje de manera significativa. Y responden abiertamente a las preguntas sobre esto en el foro con una actitud de "sí, y qué". "No planeamos agregar eso a 3.0x a pesar de que ese es uno de nuestros puntos de venta, está en nuestra hoja de ruta". Cuando me vendieron el paquete, nunca mencionaron que no podía mostrar valores negativos. De Verdad? ¿Qué gráfico no necesitaría poder mostrar valores negativos? Solo puedo pensar en uno: el que representa el número de clientes isomórficos descontentos.

Manténgase alejado de estos tipos y diríjase al sitio de cualquier competidor, por ejemplo, ExtJS, JQuery, diablos incluso quxdoo. Hay algunos proyectos por ahí que realmente están ganando terreno y en realidad ofrecen una buena solución.

Tenga mucho cuidado si alguna vez evalúa este producto. Se ve bien, pero aproximadamente dos semanas después de que el proyecto lo use, comenzarás a ver lo que quiero decir. Los widgets están a medias, las fuentes de datos son extremadamente complicadas, y solo porque pagaste por el soporte del foro, no significa que realmente obtendrás otra cosa que no sea sarcástica, respuestas condescendientes que al principio te harán pensar que te perdiste algo. No lo hiciste, generalmente son muy arrogantes.

Mucha suerte, y manténgase alejado de este producto si valora su tiempo de desarrollo y facilidad de mantenimiento. Oh, y una última cosa. Mire el ejemplo de MVC en su sitio web. Literalmente no tiene nada que ver con MVC aparte de que la etiqueta dice "MVC". Tratarán de convencerlo de que dichos marcos son para desarrolladores sin experiencia, y que ese concepto no tiene cabida en la programación real ... Algo así como los que intentan atrapar bloques.


Todo bastante falso, como puedes verificar fácilmente. Aquí está el ejemplo de MVC ( smartclient.com/smartgwt/showcase/#featured_smartgwt_mvc ) que este usuario básicamente no entiende: lea la descripción y verá que se demuestra el tremendo poder. Ni siquiera puedo adivinar lo que significa tener que "buscar e inspeccionar", pero lo más probable es que el usuario no haya leído la Guía de inicio rápido y esté usando el sistema incorrectamente. Simplemente léalo usted mismo ( smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf ) y la arquitectura es clara y se explica por sí misma. Además, nuestros gráficos trazan valores negativos.
Charles Kendrick

Seamos honestos aquí. La versión estable actual de 3.0 no admite números negativos y, en sus propias palabras, se niegan a admitirlo : forums.smartclient.com/showthread.php?t=21219 .
binarygiant


?? Ese hilo dirige a un cliente a usar un lanzamiento de punto (3.1). Es gratis, no es una actualización, y es muy estable. Intentaste hacer que esto pareciera un intento de sobrevender o extraer más dinero, lo que no solo es falso, sino que no podría estar más lejos de la realidad: solo mira todas las nuevas características principales que las personas obtienen gratis en 3.1 ( blog.isomorphic .com / ... ). Claramente estabas siendo intencionalmente engañoso, lo que arroja luz sobre tus otros comentarios.
Charles Kendrick

Ciertamente no es mi intención engañar. En respuesta, sin embargo, diré que es engañoso resaltar todas las excelentes características de un producto, en este caso el paquete de análisis, pero de alguna manera omitir que no (de hecho 3.1), de hecho, trazó números negativos. Además, la actualización a una versión de 3 "puntos" está bien siempre que no haya implementaciones CSS personalizadas en la versión 3.0, lo que resalta otro punto en el que trabajar con SmartGWT es doloroso ...
binarygiant

1

La biblioteca predeterminada de Google es la biblioteca más poderosa.

Ext GWT agrega campanas y silbatos, pero aparte de eso, es similar al de Google.


1

Actualmente nos gustan los widgets de mosaico GWT . Hemos trabajado con ext-JS y hemos creado nuestros propios widgets en el pasado. Las licencias ext-JS y el volumen fueron un problema para nosotros. Rodar el nuestro no es lo que queremos hacer. Mosaic nos da un término medio feliz que nos gusta pensar que será un punto medio aún más feliz a medida que el proyecto madure.


1

Diría que si solo necesita unos pocos widgets, cree el suyo. Puede copiar y pegar algunos conceptos de las bibliotecas mencionadas. Pero a todos les falta una u otra cosa. He jugado con la mayoría de ellos y he abandonado a todos.


1

Una cosa a tener en cuenta es que, desde los foros , parece que GWT-Ext ya no se desarrollará / mantendrá mucho (¿tal vez no?). En su sitio web recomiendan migrar a SmartGWT .


1

No vi este mencionado, Vaadin (anteriormente conocido como IT Mill Toolkit), pero tal vez sea porque técnicamente no es exactamente GWT; como dice su pregunta frecuente :

¿Cómo difiere esto de GWT?

Las aplicaciones GWT se ejecutan en el navegador, mientras que las aplicaciones Vaadin se ejecutan en el servidor. De hecho, utilizamos GWT como un "motor de renderizado" en el lado del navegador, por lo que puede combinar Vaadin y GWT.


1

smartGWT es lento y faltan ejemplos y es muy difícil encontrar respuestas incluso para las preguntas básicas, es decir, vea todas mis preguntas no respondidas en este foro. Estoy tirando smartgwt.


SmartGWT es definitivamente un trabajo en progreso pero está mejorando. En dos ocasiones distintas, hice que los desarrolladores corrigieran errores en el tronco a los pocos días de haberlos informado, lo cual es alentador. Sin embargo, es una API grande y pesada, por lo que debe preguntarse si coincide con la aplicación que está escribiendo.
AndrewR

SmartGWT tiene más muestras que cualquiera de las bibliotecas que se analizan aquí. Esto es objetivamente verificable: ( smartclient.com/smartgwt/showcase/#main ) También tenemos una Guía de inicio rápido extremadamente sólida ( smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf ). Mire las preguntas que hizo este usuario: una no era válida y otra que respondí.
Charles Kendrick el


0

Hemos creado un gran portal de recursos humanos y un par de aplicaciones más pequeñas con GWT Portlets . El objetivo del proyecto no es tanto crear una colección de widgets sino crear un modelo de programación simple.

Desde el sitio web:

GWT Portlets es un marco web gratuito de código abierto para crear aplicaciones GWT (Google Web Toolkit). Define un modelo de programación muy simple y productivo, pero potente, para construir aplicaciones GWT modulares de buen aspecto.

El modelo de programación es algo similar a escribir portlets JSR168 para un servidor de portal (Liferay, JBoss Portal, etc.). El "portal" es su aplicación creada utilizando el marco de portlets GWT como biblioteca. La funcionalidad de la aplicación se desarrolla como Portlets acoplados libremente, cada uno con un DataProvider opcional del lado del servidor.


0

Estoy usando GWT por un año. Después de mucha investigación, he decidido que GWT Mosaic es una biblioteca de widgets ... Mosaic utiliza algunos de los componentes de la incubadora GWT, como PagingScrollTable ... Pero las características del cuadro combinado y la tabla no son suficientes para nosotros ... Por eso, tenemos extendió estos componentes para agregar la funcionalidad necesaria.



0

Dos cosas importantes, y lo que la mayoría de las bibliotecas pierden, son las pruebas unitarias y la depuración. Es donde brilla GWT. Si utiliza una biblioteca que se basa en vanilla js, regala la capacidad de probar unitariamente y depurar su proyecto. Como desarrollador de GWT, debe tener en cuenta estos puntos y utilizar una biblioteca con dependencia js mínima o nula.


0

Llevamos más de 2 años haciendo proyectos de gwt y nos atenemos a los widgets predeterminados. Creamos nuestra propia biblioteca de código abierto para autopoblar las predeterminadas o nuestras propias extensiones de widgets. Por favor verifíquelo , se llama gwt-jet . Está muy bien probado ya que lo usamos en entornos de producción grandes, y esperamos que crezca de manera segura a través del tiempo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.