Question

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

Parmi les choses que nous avons déjà vues / entendues, notons:

  • Google ne peut pas indexer le contenu
  • CSS et le style en général semblent un peu floconneux

Vous souhaitez également obtenir des commentaires supplémentaires sur ces éléments. Merci!

Était-ce utile?

La solution

Je commencerai par dire que je suis un grand fan de GWT, mais oui, il y a de nombreux pièges, mais la plupart sinon tous nous avons été en mesure de surmonter:

Problème: Les délais de compilation sont longs, mais plus le projet prend de temps, plus le temps nécessaire à sa compilation est long. J'ai entendu parler de compilations de 20 minutes, mais les miennes durent en moyenne une minute.

Solution: divisez votre code en modules distincts et indiquez à ant de ne le construire que s'il est modifié. De même, tout en développant, vous pouvez considérablement accélérer les temps de compilation en ne construisant que pour un seul navigateur. Vous pouvez le faire en le mettant dans votre fichier .gwt.xml:

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

Où gecko1_8 est Firefox 2+, ie6 est IE, etc.

Problème: le mode hébergé est très lent (au moins sous OS X) et ne correspond pas aux modifications "réelles" que vous obtenez lorsque vous modifiez des éléments tels que les pages JSP ou Rails et que vous cliquez sur Actualiser. dans votre navigateur.

Solution: Vous pouvez attribuer plus de mémoire au mode hébergé (512 Mo en moyenne), mais cela reste lent. J'ai constaté qu'une fois que vous maîtrisez suffisamment bien GWT, vous cessez de l'utiliser. Vous effectuez un grand nombre de modifications, puis vous ne compilez que pour un seul navigateur (généralement 20 fois plus), puis cliquez sur Actualiser dans votre navigateur.

Mise à jour: Avec GWT 2.0+, ce n’est plus un problème, car vous utilisez le nouveau "Mode de développement". En gros, cela signifie que vous pouvez exécuter du code directement dans le navigateur de votre choix, afin d’éviter toute perte de vitesse et que vous puissiez le contrôler / inspecter, etc.

http://code.google.com/p/google -web-toolkit / wiki / UsingOOPHM

Problème: le code GWT est Java et a une mentalité différente de celle de la présentation d'une page HTML, ce qui rend plus difficile de transformer un dessin HTML en GWT

.

Solution: Encore une fois, vous vous y habituez, mais malheureusement, convertir un dessin HTML en dessin GWT sera toujours plus lent que de convertir un dessin HTML en page JSP.

Problème: GWT met un peu votre tête à l’esprit et n’est pas encore intégré dans la société. Cela signifie que la plupart des développeurs qui rejoignent votre équipe ou qui entretiennent votre code devront l’apprendre à partir de rien

Solution: Reste à savoir si GWT décollera, mais si vous êtes une entreprise qui contrôle le choix de votre entreprise, vous pouvez toujours choisir des personnes qui connaissent GWT ou souhaitent le faire. apprenez-le.

Problème: GWT est un sledgehammer comparé à quelque chose comme jquery ou simplement javascript. Cela nécessite beaucoup plus de configuration que de simplement inclure un fichier JS.

Solution: Utilisez des bibliothèques telles que jquery pour des tâches plus petites et simples, adaptées à ces tâches. Utilisez GWT lorsque vous souhaitez créer quelque chose de vraiment complexe dans AJAX ou si vous devez transmettre vos données en continu via le mécanisme RPC.

Problème: Parfois, pour remplir votre page GWT, vous devez passer un appel au serveur lors du premier chargement de la page. Il peut être ennuyeux pour l'utilisateur de rester assis à la regarder un symbole de chargement pendant que vous récupérez les données dont vous avez besoin.

Solution: Dans le cas d'une page JSP, votre page avait déjà été rendue par le serveur avant de devenir HTML. Vous pouvez donc passer tous vos appels GWT à l'avance et les pré-charger sur le serveur. page, pour un chargement instantané. Voir ici pour plus de détails:

Accélération du chargement de la page en chargeant vos appels GW

Je n’ai jamais eu de problèmes pour styliser mes widgets CSS, prêts à l’emploi, personnalisés ou non, alors je ne sais pas ce que vous entendez par là comme un piège?

