JUG Summer Camp – GWT, le web 2.0 à portée de main

Les conférences

GWT, le web 2.0 à portée de main – Nicolas de Loof (présentation)
par Audrey Neveu

GWT, qu’est ce que c’est ?

Commençons d’abord par un petit rappel sur ce qu’est le web 2.0 : des usages qui modifient l’interaction avec l’utilisateur au niveau du net. Pour obtenir une RIA (Rich Internet Application) de qualité, il vous faut des experts dans plusieurs domaines : CSS, HTML, DOM au minimum et surtout Javascript. Or pour ce dernier bien peu de développeurs peuvent se prétendre expert en la matière. Le web 2.0, c’est donc quelque chose de puissant mais de délicat : il faut être cross browser, faire attention à sa vitesse de chargement, être vigilant au XSS, penser aux fuites de mémoire, savoir débugger en javascript, etc …

Devant cette demande croissante pour des applications 2.0, de nombreux frameworks sont apparus, nous donnant comme le dit Nicolas “l’embarras du choix … et surtout l’embarras”. En effet, dans la vie de tous les jours, le développeur lambda est amené à faire du Javascript, de l’HTML, du Java, du CSS et du design sans pour autant être expert dans tous ces domaines. De plus l’émergence du web mobile vient encore compliquer cette problématique du cross browser que tout développeur d’application web connait bien : être compatible I.E. 7, 8, 9, Firefox, Chrome, Safari mais aussi I.E. 6 qui malgré tout représente encore une forte part de marché dans les entreprises.

De ce besoin de développer des applications plus riches naissent 3 rêves :

  • L’architecte rêve de ne pas devoir traiter les problématiques de bas niveau de javascript sur un navigateur : fuite mémoire, gestion événementielle, support cross browser, etc …
  • Le chef de projet de son côté rêve de pouvoir réutiliser les compétences existantes, c’est-à-dire java.
  • Le développeur quand à lui, rêve de pouvoir conserver son IDE préféré qui lui propose un outillage de test complet, l’auto complétion, l’aide au refactoring et milles autres petites pratiques de développement aussi utiles qu’indispensables une fois que l’on y a gouté.

Et c’est ici qu’apparaît la solution miracle face à ces trois problèmes totalement divergents et pourtant liés : GWT (Google Web Toolkit). Le framework de Google orienté composant a en effet pour but de vous permettre de développer vos applications web 2.0 en java grâce à l’utilisation du JRE standard couplé à une API spécifique. A sa charge de compiler votre code en Javascript, inutile pour vous de devenir un pro de ce langage pour réaliser une RIA digne de ce nom.

Autre notion essentielle de GWT, sa devise “Only pay for what you see”. En d’autres termes, GWT va produire une application par navigateur cible et ainsi éliminer le code mort, les bibliothèques inutiles et autres if et else qui traînent invariablement dans une application web cross browser. D’autre part, le code java n’est pas transmis initialement : il est d’abord repris, optimisé et compilé en javascript pour effectuer la manipulation du DOM en fonction de ce qui sera le moins coûteux en performance selon le navigateur.

Pour résumer, GWT est un framework :

  • simple et peu coûteux en temps d’apprentissage,
  • avec un coût incomparable par rapport au MVC,
  • extensible grâce à des librairies telles que GWT-Fx, Ext-GWT et des wrappers comme Smart-GWT,
  • multi-navigateur y compris mobiles et navigateurs à venir

GWT supporte nativement le back des navigateurs et l’internationalisation (i18n) et est également HTML 5 ready et nativement Ajax. Votre code quant à lui, écrit en java reste entièrement testable.

Très appréciable la fonction Out Of Process Hosted Mode (OOPHM) vous permet de tester le rendu de votre application, de le modifier, de recompiler à la volée et de le re-tester, le tout dans votre navigateur habituel. En effet avec GWT 2.x, plus besoin d’utiliser le navigateur système, le débugger java se branche au moteur javascript de votre navigateur, pour lequel vous aurez au préalable téléchargé le plugin.

