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).