Afin de répondre à certains clients dubitatifs, j’ai
récemment eu à développer un argumentaire rassurant quant à l’utilisation de
GWT pour des projets industriels. Mes clients avaient reçu peu auparavant une
formation GWT, et bien que réticents au départ, ils ont vites été convaincus de
la qualité de cet outil, et de la productivité qu’il procure.
Compatibilité
multi-navigateur
Mes clients soulevaient le problème de la sortie d’une
nouvelle version d’un navigateur. Serait-il nécessaire de recompiler leur
application ? Deux cas peuvent se présenter : en premier lieu, examinons
la pire des situations : les APIs JavaScript sont « cassées »
par la nouvelle mouture. Dans ce cas-là, il est évident qu’une recompilation de
l’application est nécessaire. Qui plus est, il faudra attendre qu’une version
du SDK de GWT prenne en compte les nouvelles APIs du navigateur.
Cependant, ce cas est extrêmement rare, personnellement je
ne l’ai jamais rencontré, les développeurs de navigateurs ayant en général en
priorité maximale de conserver une compatibilité descendante entre leurs
versions. A titre d’exemple, pendant le développement de la dernière
application que nous créons et qui utilise des fonctionnalités avancées de GXT,
le navigateur IE 10 est sorti, sans prise en charge spécifique de la part de
GWT. Notre application fonctionne parfaitement sur ce nouveau navigateur, sans
avoir à la recompiler spécifiquement pour cette plateforme d’exécution.
Pertinence de
l’utilisation de GWT sur des applications orientées formulaires
Mes clients avaient pour objectif de refactoriser des
applications essentiellement orientées formulaire. Ils avaient l’impression qu’utiliser
GWT dans ce cas serait à l’image d’utiliser un marteau pour écraser une mouche.
Voici ma réponse. GWT vous offre la possibilité de vous approprier à 100%
toutes les innovations techniques disponibles dans les navigateurs modernes,
ainsi il peut sembler superflu au premier abord d’utiliser cette technologie
pour créer de simples formulaires. Cependant, une analyse plus profonde
éclairera les doutes de celui qui se pose des questions : En effet, GWT
utilisant le langage Java, vous avez la possibilité de partager du code entre
l’application cliente et votre back-end Java. Ainsi tout en restant dans l’idée
d’un simple formulaire, le code de contrôle des champs peut être partagé entre
le serveur et le client. Dans le cas par exemple de contrôles croisés
spécifiques sur plusieurs champs, comparés à l’usage de JSF qui vous obligera à
coder vos contrôles côté serveur en Java et soit à les coder en JavaScript pour
le client, soit à utiliser des composants JSF spécifiques, GWT vous permettra de
n’écrire qu’un seul code, d’où un gain de productivité conséquent pour les
développeurs. Il s’agit ici d’un exemple, et même dans le contexte des
formulaires, nous pourrions en trouver moult autres.
Je rajoute en passant que la programmation des écrans peut
se faire en XML avec UiBinder, ce qui sera pour un développeur habitué à coder
pour JSF ou Struts un moyen de passer à une technologie beaucoup plus puissante
tout en conservant des paradigmes de programmation similaires.
D’autre part, la question se pose aussi de savoir si une
application ne se compose que de simples formulaires du fait du besoin client,
ou bien parce que la technologie utilisée pour développer cette application
limite les possibilités offertes aux utilisateurs.
Pérennité de la
technologie GWT
Troisième point, et pas des moindres, mes clients hésitent car
ils ont des doutes sur le futur de GWT. Il est en effet regrettable que bien
que la technologie soit issue et maintenue par une grosse entreprise comme
Google, la communication à ce sujet soit assez déplorable. Certaines rumeurs
ont persisté notamment argumentant que le langage Dart supplantera à terme GWT.
Il s’agit là d’une confusion immense, en effet mis à part la nature plus
« typée » du langage Dart et qui donc le rend perçu comme un
concurrent de Java, il n’y a aucune intersection entre Dart et GWT. GWT ne se
résume pas à un langage, c’est une technologie à part entière :
optimisation des ressources réseau, compilation ultra performante, prise en
charge multi-navigateurs,
internationalisation, tout ceci n’a pas trait au langage utilisé mais
est un ensemble d’outils permettant au développeur d’avoir une productivité à
développer des applications Web semblable au développement d’application
lourdes.
D’autres rumeurs courent et prétendent que GWT sera
supplanté par des frameworks JavaScript comme angular.js, backbone.js et j’en
passe. Je m’en remet dans ce cas au jugement du chef de projet afin de
déterminer s’il est préférable pour une équipe de développement d’avoir à
connaître et être expert en JavaScript, à maintenir une base de code JavaScript
en plus du code Java côté serveur. Angular.js fait le buzz depuis quelques
semaines, GWT est une technologie de qualité, mature, utilisée sur des produits
industriels depuis presque 10 ans, maintenue à la fois par un comité de pilotage
orchestré par Google et par la communauté Open Source. La récente
réorganisation du comité de pilotage ne s’est pas faite par Google dans l’objectif
d’abandonner la technologie, mais au contraire dans l’idée d’inviter les
contributeurs « third-party » majeurs à venir participer à
l’amélioration du framework et à garantir sa pérennité. Ce comité se compose
entre autres de membres issus de Google, de RedHat, de Sencha (maintenant GXT),
de Vaadin, ArcBees, ainsi que de JetBrains. Sans parler de l’immense écosystème
Open Source gravitant autour de la technologie.
Je reconnais encore une fois qu’il est déplorable que Google
laisse aller ces rumeurs, sans offrir de communication officielle. A la fin de
l’article figurent quelques liens internet vers des documents issus des
personnes les plus impliquées dans cette technologie, essayant de clarifier
cette confusion.
J’espère que vous serez conquis par cette technologie très
innovante, au futur plus que certain, et vous permettant d’exploiter les
technologies Web dans toutes les possibilités qu’elles vous offrent. De
nombreux clients grands comptes ont déjà fait le pas, et n’ont jamais été déçus !
Arnaud Tournier
Liens internet :
Liste des
projets chez Google utilisant GWT : AdWords, AdSense, Flights, Hotel Finder, Offers,
Wallet, The New Blogger, Chrome Webstore, Product Search, Public Data, New
Google Groups, Orkut, Google Takeout, Google Pagespeed, Google WebFonts, Google
Tables, Google Health (discontinued), Google Wave (discontinued), PlayN (basis
of Angry Birds)