En ce qui concerne les performances, j’ai toujours trouvé qu’une fois le code GWT compilé, il était rapide et que les appels AJAX étaient presque toujoursPlus petit que d’actualiser une page entière, mais ce n’est pas vraiment unique pour GET, les paquets RPC natifs que vous obtenez si vous utilisez un back-end JAVA sont assez compacts.

Autres conseils

Nous travaillons avec GWT depuis près de 2 ans. Nous avons appris beaucoup de leçons. Voici ce que nous pensons:

  1. N'utilisez pas les bibliothèques de widgets tiers, en particulier gwt-ext. Cela tuera vos performances de débogage, de développement et d'exécution. Si vous avez des questions sur la façon dont cela se produit, contactez-moi directement.

  2. Utilisez gwt pour remplir uniquement les parties dynamiques de vos applications. Donc, si vous avez des interactions utilisateur complexes avec beaucoup de champs. Cependant, n'utilisez pas les panneaux qui l'accompagnent. Prenez vos pages existantes fournies par concepteur stock. Découpez les zones qui contiendront les contrôles pour votre application. Attachez ces contrôles à la page dans onModuleLoad (). De cette façon, vous pouvez utiliser les pages standard de votre concepteur et également effectuer tous les styles en dehors du gwt.

  3. Ne construisez pas l'application entière en tant que page standard qui construit ensuite dynamiquement tous les éléments. Si vous faites ce que je suggère au point 2, cela n'arrivera pas de toute façon. Si vous construisez tout de manière dynamique, vous réduirez les performances et utiliserez d'énormes quantités de mémoire pour les applications de moyenne à grande taille. De plus, si vous faites ce que je suggère, le bouton Précédent fonctionnera très bien, donc l'indexation des moteurs de recherche, etc.

Les autres commentateurs ont également formulé de bonnes suggestions. La règle empirique que j’utilise est de créer des pages comme si vous faisiez une page Web standard. Découpez ensuite les éléments qui doivent être dynamiques. Remplacez-les par des éléments dotés d'un identifiant, puis utilisez RootPanel.get( id ).add( widget ) pour renseigner ces zones.

Pièges rencontrés:

  • Même si vous pouvez utiliser beaucoup de choses comme GWT EXT, chaque fois que vous utilisez ce type de placage mince au-dessus d'une bibliothèque JavaScript, vous perdez la possibilité de déboguer. Plus d'une fois, je me suis cogné la tête contre le bureau parce que je ne peux pas inspecter (dans mon débogueur IntelliJ) ce qui se passe dans la classe de table GWT EXT ... Tout ce que vous pouvez voir, c'est qu'il s'agit d'un JavaScriptObject. Cela rend assez difficile de comprendre ce qui ne va pas ...

  • Ne pas avoir quelqu'un dans votre équipe qui connaisse CSS. D'après mon expérience, peu importait que la personne ne soit pas un expert… il lui suffisait d'avoir de bonnes connaissances pratiques et de connaître les termes appropriés pour Google lorsque cela était nécessaire.

  • Débogage à travers les navigateurs. Surveillez le mode hébergé hors processus [ 1 ] [ 2 ] [ 3 ], dans l’espoir à venir dans GWT 1.6 ... Pour le moment, il vous suffit de bien utiliser le mode hébergé, puis utilisez la commande & "Compiler / Parcourir &"; bouton, où vous pouvez jouer avec d'autres navigateurs. Pour moi, travailler sous Windows, cela signifie que je peux voir mon travail dans FireFox et utiliser FireBug pour améliorer et améliorer les choses.

  • IE6. C'est incroyable comment IE 6 différent rendra les choses. J'ai adopté l'approche consistant à appliquer un style à la plus extérieure & "; Viewport &"; en fonction du navigateur afin que je puisse avoir des règles CSS comme:

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

Enfin, assurez-vous d’utiliser un éditeur qui vous aide. J'utilise IntelliJ - il a beaucoup d'intelligence GWT. Par exemple, si j'essaie d'utiliser une classe qui n'est pas gérée par l'émulation JRE, elle me le fait savoir. si je spécifie un style pour un widget et que je ne l'ai pas encore défini, le code devient légèrement ondulé ... Ou, lorsque vous regardez le CSS, il me dira quand j'ai spécifié des attributs en conflit dans un règle simple. (Je ne l’ai pas encore essayé, mais je comprends que la version 8 offre un meilleur support GWT, comme conserver les & "Local &" Et les & "Async &"; Interfaces RPC et mises en œuvre synchronisées)

