Google Web Toolkit pour Ajax

publicité
Focus
Le terme Ajax fait fureur dans le monde du logiciel. L’acronyme signifiait originellement Asynchronous JavaScript and
XML (XML et JavaScript asynchrones), mais il fait aujourd’hui référence à un large champ de techniques qui peuvent,
par exemple, ne pas inclure XML.
Au-delà du jargon technique, Ajax désigne l’architecture d’un logiciel conçu pour être utilisé avec n’importe quel navigateur web, mais qui inclut une interface offrant la même impression de réactivité qu’une application de bureau. Cela
signifie, par exemple, qu’un composant de grille, tel qu’un tableur qui apparaît sur une page web, répond instantanément à la manipulation des données par l’utilisateur, sans les délais temporels ou les perturbations visuelles causés
par la mise à jour ou la reconstruction de la page avec de nouvelles requêtes HTTP. Les services Gmail et Agenda de
Google, ainsi que le portail web français netvibes.com sont trois exemples d’applications Ajax typiques.
Ajax fonctionne en communiquant avec le logiciel médiateur et/ou la base de données tierce en utilisant un objet
JavaScript du côté du client. Celui-ci est appelé XMLHttpRequest (XHR). La page web est construite et programmée avec
des technologies standard et courantes, connues sous le nom de HTML/XHTML, feuilles de style en cascade (cascading
style sheets, ou CSS), JavaScript, et le modèle objet de document (Document Object Model) qui se cache derrière la
structure de chaque page web. Les données que la page échange avec son serveur tiers, telles qu’une base de données
de produits, peuvent être en pur texte, en XML, ou dans un format appelé notation objet issue de JavaScript (JavaScript
Object Notation, ou JSON).
•
Par exemple, l’utilisateur peut sélectionner un nom de produit dans une liste sur une page web. En réponse à cet événement, l’application utilise XHR afin d’envoyer une requête pour les données concernant ce produit. La page ne
change jamais, car l’application envoie la requête de manière asynchrone en arrière-plan. Le composant serveur, comme
un fichier PHP ou un servlet, reçoit la requête HTTP et retourne une réponse contenant les informations à propos du
produit, par exemple au format XML ou JSON. L’application traite cette dernière en utilisant la bibliothèque DOM de
JavaScript, ou en convertissant la valeur JSON en un objet côté client (voir plus loin dans ce Focus). L’utilisateur voit
la nouvelle information sur la page web, idéalement dans un délai très court.
2
Focus
L’approche d’Ajax de Google Web Toolkit
Un développeur créera habituellement son application Ajax en écrivant des pages XHTML et du code JavaScript avec
son environnement de développement intégré favori (integrated development environment, IDE), ou même un éditeur
de texte. Il existe de nombreuses bibliothèques et cadres de développement différents, avec lesquels les programmeurs
peuvent utiliser des classes JavaScript préfabriquées pour implanter des comportements dynamiques qui leur prendraient autrement beaucoup de temps, comme le glisser-déposer ou des structures visuelles arborescentes sophistiquées.
Ces bibliothèques incluent la boîte à outils Dojo, Prototype, Yahoo! User Interface Library, et script.aculo.us. Elles sont
conçues pour les développeurs plutôt bien avancés dans leur connaissance de JavaScript.
Ces méthodes simples changent à mesure que des outils puissants prolifèrent pour les développeurs Ajax. GWT adopte
une approche d’Ajax différente de la plupart des boîtes à outils.
En utilisant le cadre de développement GWT, vous pouvez concevoir et programmer votre interface en vous servant
uniquement du langage Java. Vous pouvez utiliser les outils en ligne de commande de GWT pour vérifier la syntaxe
des classes Java, puis générer automatiquement le JavaScript pour le côté client de l’application. La conception de
l’interface utilisateur est très similaire à celle de l’interface de programmation Swing de Java.
Vous pouvez donc voir GWT à la fois comme un outil de génération de JavaScript pour les programmeurs Java, et
comme un cadre de développement pour créer des éléments d’interface utilisateur redistribuables ou extensibles.Vous
n’avez pas besoin de connaître une once de JavaScript, bien que vous puissiez inclure du JavaScript brut dans votre code
en utilisant les constructions de programmation spéciales que fournit GWT.
•
Les bénéfices de GWT sont les suivants :
• Vous pouvez utiliser vos outils favoris et les connaissances que vous possédez déjà pour créer des applications Ajax
sophistiquées, souvent sans vous plonger dans JavaScript.
• Vous pouvez concevoir et développer votre application de manière purement orientée objet, puisque vous utilisez
Java. JavaScript ne possède pas nativement toutes les fonctionnalités OO incluses dans Java.
• Utiliser GWT retire de nombreux problèmes induits par l’adaptation du code Ajax à tous les différents navigateurs.
Ces problèmes peuvent représenter une véritable épine dans le pied des développeurs, car deux navigateurs peuvent traiter la même portion de code de manière complètement différente. Vous n’avez généralement pas besoin
3
Focus
de penser à ces incompatibilités potentielles lorsque vous concevez votre application, excepté pour la tester dans
les divers navigateurs par la suite.
• Le JavaScript que le compilateur GWT génère est rendu vraiment obscur ou difficile à lire, ce qui fournit à votre
application un niveau sommaire de sécurité ou la protection de matériel propriétaire. Vous pouvez
optionnellement « débrancher » cette fonctionnalité d’obscurcissement, comme le décrit plus loin ce Focus.
• Google et des tierces parties continuent à ajouter des bibliothèques à GWT, ou à en rendre disponibles de nouvelles
qui sont interopérables avec GWT. Ces activités continuent à étendre les fonctionnalités et la portée de GWT. Un
exemple est une bibliothèque Open Source nommée GWT Widget Library. Ce fichier JAR inclut des classes qui
enveloppent les objets Scriptaculous Effects, vous permettant d’ajouter ces intéressants effets visuels dynamiques à
vos applications GWT. Vous pouvez en savoir plus à propos de cette bibliothèque à l’adresse http://gwt-widget
.sourceforge.net.
D’accord, nous avons assez discuté de l’aspect haut niveau de GWT. Écrivons un programme et regardons un peu de
code !
Bien débuter
D’abord, quelques prérequis. Vous avez besoin d’installer le kit de développement Java (Java Development Kit, ou JDK)
en version 1.4 ou plus récente. Au moment de l’écriture de ce Focus, nous utilisons la distribution de GWT gwt-mac1.2.22. Vous ne pouvez pas utiliser les fonctionnalités de Java 5 telles que les génériques ou l’autoboxing avec votre code
client, mais vous pouvez bien sûr utiliser le compilateur JDK de Java 5 quand vous écrivez ces classes.
GWT 1.3 Release Candidate
•
Les développeurs de GWT ont livré GWT Release Candidate (RC) 1.3 au moment où nous avons publié la version originelle
en anglais de ce Focus. Cette mouture est cependant associée à l’annonce du passage de GWT en Open Source, et n’a fourni
aucune nouvelle fonctionnalité. L’application de démonstration a été compilée et testée avec gwt-mac-1.3.1 RC et la version
officielle gwt-mac-1.2.22.
4
Focus
Vous devez télécharger et décompresser le cadre de développement GWT. L’adresse de téléchargement est http://code
.google.com/webtoolkit. Vous pouvez télécharger le cadre de développement pour Windows, Linux, ou Mac OS X.
L’archive décompressée inclut :
• La documentation, incluant un dossier au format Javadoc pour les classes de l’API de GWT ;
• Le fichier d’archive Java (JAR) gwt-user.jar, contenant les classes de l’interface utilisateur et d’autres morceaux de
l’API GWT (tels que les modules pour manipuler les formats JSON et XML, et pour faire des requêtes HTTP à
partir de votre code client) ;
• Le fichier JAR (par exemple, gwt-dev-mac.jar) contenant les outils de développement propriétaires de GWT, tels que
la classe Java qui « compile » votre code et génère le JavaScript ;
• Le fichier JAR gwt-servlet.jar, que vous pouvez déployer vers Tomcat ou un autre conteneur de servlet, et qui inclut
l’API pour les éléments de l’interface utilisateur et d’autres objets. Il s’agit essentiellement de gwt-user.jar sans les
classes de l’API Servlet du paquet javax. La spécification Java Servlet, un standard accepté pour les conteneurs de
servlet, n’autorise pas les paquets tels que javax.servlet à être chargés à partir de JAR, en particulier les applications
web. Par conséquent, gwt-servlet.jar peut être placé dans WEB-INF/lib dans vos applications web Java, si votre code
côté serveur requiert que les classes GWT soient présentes dans le classpath de l’application ;
• Quelques outils en ligne de commande (voir plus bas).
Code côté client dans les applications déployées
Maintenant, nous sommes presque prêts à commencer à programmer.
•
Vous n’avez pas besoin d’inclure le fichier gwt-servlet.jar dans le chemin de classe (classpath) de votre application web Java,
à moins que vous ayez des classes côté serveur qui utilisent l’API GWT, comme les classes et interfaces relatives à l’appel
de procédure à distance (Remote Procedure Call, RPC). C’est parce que l’API Java relative à l’interface utilisateur de GWT
est seulement utilisée en développement, avant que les outils ou compilateurs GWT génèrent le JavaScript. Vous déployez
ensuite juste le JavaScript généré vers votre application web. Le JavaScript est en fait exécuté dans le navigateur et n’a plus
aucune relation avec l’API Java de GWT (et le fichier JAR associé). À ce moment, ce n’est plus que du JavaScript !
5
Téléchargement