Ajax Sommaire FI 4/2005 Dépoussiérez vos applications Web ! [email protected], [email protected], [email protected], [email protected] & [email protected], Ecole d’ingénieurs et d’architectes de Fribourg Introduction Qu’est-ce que Ajax ? Pourquoi Ajax ? L’apport d’Ajax dans le Web 2.0 Buts d’Ajax Trois principes d’Ajax Les éléments clés d’Ajax Javascript Cascading Style Sheets (CSS) Document Object Model (DOM) L’objet XMLHttpRequest Clients riches Ajax dans le monde réel Résumé Étude de la mise en œuvre Communication asynchrone Mise en place côté serveur Mise en place côté client Apports d’Ajax Les trois principes définissant le terme Ajax Coûts réduits Fonctionnalités d’applications de bureau Résumé Désavantages d’Ajax Ergonomie Adaptabilité Ajax en pratique Conception d’une application Ajax Quelques toolkits/frameworks courants Dojo Rails DWR Réalisation de fonctionnalités de base Conclusion Bibliographie Ndr: Le Domaine IT organise un cours AJAX au mois de mai, voir en page 17. 1 Ajax – dépoussiérez vos applications Web ! Dominik Chanton, Jean Revertera, Cédric Vonlanthen, Jacques Bapst & Omar Abou Khaled 2 DIT-info 3 Les trombines de people Ion Cionca 4 epfl @ Shibboleth @ epfl Pierre Mellier 5 Du nouveau dans les News Franck Perrot 13 SPAM, la lutte continue Jacqueline Dousson 14 Word, je thème... un peu... Jacqueline Frey 15 Programme des cours 19 ForumIT Jacqueline Dousson 20 Langage Laurent Kling, Marc Dumont & Esteban Rosales Prochaines parutions suite en page 6 délai rédaction 5 6 sp 7 8 9 10 04.05.06 08.06.06 30.06.06 07.09.06 05.10.06 02.11.06 30.11.06 parution 23.05.06 27.06.06 29.08.06 26.09.06 24.10.06 21.11.06 19.12.06 FI 4 – 25 avril 2006 – page Ajax: dépoussiérez vos applications Web ! suite de la première page Introduction Qu’est-ce que Ajax ? Idéalement, l’interface d’une application doit permettre à l’utilisateur d’arriver à faire ce qu’il veut de manière intuitive, en lui offrant le maximum de temps pour réfléchir à son problème plutôt qu’à l’outil qu’il utilise. En pratique, nous sommes habitués à utiliser des interfaces peu optimales et c’est seulement lorsque quelqu’un nous montre une meilleure façon de faire que nous réalisons à quel point notre ancienne méthode était frustrante… Le Web est en train de subir une telle évolution. En effet, les technologies de base du Web pour l’affichage de contenu ont déjà été poussées au-delà des limites du raisonnable. Ajax, pour Asynchronous Javascript And XML, est un nom apparu en février 2005 dans un article publié par Jesse James Garrett1 sur le site AdaptivePath. Ajax n’est pas une nouvelle technologie, c’est une appellation qui désigne une architecture c’est-à-dire une façon de concevoir et de développer un service en ligne. Les ingrédients de base en sont les XHTML, CSS (feuilles de style), Javascript, DOM, XML, XSL et XMLHttpRequest. C’est en fait Microsoft qui le premier a lancé le concept, car, à la base, l’objet XMLHttpRequest était un ActiveX d’Internet Explorer 5 (en 1999 déjà). Cet ActiveX a ensuite été intégré, sous une autre forme, à tous les navigateurs modernes sous l’impulsion de Mozilla. Le premier à avoir massivement employé, et donc popularisé Ajax, est Google avec ses services Google Suggest (l’outil de suggestion des requêtes), Gmail2 (le webmail de Google3) ou encore Google Maps4 (l’outil de consultation de cartes), même si les technologies sur lesquelles Ajax repose existaient depuis plus de 5 ans et qu’une multitude de sites faisaient déjà de l’Ajax sans le savoir. Les services Web demandés deviennent de plus en plus complexes et les applications Web classiques commencent à ne plus pouvoir répondre aux exigences. Ajax, en alliant diverses technologies qui ont fait leurs preuves et qui sont présentes sur la majorité des ordinateurs, permet de combler cette lacune en facilitant la création de clients plus riches et plus conviviaux. Pourquoi Ajax ? Quels manques y a-t-il dans les applications Web actuelles ? Les utilisateurs souffrent de plus en plus de la lenteur des applications Web. Après chaque action il faut attendre que la page montrant le résultat s’affiche. Prenons l’exemple d’une liste d’éléments sur une page. Si l’on veut permettre à l’utilisateur de changer leur ordre, la façon classique de faire est de mettre des flèches cliquables permettant de faire monter ou descendre l’élément d’un niveau. Sur un client riche, l’interaction serait bien plus simple, en faisant, par exemple, un glisser-déposer, permettant de rapidement et simplement déplacer l’élément à sa nouvelle position. FI 4 – 25 avril 2006 – page Reorder T S T S T S T Drag and drop items to reorder! I'm number 2 I'm number 3 I'm number 1 Méthode classique Avec glisser-déposer utilisant Ajax fig. 1 Si l’on prend comme autre exemple le cas d’un traitement de texte, on peut, avec Ajax, offrir un correcteur orthographique durant la frappe ou encore le tri instantané d’une colonne dans un tableau. Petit historique du Web Le Web a beaucoup évolué depuis ses débuts, nous sommes passés des pages statiques - et difficilement éditables - aux applications dynamiques puis aux portails collaboratifs en quelques années seulement. Voici une courte rétrospective des étapes majeures. Web 1.0 z z z z z Type de Web: statique. Période: 1994-1997. Technologies associées: HTML, GIF. Noms associés: Netscape Caractéristiques: les pages Web sont des documents statiques rarement mis à jour. Web 1.5 z Type de Web: dynamique. z Période: 1997-2003. z Technologies associées: DHTML, langage de script côté serveur tel que ASP/PHP/Perl, CSS. z Noms associés: Yahoo !, Amazon, eBay z Caractéristiques: les pages Web sont construites à la volée à partir d’une ou plusieurs bases de données. Web 2.0 z Type de Web: collaboratif. z Période: 2003-… z Technologies associées: Ajax, DHTML, XHTML, XML, Soap, RSS. z Noms associés: Google, blogs, wiki (tel que Wikipedia), album photos (tel que Flickr), réseaux sociaux (tel que Linked In5) z Caractéristiques: l’utilisateur devient contributeur. Il publie des informations et manipule les données. P a r t c i p a t i o n Web 1.x Web 0.x Web 2.x er sum nt nte Co cer du n Co nt nte Co o Pr Time Few to Many Many to Everybody fig. 2 'Everybody' to Everybody Ajax: dépoussiérez vos applications Web ! Remarque L’attribution de numéros de version au Web est controversée, car leWeb est en constante évolution et ne subit pas de brusques changements. Néanmoins, nous l’utiliserons, faute de mieux, pour désigner une période de son évolution et non pas un instant précis. L’apport d’Ajax dans le Web 2.0 Ajax permet d’améliorer nettement le confort utilisateur (l’utilisabilité) des applications Web en s’approchant du niveau clients riches que l’on trouve sur le poste de travail. En effet, cet ensemble de technologies améliore la réactivité des applications en fournissant une variété de composants permettant de saisir et de manipuler de l’information plus aisément et souvent de manière beaucoup plus intuitive. Buts d’Ajax L’objectif d’Ajax est de permettre d’avoir des applications utilisables à l’aide d’un navigateur Web et qui satisfont les buts de productivité, de mise en réseau et de maintenance centralisée sans un trop grand effort. Pour atteindre ce niveau, il faut commencer par penser différemment la façon de créer nos pages Web ainsi que nos applications. Trois principes d’Ajax La technologie Ajax repose sur les trois principes: 1. Le navigateur accueille l’application, pas le contenu. 2. Le serveur livre les données, pas le contenu. 3. L’utilisateur interagit continuellement avec l’application, les requêtes aux serveurs sont implicites plutôt qu’explicites. Ils sont expliqués plus en détail au paragaphe: Les principes définissant le terme Ajax, en page 9. Les éléments-clés d’Ajax Ajax est un ensemble de technologies qui se complètent, voici un bref résumé de ces technologies ainsi que leurs rôles. Javascript Javascript6 est un langage de script créé pour être utilisé à l’intérieur d’applications. Dans un navigateur Web, il permet l’interaction avec les fonctionnalités de celui-ci. Les applications Ajax sont écrites en Javascript. Cascading Style Sheets (CSS) Les CSS7 permettent de définir un aspect graphique réutilisable pour des éléments d’une page Web. Dans une application Ajax, l’interface utilisateur peut être modifiée dynamiquement grâce à ces feuilles de style. Document Object Model (DOM) Le DOM8 représente la structure de la page sous forme d’une collection d’objets pouvant être manipulés avec du Javascript. Utiliser des scripts sur le DOM nous permet de modifier l’interface utilisateur à la volée, en redessinant des parties de la page. L’objet XMLHttpRequest L’objet XMLHttpRequest9 permet au programmeur Web d’obtenir des données du serveur Web en tâche de fond. Le format des données est prédestiné à être du XML, mais cela fonctionne également avec n’importe quelles données textuelles. Clients riches Ajax dans le monde réel C’est Google qui a le plus popularisé ce nouveau profil d’application. C’était au début 2004, avant même que le terme Ajax n’existe, grâce à son webmail nommé Gmail. Google a en effet été le premier à proposer une interface graphique épurée et efficace, fournissant les mêmes fonctions que les outils de messagerie d’entreprises tel que Microsoft Outlook et Lotus Notes, sans avoir recours à des ActiveX ou du code Java. Cela a permis d’avoir un webmail puissant, multi-plateforme, accessible depuis n’importe où et sans avoir besoin de préconfigurer le poste client pour avoir un outil de qualité. Suite à ce succès, les sites d’envergure utilisant Ajax se sont multipliés. On peut citer Flickr10, appartenant à Yahoo!, qui est un système de partage de photographies; plusieurs nouveaux services de Google tels que Google Maps11, un outil de visionnage de cartes; Google Suggest12 qui est un système de complétion de recherche; ou encore Start.com13 et Microsoft Live 14 qui sont tous deux des portails d’actualités entièrement paramétrables par l’utilisateur. Résumé Ajax est approprié lorsqu’on n’a pas la maîtrise du poste client, lorsqu’il n’est pas possible d’imposer l’installation de plug-in (comme c’est le cas pour Flash), de machine virtuelle (Java Web Start et No Touch Deployment) ou encore d’ActiveX souvent bloqués par les pare-feux. Ajax est une solution non-intrusive, mais sensiblement moins puissante, et qui ne peut pas vraiment rivaliser dans tous les domaines avec des applications locales. Étude de la mise en oeuvre Le but de cette analyse est de déterminer quels moyens généraux sont nécessaires pour déployer une architecture Ajax aussi bien du côté du serveur que de la partie cliente. Communication asynchrone Principe Dans le modèle des pages Web classiques encore largement utilisé aujourd’hui, la communication entre le navigateur et le serveurWeb est dite synchrone. En effet, à partir d’un certain état d’une page, l’utilisateur ne peut effectuer qu’une seule requête au serveur qui va aboutir à un rechargement complet de celle-ci, dont le contenu restera statique avant d’être à nouveau mise à jour en intégralité (fig 3). FI 4 – 25 avril 2006 – page Ajax: dépoussiérez vos applications Web ! Traditional Web Architectures Web page User interaction Time Server Processing Processing = Server Request fig. 3 – Modèle de communication Web synchrone Mise en place côté serveur Le rechargement complet d’une page qui s’accompagne souvent d’une réinitialisation des barres de défilement (scrollbars) et d’une plus ou moins brève disparition du contenu, limite fortement l’impression d’interactivité pour l’utilisateur, et rend très difficile l’utilisation d’éléments standards des interfaces utilisateurs à contenu dynamique ou la manipulation directe (par exemple le drag & drop). La communication asynchrone permet de résoudre ce problème en permettant à l’utilisateur, depuis un certain état d’une page, de lancer en arrière-plan, un nombre arbitraire de requêtes pour mettre à jour uniquement des éléments internes de la page (fig 4). Les requêtes asynchrones étant traitées de manière classique, l’utilisation d’Ajax peut se faire de manière totalement indépendante du serveur. On aura néanmoins avantage à choisir une plate-forme de programmation (tel que Java, PHP, Ruby on Rails, etc.) correspondant aux besoins du projet. La plupart d’entre elles supportent déjà et de manière native un parseur XML permettant de manipuler plus facilement les données transmises. Mise en place côté client Tout comme avec la partie serveur, la mise en place d’Ajax côté client est relativement légère, elle se base principalement sur la présence de deux fonctionnalités: z La capacité d’envoyer des requêtes de type XMLHttpRequest pour la communication asynchrone. z La capacité de traiter (parser) les réponses XML du serveur. L’implémentation des objets XMLHttpRequest est native dans la plupart des navigateurs récents et ne nécessite donc pas de plugin supplémentaire, concrètement il s’agit de Mozilla depuis sa version 1.0, Opera depuis sa version 8.0 et MS Internet Explorer (MSIE) depuis sa version 7.0 (5.0 via plugin ActiveX). Implémentation avec Ajax L’implémentation d’un concept de communication asynchrone passe par une adaptation au niveau client (qui doit être capable de lancer des requêtes de manière asynchrone), et éventuellement au niveau du serveur. En effet, les données envoyées n’étant plus forcément des pages Web, mais des données utilisateur brutes (destinées par exemple à peupler un formulaire), on peut attendre de l’application cliente qu’elle soit capable de traiter un format de données plus propice. AJAX Based Web Architectures Web page User interaction Time Server Processing Processing = Server Request fig. 4 – Modèle de communication Web asynchrone FI 4 – 25 avril 2006 – page Ajax: dépoussiérez vos applications Web ! Le parser XML quant à lui est interne dans la majeure partie des navigateurs (Mozilla, Netscape,. . .) excepté avec MSIE qui utilise une librairie propre au système d’exploitation MS-Windows (MSXML.dll). Vérification et enregistrement instantanés de champs – Il est ainsi possible non seulement de vérifier chez le client si une donnée est valide, mais également sur le serveur. L’utilisateur d’applications de bureau y est habitué depuis longtemps. Apports d’Ajax Coûts réduits Les diverses technologies utilisées par Ajax ne sont pas nouvelles. En les utilisant de manière appropriée, on peut envisager le développement Web de clients riches. On retiendra deux mots clés: riche et client. Riche se réfère ici au modèle d’interaction avec le client, qui se doit donc de supporter un ensemble de méthodes d’entrées et de répondre dans un laps de temps raisonnable. Regardons ce qu’Ajax possède pour tendre vers une application riche de type bureautique, en profitant de la caractéristique client. Les principes définissant le terme Ajax Le modèle classique d’application Web (connu aussi sous le nom d’application paginée) est bien ancré dans notre façon de penser. Voyons quels sont les principes de bases de la nouvelle approche. Le navigateur héberge une application et non du contenu Lorsque l’utilisateur lance l’application, des données légèrement plus lourdes seront chargées chez le client. Cependant, elles y resteront durant toute la session et seules les interactions seront transmises. Ajax: Le juste milieu – Deux approches principales existaient avant Ajax: l’approche tout sur le même écran et celle par page. Dans la première approche, la page est mise à jour dès que l’utilisateur modifie un élément, tandis que dans la deuxième, la page n’est mise à jour qu’au terme d’un processus de plusieurs étapes. Ajax combine avantageusement ces deux approches, permettant des fonctionnalités plus sophistiquées en utilisant les standards Web qui peuvent être implémentés plus facilement. Par rapport aux approches classiques, une réelle et puissante alternative nous est donc proposée. Interface à écran unique – Cette approche facilite la cohésion de la navigation et l’utilisateur possède ainsi une vue d’ensemble de l’application, des étapes d’une procédure, etc. La flexibilité est aussi à l’ordre du jour, puisque l’utilisateur choisit l’ordre dans lequel il parcourt les étapes et peut également revenir en arrière. Partage d’éléments et d’objets – Ce cas s’applique pour les interfaces de type monopage. Il est ainsi possible de réutiliser les éléments à divers endroits de l’application. Le partage est facilité et l’utilisateur doit télécharger moins de données. Voici un argument non négligeable, voire décisif, dans certains cas. Une réduction des coûts intervient même dans des domaines insoupçonnés. Une entreprise a, par exemple, pu remplacer une application de bureau coûteuse par une solution Ajax proposant des fonctionnalités similaires avec une même ergonomie utilisateur (passage ici à EBA Grid Control15). Typiquement les coûts se situent au niveau des ressources humaines et des prix des licences pour le développement Web. Mais ceux-ci sont bien moindres quand on considère le montant des licences annuelles des applications de bureau, ainsi que la distribution des mises à jour et le support utilisateur. Les coûts de déploiement sont eux aussi fortement réduits. En effet grâce à l’architecture client-serveur d’une application Web, les changements dans l’application ne se font que sur le serveur et non plus sur tous les postes de travail. Mais il s’agit là d’une analyse bien succincte et non complète. Il faut également incorporer des éléments qui sont plus difficiles à quantifier. Pensons par exemple à l’impact sur la satisfaction de l’utilisateur. Une meilleure interface réduira les erreurs humaines, les coûts d’apprentissage et les frustrations. Fonctionnalités d’applications de bureau Dans le contexte Ajax, il est possible d’ajouter des fonctionnalités jusqu’ici propres aux applications de bureau. L’utilisateur pourra visualiser les données et interagir avec elles d’une manière jusqu’alors impossible sur le Web. Par rapport à une application de bureau, on peut retenir plusieurs avantages: Ajax permet de s’affranchir d’un système d’exploitation, d’une plate-forme donnée, le Web est la plateforme. On centralise les données afin de pouvoir y accéder depuis un ordinateur quelconque ayant un accès internet. On évite aussi de stocker des informations sensibles sur un ordinateur personnel. Résumé Même en gardant une certaine dose de scepticisme, il faut admettre qu’Ajax apporte des avantages clairement démontrables et quantifiables pour une application Web. Les économies de coûts résultent principalement d’économies de temps, mais également d’économies de bande passante. En outre, on peut s’attendre à une réduction des coûts de travail de 30-70% (source: 16) en utilisant cette technique. Le serveur envoie des données et non du contenu Puisque la majeure partie de l’application se trouve déjà du côté client, ne sont échangées avec le serveur que les données modifiées. FI 4 – 25 avril 2006 – page Ajax: dépoussiérez vos applications Web ! Désavantages d’Ajax Adaptabilité Ergonomie Utilisation de Javascript Retour en arrière Le côté le plus décrié d’Ajax est sans aucun doute son atteinte à certains mécanismes Web traditionnels qui ont été largement utilisés jusqu’alors sans problème, et ceci, dès les premiers balbutiements d’Internet. On pense bien sûr au bouton Retour en arrière devenant trop souvent inutilisable dans les premières applications utilisant Ajax. En effet, s’il n’est jamais vraiment nécessaire de se soucier de cette fonction tant que l’on travaille avec des pages au contenu statique (l’appui sur le bouton en question réaffichant la dernière page visitée), elle n’est pas du tout adaptée aux documents à contenu dynamique qu’induit le modèle de communication asynchrone: l’utilisateur veut avoir la certitude qu’il peut annuler une action et revenir dans un état antérieur de la page, comme c’est le cas dans les applications dites lourdes. Il est possible de combler cette lacune ergonomique en codant de manière conséquente nos applications Ajax (par exemple grâce à l’utilisation d’I-Frames). Dans cette optique certains frameworks intègrent des fonctions d’historique avancées permettant de rendre cohérente l’utilisation du bouton Retour en arrière. Gestion des marques-pages Un autre problème, lié au précédent, est la difficulté de sauvegarder un état précis d’une page Web qui se fait traditionnellement via l’utilisation de marques-pages (bookmarks). En effet, avec un modèle asynchrone dynamique, et contrairement aux pages Web classiques, une même URL peut aboutir à un document au contenu très différent. Encore une fois, il est à la charge du développeur de contourner le problème. Une des manières les plus simples consiste à jouer avec les fragments d’identifiant de l’URL (la partie après le #). Limitations de Javascript Lenteur – Javascript, sur lequel se base le moteur d’Ajax côté client, est un langage interprété dont le code sera exécuté dans l’environnement d’exécution du navigateur Web. Il est relativement lent (plus ou moins suivant le navigateur utilisé). L’utilisateur se trouvera donc devant des applications aux interfaces très semblables, mais proposant moins de réactivité que leurs homologues installées localement et qui se basent la plupart du temps sur des langages compilés, plus complexes et mieux adaptés. Il est peu probable que l’on voie, dans un avenir proche, des applications Web nécessitant une très forte réactivité telle que des jeux d’action, des applications temps réel, etc. Ressources – Les librairies Javascript sont principalement destinées à des fonctions de calcul et de manipulation de texte, elles ne disposent pas de toutes les fonctions plus avancées que l’on retrouve dans les langages standards, principalement dans la manipulation d’images et d’objets 3D. Ce manque est en partie comblé par l’utilisation de Canvas17, mais qui n’est pas pleinement supporté par l’ensemble des navigateurs actuels. FI 4 – 25 avril 2006 – page 10 Selon différentes sources, environ 4 à 13% des internautes utilisent un navigateur ne supportant pas Javascript (indispensable à l’utilisation d’Ajax) ou l’ayant désactivé (le plus souvent dans un souci de sécurité). Inutile donc de préciser qu’avec un visiteur sur dix il n’est absolument pas superflu (il est même indispensable), de toujours mettre à disposition la version d’un service accessible de manière classique. Cross-browsing Les implémentations de Javascript varient grandement entre les navigateurs, de ce fait, certains composants Ajax ou propres aux applications riches, sont susceptibles d’être dépendant d’une plate-forme cible. Cependant, la majorité des frameworks courants affichent une bonne compatibilité inter-navigateurs. Ajax en pratique Conception d’une application Ajax Dans le cadre de notre projet et pour mieux nous rendre compte des difficultés quant à l’utilisation d’Ajax nous avons programmé partiellement une application proof-of-concept dans laquelle nous avons cherché à profiter de la communication asynchrone: un GED ou Gestionnaire Électronique de Documents. Plus précisément, nous avons tenté l’implémentation de trois éléments que l’on retrouve fréquemment dans ceux-ci: une fonction d’envoi de fichiers (avec barre de progression), la possibilité de faire du glisser-déplacer dans une arborescence (drag’n’drop) et de pratiquer de l’autocomplétion sur une boîte de texte (pour les noms des fichiers situés sur les serveurs). Quelques toolkits/frameworks courants Bien qu’étant une technologie relativement récente il existe déjà un grand nombre de frameworks visant à simplifier le développement d’applications Ajax. La grande majorité d’entre eux ne se limitent pas à la communication asynchrone, mais mettent également à disposition des éléments d’applications riches, tels que des barres de chargement ou diverses animations graphiques rendues viables grâce à Ajax. Pour mener à bien notre projet, nous avons dû choisir une librairie de développement parmi les nombreux toolkits existants, en voici une liste non exhaustive: z Dojo Toolkit z DWR z script.aculo.us z Zimbra z Mochikit z Taconite z Atlas z xAjax z Plex Toolkit z WebORB z Open Rico z AjaxAnywhere z Xoad z Rialto Pour réaliser ce choix nous nous sommes basés sur différents critères, notamment les droits d’utilisation (licences), les fonctionnalités, la notoriété, etc. (pour plus de détails, voir le rapport complet de notre projet18). Nous avons finalement retenu les trois framework suivants: Dojo, Ruby-on-Rail (utilisant script.aculo.us en back-end), et DWR. Ajax: dépoussiérez vos applications Web ! Dojo Le toolkit Dojo est un ensemble de librairies pour développer une application Web moderne mettant l’accent sur l’interactivité avec l’utilisateur. Plusieurs versions de Dojo existent et diffèrent uniquement par les librairies intégrées dans le paquet de base. Le choix de ce dernier ne limite en aucun cas l’utilisation de Dojo, puisqu’il suffit d’ajouter après l’intégration du paquet toutes les librairies nécessaires. En fait, en minimisant la taille des librairies, le chargement dans le navigateur de l’utilisateur sera bien plus rapide. Rails Ruby on Rails (aussi abrégé RoR ou Rails) est un framework de développement d’applications Web utilisant le langage Ruby qui permet de développer très rapidement des applications évoluées, en écrivant un minimum de code. Il est basé sur le modèle MVC, et supporte la technologie Ajax, les SGBD SQLite, MySQL, PostgreSQL, DB2, Oracle et Microsoft SQL Server, et inclut son propre serveur Web, nommé WEBrick19, permettant de développer et tester son application directement sans avoir à installer de serveur Web. L’EDI (Environnement de Développement Intégré) nommé RadRails20 à été utilisé dans le cadre de ce projet. Celui-ci est basé sur Eclipse21 et permet de bénéficier entre autres de la coloration syntaxique et la complétion en cours de frappe. DWR DWR est un framework Java permettant d’aborder d’une manière innovante et ambitieuse le développement d’applications Ajax. Il permet de générer dynamiquement (à la demande du client) le code Javascript nécessaire pour accéder et/ou instancier un objet sur le serveur quel qu’il soit (les conversions nécessaires entre les types Java et Javascript étant effectuées de manière transparente) un peu à la méthode des RMI. Le principe est simple: à chaque appel d’une méthode présente sur le serveur il nécessaire de spécifier en argument la méthode Javascript qui sera utilisée pour le retour d’une éventuelle valeur. Dans un souci évident de sécurité (qui semble-t-il a toujours été présent depuis le début du développement de ce framework), il est nécessaire de spécifier dans un fichier de configuration (WEB-INF/dwr.xml), la liste des classes qui sont accessibles au navigateur. Contrairement à Dojo et Rails, DWR ne met pas à disposition du développeur des éléments d’applications riches pour la partie cliente mais se concentre uniquement sur l’aspect asynchrone de l’interaction. Réalisation de fonctionnalités de base Auto-complétion Avec Rails et Dojo, l’intégralité du développement de notre application de test a pu se faire du côté serveur, mais c’est avec Dojo qu’elle s’est révélée la plus aisée: une fois la liste des fichiers retournée (trivial en PHP), l’autocomplétion est activée simplement via l’ajout d’attributs à notre balise input, tel que Dojotype (spécifie quel widget est à utiliser) et dataUrl (spécifie une source de donnée ou un script dynamique). Pour Rails, les fonctions de filtrage ont été développées sur le serveur. Les seules facilités de développement ont été le traitement des événements et l’affichage de l’icône de chargement, l’implémentation s’est tout de même révélée assez simple. Du côté de DWR, la partie développement Ajax est aussi très succincte, se composant uniquement de quatre fonctions réparties entre le client et le serveur (deux pour le client pour l’envoi du contenu de l’entrée texte et la réception de la réponse et deux du côté serveur pour réceptionner et effectuer le filtrage sur la requête), mais il aura fallu un temps non négligeable pour la mise en forme, avec Javascript, des données pour l’utilisateur (près de 85% du temps d’implémentation). Fonction d’envoi de fichiers On constate qu’avec DWR, qui est de très bas niveau, il faut beaucoup plus de temps pour l’implémentation qu’avec les deux autres frameworks. Concernant Dojo, le seul avantage qu’il offre est d’éviter un rechargement de la page (grâce aux IFrame). De plus, avec Dojo, il serait compliqué d’ajouter une barre de progression (qui ne figure pas dans les widgets fournis) et il serait laborieux d’indiquer l’état d’avancement de l’envoi. Pour Rails, grâce à sa communauté très active actuellement, il existe déjà plusieurs exemples prêts à l’emploi, la seule contrainte est d’installer un serveur Apache avec une configuration spécifique. Du côté de la difficulté de réalisation, on constate qu’avec DWR il est nécessaire de se familiariser avec l’API (peu intuitive) de Jakarta pour l’envoi de fichiers. Il est également nécessaire de bien comprendre les mécanismes de Java côté serveur (session, JSP, objet, etc.) pour le traitement des requêtes et conserver les informations relatives à l’envoi simultané de plusieurs fichiers. Avec Rails, le code reste assez succinct et facilement compréhensible. Dans les trois frameworks, il serait assez aisé de faire un envoi simultané grâce aux IFrame (comme il a été fait pour DWR). Glisser-déplacer dans une arborescence Parmi les trois frameworks traités, DWR ne propose pas l’affichage sous forme d’arbre, ni le glisser-déplacer. Pour les deux autres, Dojo et Script.aculo.us, un composant arbre a été développé par un membre de la communauté, mais ce dernier ne propose pas du tout de glisser-déplacer (Script. aculo.us) ou pas de façon à pouvoir l’utiliser pour nos besoins (Dojo). Les recherches ont pris beaucoup plus de temps pour Dojo, car une fois le widget trouvé, nous avons essayé, sans succès, de le modifier pour l’adapter à nos besoins. Peu d’informations existent sur le sujet, mais beaucoup de personnes s’intéressent à une telle fonctionnalité. Il semble que pour ces deux frameworks nous pourrons disposer dans quelques semaines, voire mois, d’un composant qui réalisera, avec peu d’efforts d’adaptation, la fonctionnalité FI 4 – 25 avril 2006 – page 11 Ajax: dépoussiérez vos applications Web ! souhaitée. Mais pour l’heure, il faut encore compter avec passablement d’efforts. Conclusion Au terme de ce projet d’étude consacré à Ajax, nous possédons une très bonne vue d’ensemble sur le sujet grâce à la lecture d’une quantité volumineuse d’articles, de tutoriaux et de livres. Nous connaissons maintenant les points forts mais aussi les limitations de cette technologie. Ajax suscite un grand engouement, mais a aussi ses détracteurs, comme c’est souvent le cas lors de chamboulement de concept établi. Les attentes des utilisateurs évoluant avec le temps, la plate-forme Web est en train de rattraper son retard. On en veut pour preuve le fait que les entreprises suivent le pas, souvent enchantées de pouvoir faire évoluer leurs applications tout en utilisant des technologies standards et déjà connues par leurs développeurs et appréciées par les utilisateurs (employés, clients). Une année après la création de l’acronyme Ajax, l’engouement est tel qu’il existe plus de 90 frameworks en rapport avec Ajax et plus d’une quinzaine de livres22). Toutefois, nous pensons que d’ici un à deux ans, une convergence va s’effectuer du côté des développeurs vers deux à cinq outils. Parmi les outils ayant de bonnes chances de percer se trouve celui de Microsoft nommé Atlas, qui sera intégré dans le prochain Visual Studio .NET23, ainsi qu’Open Ajax24, un framework basé sur Eclipse et supporté par de nombreux grands acteurs de l’industrie tels que IBM, Oracle, Novell, RedHat, Google,Mozilla et beaucoup d’autres. Pour répondre à la question «est-ce qu’un jour Ajax va se substituer totalement aux applications de bureau?» nous répondons: non. Ajax va certainement changer le visage du Web tel que nous le connaissons aujourd’hui, et peut sans doute remplacer un client lourd simple, mais il reste peu probable que cette technologie puisse vraiment arriver, dans un proche avenir, au même niveau en terme de réactivité et qualité d’interaction que celles de leurs homologues de bureau. Il faudra pour cela que les technologies Web évoluent encore, ce qui ne manquera pas d’arriver. Bibliographie Dojo: http://dojotoolkit.org/ Rails: http://www.rubyonrails.org/ DWR: http://getahead.ltd.uk/dwr/ Ajax in Action par Dave Crane, Eric Pascarello, Darren James; Manning Publications; October 2005, ISBN: 1932394613 Le rapport de ce projet est librement téléchargeable à l’adresse suivante: http://cvsoftware.googlepages.com/rapportajax . Les figures démontrant les principes des méthodes synchrones et asynchrones sont tirées du site http://xml.com. Les logos des différents toolkits proviennent de leurs sites respectifs. FI 4 – 25 avril 2006 – page 12 Notes http://www.adaptivepath.com/publications/essays/archives/000385.php 2 http://www.gmail.com 3 http://www.google.com 4 http://maps.google.com 5 https://www.linkedin.com/ 6 http://www.ecma-international.org/publications/standards/Ecma-262.htm 7 http://www.w3.org/TR/REC-CSS2 8 http://www.w3.org/DOM 9 http://www.xulplanet.com/references/objref/XMLHttpRequest.html 10 http://www.flickr.com/ 11 http://maps.google.com/ 12 http://www.google.com/webhp?complete=1&hl=en 13 http://start.com 14 http://www.live.com 15 http://developer.ebusiness-apps.com/technologies/webdevelopment/codeandcomponents/ebagrid 16 http://www.developer.com/xml/article.php/10929_35542 71_2 17 http://www.whatwg.org/specs/web-apps/current-work/\ #the-2d 18 http://cvsoftware.googlepages.com/rapportajax 19 http://www.webrick.org/ 20 http://www.radrails.org/ 21 http://www.eclipse.org/ 22 http://Ajaxian.com/archives/happy-birthday-Ajax 23 http://asp.net/default.aspx?tabindex=9&tabid=47 24 http://www.eclipse.org/proposals/atf/ n 1