Plusieurs fonctionnalités sont apparues avec GWT 2.0 :

  • le découpage du code js via runAsync qui permet de charger du code à la demande en fonction des droits de l’utilisateur ou du module dans le cas d’un module peu utilisé,
  • la possibilité d’utiliser des bundlers pour les images, le CSS, le JS Natif (navigateur cible). Tout le contenu du bundler est chargé au démarrage de l’appli, ce qui le rend disponible de suite lors de la navigation,
  • le binding entre code java et code html grâce à UiBinder,

Côté serveur, GWT utilise un mécanisme RPC spécifique basé sur Rest, JSON et XML; et est devenu complètement stateless : toutes les données sont chez le client, ce qui en fait un framework tout à fait indiqué pour le cloud computing.

Côté concurrence, GWT fait face à Flex, qui est déjà bien installé mais qui nécessite une phase d’apprentissage non négligeable ainsi qu’un environnement récent; et à SilverLight qui a l’avantage d’un très fort taux de pénétration grâce à windows update mais dont la plateforme est limitée.

Conclusion : vous n’avez pas d’experts javascript, html, css, java etc … faîtes du gwt !

Quoi de neuf avec GWT 2.1 ?

L’apparition du design pattern MVP (Model View Presenter) pour la présentation devient la référence. Il se traduit comme suit :

  • une partie visuelle totalement dénuée d’intelligence,
  • un Presenter qui récupère les événements,
  • un modèle de données caché : la vue n’en a pas connaissance.

Ce design pattern permet d’obtenir une application entièrement testable (la vue peut être mockée), modulaire et facilement repackageable.

En attendant une implémentation officielle (à venir ?), les implémentations open source sont nombreuses :

  • gwt-presenter
  • gwt-dispatch
  • gwt-platform
  • mvp4gwt

Attention néanmoins, l’apparition du MVP dans GWT 2.1 se traduit par des librairies “temporaires” dont la javadoc mentionne qu’elles sont encore en cours de développement et peuvent être supprimées. Les librairies suivantes en font partie et sont donc à utiliser à vos propres risques :-D :

  • gwt.text : parser/renderer pour le data binding “donnée -widget”
  • gwt.app : place/activity pour la gestion de la navigation et les contrôleurs
  • gwt.event : event bus qui permet de gérer les événements applicatifs et d’éviter le plat de spaghetti que peut rapidement créer une application ambitieuse composée de nombreux composants qui écoutent tous les événements qui passent;

Autres sujets à surveiller dans l’avenir de GWT :

  • le rapprochement avec Spring Source et notamment la collaboration avec Spring Roo,
  • le support de Maven, longtemps laissé de côté (publication des artefacts laissant à désirer, mauvais packaging, chemins en dur etc …), Maven fait enfin l’objet d’un réel effort de collaboration (option -maven -noAnt sur webAppCreator, évolution du plugin google eclipse …)

Tags : , , ,

Développeur Java, ce que j'aime le plus dans ce langage c'est l'incroyable énergie de la communauté qui gravite autour. Ayant découvert les JUGs en même temps que ma vocation de développeur, j'ai souhaité rendre à la communauté un peu de la richesse qu'elle m'avait apporté en y contribuant à mon tour. Après avoir rejoint Duchess France en 2010, j'ai choisi aujourd'hui de m'engager dans Programatoo et Devoxx4Kids, deux iniatives aux travers desquelles j'essaye de transmettre ma passion aux enfants, pour leur faire découvrir ce superbe métier qui est le nôtre.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Nom*

Email

Website

4 × 1 =

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

En continuant à utiliser le site, vous acceptez l’utilisation des cookies. Plus d’informations

Les paramètres des cookies sur ce site sont définis sur « accepter les cookies » pour vous offrir la meilleure expérience de navigation possible. Si vous continuez à utiliser ce site sans changer vos paramètres de cookies ou si vous cliquez sur "Accepter" ci-dessous, vous consentez à cela.

Fermer