189 votes

Les plus grands pièges de GWT ?

Je suis au début/milieu d'un projet que nous avons choisi de mettre en œuvre en utilisant GWT. Quelqu'un a-t-il rencontré des écueils majeurs dans l'utilisation de GWT (et GWT-EXT) qui n'ont pas pu être surmontés ? Et du point de vue des performances ?

Voici quelques exemples de ce que nous avons déjà vu/entendu :

  • Google ne parvient pas à indexer le contenu
  • Les CSS et le stylisme en général semblent être un peu instables.

Je suis également à la recherche de tout commentaire supplémentaire sur ces articles. Merci.

1voto

user3781537 Points 1

La meilleure façon d'obtenir des faits fiables est de s'adresser au enquête gwt . L'un des plus grands problèmes avec GWT a toujours été un long temps de compilation. Heureusement, il s'améliore très rapidement et ne sera plus un problème important dans un avenir proche. Un autre piège est que GWT est considérablement plus compliqué parce que Java est un langage plus compliqué qui résiste aux mauvais codeurs à chaque étape du processus. En outre, la compilation ajoute une couche. Par exemple, l'interopérabilité de js nécessite un peu de boilerplate. Le problème fondamental est que GWT n'a pas été conçu pour être simple. Il a été conçu dès le départ pour des applications web extrêmement compliquées et l'ensemble de la communauté donne systématiquement la priorité à la performance, à la qualité du code, à l'architecture, etc. sur la facilité de codage.
Rappelez-vous que vous pouvez utiliser js dans GWT à tout moment, donc si vous avez des difficultés avec GWT, pensez à utiliser js. À la fin de la journée, GWT est js, donc vous pouvez faire tout ce que vous pouvez faire en GWT et en js. En fait, la plupart des projets GWT utilisent js. Le problème est que GWT est drastiquement plus compliqué. Néanmoins, cela vaut parfois la peine de supporter cette complexité supplémentaire.

Il convient de noter que GWT 3.0 apportera des améliorations massives.

0voto

antony.trupe Points 4358

Réutilisation des objets de service RPC.
Il provoque des conditions de course avec des symptômes qui ressemblent à une suspension de l'application.

0voto

Marcel Pater Points 124

Les pièges que j'ai rencontrés 1. Comportement différent en mode superdev. Par exemple, Someclass.class.getName() fonctionne parfaitement en mode Superdev et renvoie le nom complet de la classe. En mode productif, cela ne fonctionne pas.

  1. addWidget(widget) appellera la fonction removefromparent() du widget.

0voto

Alex Rogachevsky Points 361

GWT est un chef-d'œuvre de technologie. Il unit la programmation client et serveur pour en faire une seule application cohérente - la façon dont les logiciels étaient écrits avant la "superposition", et la façon dont ils devraient être écrits. Il élimine les différents ensembles de compétences, la mauvaise communication entre les membres de l'équipe, et généralement toute la phase de conception Web : à la fois l'artistique et la programmation. Et c'est ce qui se rapproche le plus du développement mobile, par exemple Android. En fait, GWT a été conçu pour générer différentes interfaces utilisateur natives, pas seulement du HTML. Bien qu'il faille une discipline énorme pour assurer un tel découplage - pour garder vos couches internes agnostiques en matière de présentation.

La première erreur à éviter, que j'ai mis quatre ans à réaliser, est l'utilisation d'extensions tierces comme EXT-GWT aka GXT et SmartGWT. Il est très tentant de commencer à utiliser leurs jolis widgets de bureau au lieu d'investir dans votre propre style, mais je ne peux pas dire combien de problèmes j'ai eu avec SmartGWT jusqu'à ce que j'en ai finalement eu marre. En bref, il fige les fonctionnalités de base de GWT à un certain niveau (assez dépassé) et construit ensuite par-dessus. Also keep in mind, that chiseled desktop look and feel looks silly nowadays, not to mention the sluggish performance, tons of bugs, and compatibility features - especially on mobile devices. You want to stay as close to the native browser controls, as possible i.e. dropdowns rendered as native <select> elements, not some custom-painted controls.

Grâce aux tendances mobiles, l'ensemble de l'interface utilisateur se simplifie et s'aplatit, de sorte qu'il n'est pas nécessaire de faire beaucoup d'efforts pour créer une application de qualité. Bien que si vous voulez un look "3D", il y a aussi les dégradés. CSS3 a rendu tout facile, et GWT l'enveloppe d'une manière élégante orientée objet contrairement au CSS brut. Ne vous découragez donc pas en regardant les contrôles de base plutôt laids dans la vitrine GWT. L'équipe GWT n'a intentionnellement pas offert de style, parce que c'est le travail du développeur.

Le reste est en grande partie de la programmation conventionnelle par navigateur en Java fortement typé avec de belles API concises. Mais bien sûr, n'oubliez jamais que votre code s'exécute à l'intérieur du navigateur, donc tous les appels sont asynchrones. Par exemple, vous ne pouvez pas appeler les méthodes GWT-RPC dans une boucle (pour remplir une liste), mais vous devez les enchaîner récursivement si vous vous trouvez un jour dans cette situation.

Il y a quelques "anti-modèles" autoproclamés comme ne pas utiliser GWT-RPC. Il a été bon pour moi jusqu'à présent : pendant 10 ans. La simplicité est la clé. Je ne penserais même pas une seconde à sacrifier quelques performances marginales pour l'élégance et la maintenabilité du code. De plus, ce n'est pas là que se trouvent vos goulots d'étranglement - dans la base de données. Bien sûr, tenez compte de la quantité de données que vous envoyez au client.

Et si vous ne parvenez pas à trouver ou à styliser le jeu d'éléments HTML5 gadget - read rich existant, vous pouvez toujours envelopper un élément tiers. Je l'ai fait avec un calendrier populaire jQuery FullCalendar. Ce n'est pas sorcier du tout. Tout le reste comme Google Maps et Google Charts a des wrappers GWT semi-officiels.

GWT est parfait. La seule raison pour laquelle il ne reçoit pas assez d'amour est que les premiers adopteurs de l'Internet qui influencent encore l'industrie ne viennent pas de l'informatique et des langages orientés objet pour les apprécier. Ils ont soit une formation artistique (Photoshop/WordPress) ou de réseau (Perl/Python).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X