Clever Age - Conseil en architecture technique


avr 08 8

google web toolkit (gwt)

Logo Google Code

Fiche d’identité
Nom du produit Google Web Toolkit (GWT)
Langage Java
Site de référence http://code.google.com/webtoolkit/
Auteur Google via Google Code
Licence Apache 2.0 depuis la version 1.3
Première version 1.0.20 en mai 2006
Version étudiée 1.4.61
Compatibilité avec les navigateurs Firefox 1+, Internet Explorer 6+, Opera 9.x, Safari 2.0.x

Synthèse

Google Web Toolkit (GWT) est un framework de développement d’applications Ajax (donc JavaScript) en ... Java. Il aide le développeur à monter rapidement et plus facilement une application riche sans avoir à se soucier ni de la compatibilité entre les navigateurs ni des contraintes imputées aux CSS et au HTML.

GWT est régi sous licence libre (Apache 2.0) depuis sa version 1.2 ce qui a favorisé son développement ainsi que celle de composants additionnels comme des widgets ou de nouvelles API.

GWT est également employé par Google pour la création de Google Gears et de Google Reader, entre autre.

Analyse

Applications Web

Autant mettre les points sur les « i » immédiatement : GWT n’est pas comme les librairies classiques de type jQuery, YUI ou encore Ext JS. Il ne s’intègre pas dans des pages HTML existantes, car ce n’est pas du JavaScript.

GWT permet de bâtir des applications JavaScript de toutes pièces, en programmant en Java. GWT s’utilise pour monter des projets de type Gmail, Google Reader ou encore iGoogle : des applications Web au sens strict du terme.

En contrepartie, cette approche du développement d’applications dynamiques se fait au détriment de l’accessibilité, JavaScript étant la clé de voute de l’applicatif généré par GWT.

Du Java au JavaScript

Cette traduction du Java au JavaScript peut sembler un peu magique, dans la mesure où ces deux langages n’ont de point commun qu’une partie du nom :

  • Java est un langage compilé initié par Sun
  • JavaScript est un langage de Script initié par Netscape, reprenant pompeusement le nom Java pour surfer sur son succès d’époque

Et pourtant, GWT ne se contente pas d’une simple traduction, puisqu’il est un compilateur. De ce fait, il traite, optimise et découpe chaque portion de code afin qu’elle soit la plus optimisée possible lors d’un rendu Web.

GWT libère le développeur Web « classique » de son cycle de développement et de tests en offrant un déboguage en temps réel (le « mode Hosted »), avant de produire la moindre ligne de code interprétable par un navigateur Web (le « mode Web »)

Une véritable boîte à outils

Programmer en Java pour éviter le JavaScript c’est une chose, mais programmer efficacement en Java pour en faire du JavaScript en est une autre.

GWT fournit à ce titre de nombreux outils facilitant la création d’interfaces riches et modulaires :

  • les widgets : pour la plupart des éléments de formulaires mais aussi des menus s’affichant au survol de la souris, des boutons enrichis en image etc. ;
  • les panneaux : pour découper aisément la page en zones distinctes, étirables ou non, de manière proportionnelle ou au pixel près ;
  • les listes : les classiques listes déroulantes mono ou multi-critères, des arborescences ou encore des listes d’autosuggestion lors de saisie dans des champs de texte ;
  • les textes : prise en charge de la sélection du texte, éditeur visuel enrichi ;
  • les fenêtres : fausses-fenêtres (popup) déplaçables ou pas et écartant les problèmes de rendus dus aux éléments HTML/FLash.

GWT fournit également les outils nécessaires à la création de ses propres widgets grâce aux objets composites. Le code étant fortement orienté objet, réutilisation du code et motifs de conception, les développeurs Java ne seront pas dépaysés lors de la création de leurs propres outils, réutilisables d’un projet sur l’autre.

Open Source et modulaire