GWT 2.0, qui devrait sortir dans les prochains mois, résout de nombreux problèmes abordés.

  • Créer des mises en page en utilisant une syntaxe HTML / XML semblable à celle-ci
  • Chargement de script dynamique - seuls les fichiers JS essentiels seront téléchargés initialement. Le reste sera téléchargé au besoin
  • Mode hébergé dans le navigateur - Cela pourrait résoudre les problèmes de vitesse du mode hébergé abordés, entre autres avantages
  • & "; Optimisations du compilateur &"; - Une compilation plus rapide, espérons-le

Vidéo de prévisualisation GWT 2.0 sur Google I / O

Pas & "Impossible à vaincre &"; mais un peu de douleur pour quelque chose de base.

Traitement de la date:

GWT utilise le paramètre obsolète java.util.Date, ce qui peut entraîner un comportement inattendu lors du traitement des dates côté client. java.util.Calendar n'est pas pris en charge par GWT. Plus d'informations ici .

Exemples de problèmes connexes:

Je vais ajouter quelques points à ceux déjà mentionnés:

  • Liaison de données / validation. GWT n’a pas de support prédéfini de liaison / validation de données, bien que certains projets commencent à émerger dans ce domaine. Vous vous retrouverez en train d'écrire beaucoup de ceci:
TextField fname, faddress;
...
fname.setText(person.getName());
faddress.setText(person.getAddress());
...
  • Chargement paresseux. Puisque gwt est du côté client, le chargement différé n’est vraiment pas une option. Vous devrez concevoir vos RPC et vos objets de domaine avec soin afin de
    • envoyez toutes vos données d'objet nécessaires
    • évitez de récupérer toutes vos données avec impatience
    • Vous devrez également vous assurer que vous n'enverrez pas de proxies / d'objets non sérialisables. hibernate4gwt peut vous aider à résoudre ces problèmes.
  • Conception de l'interface utilisateur. Il est plus difficile de visualiser une interface utilisateur en java (panneaux, boutons, etc.) qu'en HTML.
  • Prise en charge de l'historique. GWT n'est pas livré avec un sous-système d'historique, ni avec aucun sous-système pour les adresses URL agréables ou la mise en favori. Vous devrez rouler le vôtre (bien qu'il prenne en charge les jetons d'historique, ce qui est un début). Cela se produit avec toutes les boîtes à outils AJAX, autant que je sache.

À mon humble avis, il manque à GWT un cadre prenant immédiatement en charge tous les problèmes mentionnés dans ce "fil".

Je travaille actuellement sur un projet qui utilise EXT GWT (GXT) à ne pas confondre avec GWT EXT. Il y a une différence, EXT GWT est celui qui est réellement produit par la société qui a écrit ExtJS la bibliothèque javascript. GWT EXT est un wrapper GWT autour de la bibliothèque ExtJS. GXT est le GWT natif.

Quoi qu'il en soit, GXT est encore un peu immature et manque d'une communauté solide que GWT EXT possède. Cependant, l'avenir est avec GXT, car c'est GWT natif et développé par la société qui a fabriqué ExtJS. GWT EXT est quelque peu paralysé car la licence a changé sur la bibliothèque ExtJS, ce qui ralentit le développement de GWT EXT.

Globalement, je pense que GWT / GXT est une bonne solution pour développer une application Web. En fait, j'aime beaucoup le mode hébergé pour le développement, cela rend les choses rapides et faciles. Vous bénéficiez également de la possibilité de déboguer votre code. Les tests unitaires avec JUnit sont également assez solides. Je n'ai pas encore vu un excellent framework de tests unitaires JavaScript qui, à mon avis, était suffisamment mature pour tester une application d'entreprise.

Pour plus d’informations sur GWT EXT: http://gwt-ext.com/

Pour plus d’informations sur EXT GWT (GXT): http://extjs.com/products/gxt/

Aucun écueil majeur que je n'ai pas pu surmonter facilement. Utilisez fortement le mode hébergé. Comme vous utilisez GWT-ext, vous n’aurez presque jamais besoin de toucher CSS vous-même, à moins que vous ne vouliez peaufiner le look original.

Ma recommandation est d'utiliser un GWT " native " widget sur une bibliothèque où ils sont proches dans les fonctionnalités.

Réindexation sur les moteurs de recherche: oui, le site n’aura pas d’URL de navigation normale (à moins que vous n’ajoutiez des widgets aux éléments d’un site Web classique). Vous pouvez cependant faire l'historique des fonctionnalités de retour / transmission.

