Question pour tous les gourous de GWT - quelle est la meilleure bibliothèque de widgets GWT? Et pourquoi?
Liste basée sur les réponses:
И наконец- новое поколение основанное на JsInterop :
Ne vous attachez à AUCUNE de ces bibliothèques. Utilisez Vanilla GWT pour créer la structure de votre projet. En particulier, utilisez le modèle MVP et un bus d'événements. Veuillez consulter l'article sur Google pour savoir comment concevoir au mieux votre application cliente avec GWT: Création d'applications MVP
Ensuite, vous pouvez utiliser n’importe quel widget de ces bibliothèques (disons une table, une liste déroulante, un sélecteur de date, etc.) et l’incorporer à votre projet. Essayez d'utiliser des composants étendus UNIQUEMENT si vous ne voyez pas le moyen de le faire avec Vanilla GWT. De cette façon, vous ne vous liez pas à ces bibliothèques qui sont TOUJOURS pénibles lorsque vous essayez de faire quelque chose qui n'apparaît pas dans l'application de démonstration, qui contient de nombreux bogues et dont le support est au mieux médiocre.
Comment rechercher des widgets doit suivre cet ordre:
Faisant attention avec les autres bibliothèques, j'ai travaillé avec elles (et j'ai toujours des cauchemars).
Cela dépend de ce que vous entendez par "meilleur". Le plus beau? Meilleure API? Idéal pour étendre vos propres besoins?
Par exemple, je suis en train d'évaluer les classes de table à utiliser dans notre application. Nous utilisons GWT-Ext, mais cela pose de nombreux problèmes de performances et il est très difficile de dimensionner les tables de la manière dont nous en avons besoin. J'étais très proche de GWT-Mosaic , mais j'ai plutôt décidé de développer les widgets de GWT Incubator .
Alors, pourquoi ai-je fait ce choix? Il semble que trop de bibliothèques possèdent leur propre bagage, faute d’un meilleur Word. Soit vous devez plonger à fond dans un framework MVC (qui peut ne pas être entièrement compatible avec le reste de votre base de code), ou vous devez adopter le nouveau système de mise en page fantasmé de quelqu'un, ou vous devez vivre avec le fait que vous ne pouvez pas vraiment déboguer le code (parce que ce sont juste des wrappers JSNI).
Ne vous méprenez pas, l'incubateur GWT n'est pas parfait ... les widgets qu'il y a sont en train de changer. Dans mon cas, c'était le meilleur choix, cependant. Cela me donne bien (mais certainement pas parfait):
Donc ... la réponse (pour moi) est une combinaison de:
(Je devrais ajouter: le "bagage" dont je parle n'est pas nécessairement une mauvaise chose. Mais, si vous voulez juste un widget ou deux , cela peut augmenter la barre sur ce qu’il faut faire pour que votre travail soit terminé et sur la qualité de votre application.)
Voir cette bibliothèque de composants GWT Bootstrap Ceci est une implémentation dans gwt de Twitter Bootstrap.
GWT seul est une très bonne bibliothèque.
Je n'ai pas utilisé tous les mentionnés mais je peux recommander Ext GWT .
Je préfère Vanilla GWT. Certaines des autres API sont jolies et leurs vitrines présentent vraiment les widgets, mais je trouve toujours que les performances ne sont pas les meilleures… quand je parle de performance, je parle plutôt du temps de réponse. Je déteste quand une application semble lente.
La plupart des bibliothèques mentionnées ne sont pas open source et pire encore: elles ne sont que des wrappers placés au-dessus d’une bibliothèque JavaScript. La puissance de GWT réside dans le fait que l'application fonctionne sur différents navigateurs (en raison de la génération de code pour les "gros" navigateurs en particulier). Ces bibliothèques JavaScript sous-jacentes peuvent causer beaucoup de problèmes.
Je suis d'accord avec Jgindin GWT Incubator et GWT Mosaic sont les meilleurs à ce jour.
Ne dis pas que c'est "le meilleur", mais j'ai utilisé GWT-Ext au travail ces derniers temps. Il y a des avantages et des inconvénients:
Avantages:
Inconvénients:
N'utilisez aucun d'entre eux! Si vous envisagez de développer une application à grande échelle, vous devriez envisager d'utiliser le modèle MVP. La meilleure implémentation est MVP4G framework, elle supporte le fractionnement du code GWT. Vous pouvez commencer par beaucoup d’excellents exemples. Le plus précieux est Mvp4GModules.
Ajoutez le nouveau: GWT-Bootstrap :)
Il n'y a pas de version stable pour le moment, mais l'aura bientôt.
Mon expérience montre qu'il y a toujours beaucoup de problèmes avec les bibliothèques tierces. Le meilleur moyen - consiste à utiliser une technologie bien connue et bien conçue, ainsi que vos propres composants. Leur rédaction et leur maintenance peuvent prendre plus de temps, mais le coût total de possession est toujours inférieur.
Les bibliothèques tierces peuvent souvent casser vos plans inopinément. Et il est difficile de trouver et de résoudre la source du problème.
Donc, je suggère d'utiliser simplement GWT.
Je pense que SmartGWT convient si vous voulez simplement utiliser les widgets tels quels, mais si vous souhaitez étendre ou modifier les widgets comme je le fais dans le Gxt Scheduler Je pense que Ext-GWT est un meilleur choix.
eXT-GWT (alias GXT) est pour moi la meilleure bibliothèque actuellement disponible. Je l’utilise en projet de 6 mois, et cela aide beaucoup avec de nombreux composants prédéfinis comme les grilles, les arbres ... C’est beau aussi
le groupe d'utilisateurs de gwt-mosaic ne semble pas très actif et je ne pouvais pas trouver un manuel d'utilisateur en plus des extraits de wiki. gwt-mosaic m'a présenté deux outils intéressants.
1) gwt-mosaic inclut un wrapper pour PageBus de Tibco, qui est un outil de publication/abonnement pour les parties JS de votre application (gestionnaires RPC, rappels de widgets, ajusteurs de widgets). C'est une alternative au bus d'événements de GWT.
2) gwt-mosaic encourage l'utilisation de Beans Binding (http://code.google.com/p/gwt-beans-binding/) pour lier les données aux widgets et les valider.
smartgwt n'est pas bon marché pour l'ensemble des fonctionnalités et l'assistance. Le fichier jar est trop volumineux pour un moteur d’application, sauf si vous supprimez les fichiers de thème que vous n’utilisez pas. Ils investissent également dans l'ingénierie côté serveur.
J'ai entendu dire que ext-gwt était lent et que les fichiers JS étaient volumineux.
L'incubateur de widgets gwt semble obsolète. Je crois que la grille de luxe sera publiée avec le nouveau gwt.
L'absence de normes de présentation, de liaison et de validation nuit à l'interopérabilité des bibliothèques de widgets.
Certainement pas SmartGWT. Leur cadre est gonflé et a une nature très à moitié cuite. Ils ont un million de widgets, mais il n'est pas facile d'essayer de les faire travailler pour votre projet. Les sources de données compliquent énormément le processus de gestion de vos données. Par exemple, pour accéder aux données de votre source de données, vous devez utiliser fecth et inspecter souvent. Bien que vous puissiez mettre en cache les résultats, il n’est pas toujours facile de les interroger.
RPC est une autre zone faible et complexe. Il y a des informations contradictoires dans la documentation et dans les forums. Alors que la documentation indiquera que vous devriez rarement utiliser une opération personnalisée dans le cadre d'un ds, le forum vous dira que tout va bien. Apprendre à utiliser ces outils efficacement est une ascension difficile le meilleur des jours.
Ils vont survendre le produit. Par exemple, le package graphique/analytique contient des graphiques ... Mais ces graphiques n'affichent pas de valeurs négatives et ne vous permettent pas de manipuler de manière significative les étiquettes d'axe. Et ils répondent ouvertement aux questions à ce sujet sur le forum avec une attitude "yeah so what". "Nous n'avons pas l'intention d'ajouter cela à la version 3.0x, même si c'est l'un de nos arguments de vente, c'est sur notre feuille de route." Quand ils m'ont vendu le paquet, ils n'ont jamais mentionné que je ne pouvais pas afficher de valeurs négatives. Vraiment? Quel graphique n'aurait pas besoin de pouvoir montrer des valeurs négatives? Je peux penser à un seul, celui qui décrit le nombre de clients malheureux Isomorphic.
Restez à l'écart de ces gars-là et rendez-vous sur le site de l'un de vos concurrents, par exemple ExtJS, JQuery, diable même quxdoo. Il existe quelques projets qui gagnent vraiment du terrain et offrent une bonne solution.
Prenez des précautions si vous évaluez ce produit. Cela a l'air bien, mais après environ deux semaines d'utilisation du projet, vous allez commencer à voir ce que je veux dire. Les widgets sont à moitié cuits, les sources de données sont extrêmement compliquées, et ce n'est pas parce que vous avez payé pour le support du forum que vous obtiendrez des réponses sournoises et condescendantes qui vous feront penser que vous avez manqué quelque chose. Vous n'avez pas ils sont généralement très arrogants.
Bonne chance et évitez ce produit si vous accordez de l'importance à votre temps de développement et à votre facilité de maintenance. Oh, et une dernière chose. Regardez l'exemple MVC sur leur site Web. Cela n'a littéralement rien à voir avec MVC si ce n'est que l'étiquette indique "MVC". Ils essaieront de vous convaincre que de tels frameworks sont destinés à des développeurs inexpérimentés, et qu'un tel concept n'a pas sa place dans la programmation réelle ... Un peu comme ces blocs catch try.
Je dirais que si vous n'avez besoin que de quelques widgets, construisez le vôtre. Vous pouvez copier-coller certains concepts des bibliothèques mentionnées. Mais ils manquent tous d'une chose ou de l'autre. J'ai joué avec la plupart d'entre eux et j'ai tout abandonné.
Nous aimons actuellement les widgets GWT Mosaic . Nous avons travaillé avec ext-JS et nous avons déjà lancé nos propres widgets. Les licences ext-JS et le volume étaient un problème pour nous. Rouler nous-mêmes n'est pas ce que nous voulons faire. La mosaïque nous donne un terrain d'entente heureux que nous aimons penser sera un terrain d'entente encore plus heureux à mesure que le projet mûrit.
La bibliothèque par défaut de Google est la bibliothèque la plus puissante.
Ext GWT ajoute des cloches et des sifflets, mais à part cela, il est similaire à celui de Google.
smartGWT est lent et les exemples manquent et il est très difficile de trouver des réponses aux questions même les plus élémentaires, c’est-à-dire toutes mes questions sans réponses sur ce forum. Je décharge smartgwt.
Je n'ai pas vu celui-ci mentionné, Vaadin (auparavant connu sous le nom de IT Mill Toolkit), mais c'est peut-être parce que ce n'est pas techniquement exactement GWT; comme leur FAQ dit:
En quoi cela diffère-t-il de GWT?
Les applications GWT s'exécutent dans le navigateur, tandis que les applications Vaadin s'exécutent sur le serveur. Nous utilisons réellement GWT en tant que "moteur de rendu" du côté du navigateur, vous pouvez donc combiner Vaadin et GWT.
Nous travaillons sur des projets GWT depuis plus de 2 ans et nous nous en tenons aux widgets par défaut. Nous avons créé notre propre bibliothèque open source pour remplir automatiquement les bibliothèques par défaut ou nos propres extensions de widgets. S'il vous plaît vérifier, il s'appelle gwt-jet . Il est très bien testé car nous l'utilisons dans de grands environnements de production et nous espérons qu'il se développera en toute sécurité dans le temps.
J'utilise GWT depuis un an. Après de nombreuses recherches, j'ai choisi GWT Mosaic en tant que bibliothèque de widgets. Mosaic utilise certains des composants de l'incubateur GWT tels que PagingScrollTable. Mais les fonctionnalités de la liste déroulante et de la table ne nous suffisent pas. C'est pourquoi nous avons étendu ces composants pour ajouter les fonctionnalités nécessaires.
Découvrez SpiffyUI: www.spiffyui.org
Ce n'est pas simplement une bibliothèque de widgets, mais un framework complexe UI/UX GWT.
Comparaison des deux EXT ici avec le pour et le contre.
Nous avons construit un grand portail RH et quelques applications plus petites utilisant Portlets GWT . L'objectif du projet n'est pas tant de construire une collection de widgets, mais de créer un modèle de programmation simple.
Sur le site:
GWT Portlets est un framework Web open source gratuit permettant de créer des applications GWT (Google Web Toolkit). Il définit un modèle de programmation très simple, productif et puissant, permettant de créer de belles applications GWT modulaires.
Le modèle de programmation est un peu similaire à l'écriture de portlets JSR168 pour un serveur de portail (Liferay, JBoss Portal, etc.). Le "portail" est votre application créée à l'aide de la structure de portlets GWT en tant que bibliothèque. Les fonctionnalités de l'application sont développées sous la forme de portlets à couplage faible, chacun avec un DataProvider côté serveur en option.
Deux choses importantes - et ce que la plupart des bibliothèques ont raté - sont les tests unitaires et le débogage. C'est là que GWT brille. Si vous utilisez une bibliothèque basée sur Vanilla js, vous donnez la possibilité de tester et de déboguer votre projet. En tant que développeur GWT, vous devez prendre en compte ces points et utiliser une bibliothèque ne comportant aucune dépendance js ou minimale.