vendredi 7 décembre 2012

GWT en milieu industriel


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

PS : A l’heure où j’écris ces pages, les résultats du sondage organisé par le comité de pilotage de GWT viennent d’être publiés. Ces résultats sont très riches d’information et entre autres donnent à penser que le futur de GWT est toujours très prometteur. Suivez ce lien.



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)