J'ai utilisé GWT et GWT-ext ensemble sur un projet il y a quelque temps. J'ai trouvé l'expérience assez fluide au fur et à mesure du développement Web, mais mon conseil serait le suivant:

Ne mélangez pas les widgets GWT natifs avec les widgets EXT. C'est déroutant, puisque les noms sont généralement les mêmes (GWT.Button ou GWText.Button?)

Une des choses qui m’ont réellement rendu le code plus complexe que je l’aurais souhaité, c’est que je voulais un groupe a) actualisable dynamiquement b) en cascade

Les panneaux natifs GWT sont dynamiques, les panneaux Ext peuvent être mis en cascade. Solution? Un panneau GWT.Vertical qui enveloppe un panneau GWTExt ... Chaos. :)

Mais bon, ça marche. ;)

J'appuie le commentaire de ykagano, le plus gros inconvénient est de perdre le V dans MVC. Bien que vous puissiez séparer la vraie classe d'interface utilisateur du reste de votre code côté client, vous ne pouvez pas facilement utiliser une page HTML générée par un concepteur graphique / Web. Cela signifie que vous avez besoin d'un développeur pour traduire le code HTML en Java.

Obtenez un éditeur wysiwyg ui, cela vous fera gagner beaucoup de temps. J'utilise GWTDesigner.

Le plus gros avantage de GWT est de pouvoir oublier les problèmes de navigation croisée. Ce n'est pas à 100% mais enlève presque toute cette douleur. Combiné aux avantages du débogage en mode hébergé (par opposition à Firebug, qui est excellent mais différent d’un débogueur Java), il offre au développeur un énorme avantage pour la création d’applications ajax complexes.

Oh, c'est rapide au moment de l'exécution, surtout si vous utilisez un filtre gzip.

Légèrement hors sujet, mais le canal #gwt sur irc est très utile, au cas où vous auriez un problème persistant.

GWT est assez simple et intuitif.

En particulier avec la publication de UIBinder, qui permet de disposer les widgets GWT en XML, puis de les coder derrière en Java.

Ainsi, si vous avez utilisé d'autres outils de conception Ajax ou Flash, Silverlight, etc., il est très facile d'apprendre à utiliser GWT.

L’obstacle majeur, sinon le piège, est GWT RPC. Si vous souhaitez utiliser GWT, c’est à cause de RPC asynchrone GWT. Sinon, pourquoi ne pas simplement compter sur css pour formater votre page?

GWT RPC est cet élément qui permet à votre serveur d'actualiser les données sur votre serveur sans avoir à actualiser la page. C’est une exigence absolue pour les pages telles que le suivi de la performance des actions (ou la dette publique nationale et publique actuelle des États-Unis ou le nombre de bébés à naître avortés dans le monde à la seconde).

GWT RPC demande quelques efforts pour comprendre, mais dans quelques heures, tout devrait être clair.

En outre, après avoir déployé des efforts pour apprendre GWT RPC, vous découvrez enfin que vous ne pouvez pas utiliser les JSP en tant que composant de service pour RPC, sauf si ... J'ai une série en 8 parties (je pense) sur mon blog expliquant comment utiliser JSP en tant que serveur RPC GWT. Cependant, puisque vous n’avez pas demandé de réponses, mais seulement des numéros, je vais renoncer à la publicité sur mon blog.

Alors. Je crois fermement que les pires obstacles à l’utilisation de GWT consistent à savoir comment déployer correctement le RPC asynchrone de GWT et comment l’autoriser à utiliser des serveurs de traitement JSP.

Nous avons eu beaucoup de difficulté à associer notre base de code GWT à des modèles Web HTML fournis par un concepteur Web (pages HTML statiques avec des identifiants div spécifiques que nous voulions que GWT gère). Au moins, lorsque nous l’utilisions, nous n’avions pas pu intégrer GWT à des éléments de notre site Web qui n’étaient pas codés dans GWT. Cela a finalement fonctionné, mais c'était un gros coup.

  • L’interface async que vous devez écrire pour chaque interface de service ressemble à quelque chose qui aurait pu être généré automatiquement par le compilateur GWT.
  • Les temps de compilation deviennent longs pour les grands projets

Mais pour un grand projet Javascript, c'est le meilleur choix