Open Source depuis sa version 1.2, Google Web Toolkit tente le pari du multi-plateformes, puisqu’il fonctionne aussi bien sous Windows que sous MacOS X (avec quelques difficultés sur Léopard) et Linux. Le rendu graphique du serveur GWT est assuré par GTK et le rendu Web par Gecko, derrière Firefox, Flock et feu Netscape.

Cette bonne nouvelle est complétée par le fait que n’importe quel éditeur de code suffit ; éditeur ou IDE d’ailleurs. GWT facilite toutefois l’intégration dans Eclipse avec la création de projets prêts à importer. Il existe également un designer GWT totalement visuel sous forme de greffon Eclipse ... mais payant.

Nous en parlions un peu plus haut mais les fonctionnalités standard de GWT peuvent être étendues avec de nouveaux widgets et de nouvelles API. Celles-ci peuvent être déterminantes dans la conduite et la mise en place de certains projets avec, par exemple, l’ajout d’une couche sonore dans les applications, l’encapsulation de librairies JavaScript tierces (de type jQuery ou YUI) ou de services tiers (Google Maps etc.).

Toutes ces facilités aident à prendre en considération GWT comme choix de fondation pour le développement d’une application Web.

Compatibilité et optimisations

Un choix qui peut également se faire par rapport à la compatibilité des navigateurs, dans la mesure où GWT affranchit le développeur des limitations ou des différences d’interprétation des différents navigateurs Web du marché.

Google Web Toolkit fait en sorte que chaque navigateur ne reçoive que du code qu’il arrivera à interpréter mais aussi que du code qu’il aura à interpréter. Un peu à la manière du prefetch, il n’offrira à télécharger au navigateur que les parties de JavaScript nécessaires au fonctionnement de le page, en fonction des interactions de l’utilisateur.

Outre cette couche de compatibilité, le framework offre des fonctionnalités poussées d’optimisation pour :

  • réduire au maximum les appels HTTP (en groupant de multiples images en une seule par exemple) ;
  • réduire au maximum les appels JavaScript (le moins de boucles possibles, le moins d’opérations lourdes de conséquences etc.) ;
  • fluidifier au maximum la navigation de l’utilisateur.

Cette considération pour l’utilisateur et les performances est déterminante pour la conduite de projets volumineux, lourds et potentiellement consommateurs en ressources. Ce sont autant de contraintes dont les développeurs n’ont plus ou peu à se soucier.

Perspectives

Malgré le manque de communication à son égard, Google Web Toolkit a pris totalement à contre-pied les librairies classiques de développement JavaScript en masquant tous les éléments susceptibles de poser problème à savoir :

  • le HTML
  • les CSS
  • le JavaScript

Sans remplacer l’expertise d’un développeur JavaScript, GWT facilite toutefois la création d’applications Ajax pures puisqu’il est souvent plus facile de recruter un développeur Java qu’un développeur JavaScript.

Il faut toutefois avoir pleinement conscience que si intervention il y a, ce sera sur la partie Java et certainement pas sur le code HTML, CSS et JavaScript généré par le compilateur.

GWT est donc adapté aux projets de moyenne et de grande ampleur, utilise un langage connu (et reconnu), et peut potentiellement raccourcir la durée d’un projet complexe. Autant d’arguments qui jouent en sa faveur et méritent de le considérer sérieusement.

Récapitulatif

Forces Faiblesses
  • Aucune contrainte de compatibilité entre les navigateurs
  • Il est plus facile de trouver un développeur Java que JavaScript/HTML/CSS
  • Rapidité à générer des interfaces riches sur des projets d’envergure
  • Un bon code n’implique pas nécessairement une bonne ergonomie
  • Inutilisable sur des projets pour lesquels Javascript n’est pas à la base de l’interface utilisateur
  • Contraintes d’accessibilités proches du néant
Opportunités Menaces
  • Enrichissement de widgets et d’API inédits
  • Utilisation nomade et hors-ligne avec Google Gears
  • Apports de la communauté grâce aux compétences Java disponibles
  • Communication fantomatique de Google
  • Aucune visibilité sur les futurs ajouts et la politique de conduite du projet