GWT 2.4 a corrigé bon nombre des problèmes susmentionnés et une excellente bibliothèque de widgets vient de sortir de la version bêta (Ext GWT 3.0.4, également appelée GXT), qui est entièrement écrite en GWT, et non comme un wrapper d’une librairie JS.

Douleur persistante:

  • Absence de prise en charge du sélecteur CSS3, vous pouvez utiliser & "; literal () &"; dans certains cas, pour le contourner.
  • Absence de prise en charge de CSS3 et d'événements de navigateur modernes tels que transitionEnd .
  • Absence de prise en charge des classes de calendrier Java (plusieurs années plus tard).
  • Absence de prise en charge de JUnit4 (5 ans et plus).
  • L'absence de feuille de route claire et de calendrier de publication de l'équipe Google GWT.

En ce qui concerne GWT 2.4, Utiliser Firefox lors du débogage de GWT, le processus est beaucoup plus rapide que l'utilisation de chrome. Et si vous utilisez uniquement Firefox, envisagez de placer cette ligne dans votre fichier project.gwt.xml

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

De plus, si vous utilisez eclipse, ajoutez les éléments suivants sous arguments - > Arguments de la machine virtuelle:

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

Vous pouvez diviser votre serveur et votre client et utiliser les éléments suivants sous les arguments - > Arguments du programme: -codeServerPort 9997 -startupUrl http: // votreserveur / projet -noserver

En outre, pour éviter d’actualiser votre serveur à chaque modification, utilisez JRebel. http: // zeroturnaround. com / blog / comment-rock-out-avec-jrebel-et-google-web-toolkit-gwt / Et voici une démo live http://www.youtube.com/watch?feature=player_embedded amp; v = 4JGGFCzspaY

Un inconvénient majeur est que vous devez parfois attribuer explicitement un identifiant à ce qui devient finalement un élément HTML pour pouvoir utiliser certains styles CSS. Par exemple: un TabPanel GWT ne fera que: survoler tabBarItems lorsque TabBar de TabPanel a été assigné à un ID et que vous spécifiez un: survol sur cet elementId.

J'ai écrit sur un autre Les inconvénients de GWT ailleurs, mais ils sont déjà couverts par rustyshelfs répondent:).

J'ai récemment beaucoup travaillé sur GWT, et voici ce que je dois dire:

  1. Le style CSS n’est pas toujours facile, utilisez l’outil de développement IE dans IE et firebug dans Firefox pour comprendre ce qui se passe exactement et vous aurez une idée précise de ce qu’il faut changer de CSS
  2. Vous pouvez utiliser des astuces pour que Google l'indexe. Un site très célèbre est http://examples.roughian.com/ , consultez ses notes sur Google. Un site beaucoup moins connu est www.salvin.in (je ne pouvais pas résister à le mentionner), je l'ai optimisé en fonction des mots. : page d'accueil de salvin (recherche sur Google de ces trois mots)

Je ne connais pas grand chose à propos de GWT-EXT, mais je suis également convaincu qu'il n'est pas nécessaire d'inclure les bibliothèques tierces.

Bonne chance sur votre décision:)

L’équipe de GWT a apporté d’importantes améliorations à la sortie de GWT 2.7 l’année dernière. L'une des principales faiblesses de GWT est que la compilation prend trop de temps dans GWT 2.6 et inférieur. Ceci est maintenant parti GWT n'a pas compilé incrémental ce qui est super rapide et compile seulement les changements.

GWT 2.7 a maintenant ( Source ):

  • La construction incrémentielle ne dure plus que quelques secondes
  • Cartes source plus compactes et plus précises
  • Prise en charge de GSS
  • JSInterop
  • Excellente performance JavaScript
  • Taille de code plus petite

La meilleure façon d'obtenir des faits fiables consiste à enquête gwt . L’un des plus gros problèmes avec GWT a toujours été le temps de compilation. Heureusement, les choses s’améliorent très rapidement et ne seront donc pas un problème majeur dans un avenir proche. Un autre piège est que GWT est considérablement plus compliqué car Java est un langage plus compliqué qui résiste à tous les niveaux aux mauvais codeurs. De plus, la compilation ajoute une couche. Par exemple, js interop nécessite un peu de passe-partout. 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 toute la communauté donne systématiquement la priorité aux performances, à la qualité du code, à l'architecture, etc., par rapport au codage aisé.
     N'oubliez pas que vous pouvez utiliser js dans GWT à tout moment. Par conséquent, si vous avez des difficultés avec GWT, envisagez d'utiliser js. À la fin de la journée, GWT est js, vous pouvez donc faire tout ce que vous pouvez dans GWT. En fait, la plupart des projets GWT utilisent js. Le problème est que GWT est considérablement plus compliqué. Néanmoins, cela vaut parfois la complexité supplémentaire.

Il est à noter que GWT 3.0 apportera des améliorations considérables.

Réutilisation des objets de service RPC.
Cela provoque des problèmes de concurrence avec des symptômes ressemblant à ceux de l'application qui se bloque.

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 méthode removefromparent () du widget

GWT est un chef-d’œuvre technologique. Il unit la programmation client et serveur, ce qui en fait une application cohérente - la façon dont le logiciel a été écrit avant & Quot; la superposition & ";, et la manière dont elle devrait être écrite. Il élimine les différents ensembles de compétences, les problèmes de communication entre les membres de l'équipe et généralement toute la phase de conception Web: artistique et programmation. Et c’est ce qui se rapproche le plus du mobile, par exemple Développement Android. En fait, GWT a été conçu pour générer différentes interfaces utilisateur natives, pas seulement HTML. Bien qu’il faille une grande discipline pour assurer un tel découplage - pour que votre couche interne reste agnostique.

La première erreur que vous devriez éviter, et qui m'a pris quatre ans, consiste à utiliser des extensions tierces telles que EXT-GWT, également appelé GXT et SmartGWT. Il est très tentant de commencer à utiliser leurs jolis widgets desktopish 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 marre. En bref, il bloque l'ensemble de fonctionnalités GWT de base à un niveau certain (plutôt obsolète), puis se construit au-dessus de celui-ci. N'oubliez pas non plus que l'apparence de bureau ciselée semble aujourd'hui idiote, sans parler de la lenteur des performances, des tonnes de bugs et des fonctionnalités de compatibilité, en particulier sur les appareils mobiles. Vous voulez rester le plus près possible des commandes du navigateur natif, c’est-à-dire des menus déroulants rendus en tant que natif &; Sélectionnez & Gt; des éléments, pas des contrôles personnalisés.

Grâce aux tendances mobiles, l’ensemble de l’UX est en train de devenir plus simple et plus plat. Vous n'avez donc pas besoin de faire grand chose pour donner du style à une application nette. Mais si vous voulez & Quot; 3D & Quot; Regardez, il y a aussi des gradients. CSS3 a tout simplifié, et GWT l’enveloppe d’une manière élégante, orientée objet, contrairement au CSS brut. Donc, ne vous découragez pas en regardant les contrôles barebones plutôt laids dans le Showcase GWT. L’équipe de GWT n’a intentionnellement proposé aucun style, car c’est là le travail du développeur.

Le reste est à peu près la programmation de navigateur conventionnelle en Java fortement typé avec de belles API concises. Mais bien sûr, ne jamais oublier que votre code s’exécute dans le navigateur, de sorte que tous les appels sont asynchrones, par exemple. vous ne pouvez pas appeler les méthodes GWT-RPC en boucle (pour remplir une liste), mais vous devez les chaîner de manière récursive si vous en venez à cette situation.

Il y a des & "anti-patterns &" auto-proclamés comme ne pas utiliser GWT-RPC. Cela a été bon pour moi jusqu'à présent: depuis 10 ans. La simplicité est la clé. Je ne penserais même pas une seconde à sacrifier une performance marginale pour l'élégance et la maintenabilité du code. En outre, vos goulots d'étranglement ne se trouvent pas dans la base de données. Bien sûr, gardez à l'esprit la quantité de données que vous envoyez au client.

Et si vous ne parvenez pas à trouver ou à styliser le gadget existant - lisez un riche jeu d’éléments HTML5, vous pouvez toujours en emballer un tiers. Je l'ai fait avec un populaire jQuery FullCalendar. Pas sorcier du tout. Tout le reste, comme Google Maps et Google Charts, possède des wrappers GWT semi-officiels.

GWT est parfait. La seule raison pour laquelle il n'a pas assez d'amour est que les premiers utilisateurs d'Internet qui continuent d'influencer l'industrie ne sont pas venus de l'informatique et des langages orientés objet pour les apprécier. Ils ont un arrière-plan artistique (Photoshop / WordPress) ou réseau (Perl / Python).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top