Asynchronous JavaScript And XML

Asynchronous JavaScript and XML

Page d'aide sur l'homonymie Pour les articles homonymes, voir Ajax.

AJAX est un acronyme signifiant Asynchronous JavaScript and XML (« XML et Javascript asynchrones ») et désignant une solution informatique libre pour le développement d'applications Web.

À l'image de DHTML ou de LAMP, AJAX n'est pas une technologie en elle-même, mais un terme qui évoque l'utilisation conjointe d'un ensemble de technologies libres couramment utilisées sur le Web:

  • HTML (ou XHTML) pour la structure sémantique des informations ;
  • CSS pour la présentation des informations ;
  • DOM et JavaScript pour afficher et interagir dynamiquement avec l'information présentée ;
  • l'objet XMLHttpRequest pour échanger et manipuler les données de manière asynchrone avec le serveur Web.
  • XML pour remplacer le format des données informatives (JSON) et visuelles (HTML).

En alternative au format XML, les applications AJAX peuvent utiliser les fichiers texte ou JSON.

Les applications AJAX peuvent être utilisées au sein des navigateurs Web qui supportent les technologies décrites précédemment. Parmi eux, on trouve Mozilla Firefox, Internet Explorer, Konqueror, Google Chrome, Safari et Opera.

Sommaire

Histoire

Le terme AJAX a été introduit par Jesse James Garrett (informaticien américain), le 18 février 2005, dans un article sur le site Web Adaptive Path[1]. Depuis, il a rapidement gagné en popularité.

Les éléments qui composent AJAX (Javascript, DOM, XML, ...) et leur utilisation pour générer des interactions asynchrones sont de loin antérieurs à l'apparition du terme.

En 2001, l'objet XMLHttp, apparu avec la bibliothèque MSXML, point de départ de cette technique, fut développé à l'origine par Microsoft pour Internet Explorer 5 en tant qu'objet ActiveX, puis intégré en tant qu'objet navigateur natif nommé XMLHttpRequest par Mozilla, ce qui permit aux autres navigateurs de l'intégrer car ActiveX n'est utilisé que par Internet Explorer.

Comparaison avec les applications Web traditionnelles

Les applications Web traditionnelles permettent aux utilisateurs d'effectuer des choix (suivre un lien, remplir et valider un formulaire). Une requête est alors envoyée au serveur HTTP, qui agit en fonction de l'action et des données reçues, et renvoie une nouvelle page (dans le jargon du Web, ces requêtes sont dites « synchrones »). Ce fonctionnement consomme inutilement une partie de la bande passante, une grande partie du code (X)HTML étant commune aux différentes pages de l'application. Et parce qu'une requête au serveur HTTP doit être réalisée à chaque interaction avec l'application, le temps de réponse de l'application dépend fortement du temps de réponse du serveur HTTP. Cela conduit à des interfaces utilisateur plus lentes que leurs équivalentes natives. Les navigateurs actuels mettent les éléments communs en cache, donc le chargement de pages nouvelles n'oblige pas le serveur à redonner les mêmes éléments à chaque fois.

Les applications utilisant les techniques AJAX, quant à elles, peuvent envoyer des requêtes au serveur HTTP pour récupérer uniquement les données nécessaires en utilisant la requête HTTP XMLHttpRequest ; ces requêtes sont dites « asynchrones ». Les feuilles de style (CSS) sont utilisées pour la présentation des informations au sein des pages Web. Le langage JavaScript côté client est utilisé pour interpréter la réponse du serveur HTTP et pour effectuer des traitements (affichages de menus déroulants, saisies...). Les applications sont alors plus réactives, la quantité de données échangées entre le navigateur et le serveur HTTP étant fortement réduite. Le temps de traitement de la requête côté serveur est également réduit, une partie du traitement étant réalisée sur l'ordinateur d'où provient la requête.

En contrepartie, le chargement de la première page peut être pénalisé si l'application utilise une bibliothèque AJAX volumineuse (certaines bibliothèques pèsent plus de 500 ko, mais cela reste rare).

Approches côté serveur

Un des points critiques dans la programmation avec AJAX est la nécessité d'une architecture client/serveur, mais des solutions en mode déconnecté (offline en anglais) commencent à voir le jour (fonctionnement du poste client sans nécessité d'être relié au réseau Internet ou à l'Intranet d'une entreprise). AJAX n'a pas besoin de code actif sur le serveur (seul le code JavaScript est actif sur le poste client), ce dernier étant un serveur Web se contentant d'envoyer les pages Web vers le poste client. Car les langages employés sont de type interprétés et sont exécutés directement au sein du navigateur du poste client. Il n'est donc pas nécessaire de déployer ou de mettre à jour une machine virtuelle (comme pour Java par exemple) sur le poste client. Ainsi AJAX est une solution portable, ses différents composants suivant les standards du W3C. Malgré tout, des technologies supplémentaires peuvent être employées côté serveur, notamment pour la gestion des données au format XML, ou comme par exemple des langages de script et des bases de données (PHP et MySQL par exemple).

Ces choix sortent du périmètre d'AJAX, mais peuvent apporter de nombreux services supplémentaires ou complémentaires :

  • Java fournit une technologie à maturité avec un support des processus légers (threads) et un important soutien de la communauté Open Source.
  • PHP possède aussi un fort soutien de la communauté Open Source, notamment la version 5 plus performante sur la gestion du XML en natif.
  • Perl propose notamment Catalyst.
  • Python est un langage de script complet et largement utilisé mais moins que Java ou PHP sur les serveurs (Google l'utilise largement).
  • ColdFusion avec les librairies CFjavax, Neuromancer, Sarissa, etc.
  • Uniface 9.3 implémente Ajax avec ses Pages dynamiques

La concurrence

La concurrence pour l'affichage de contenus dynamiques au sein d'une page Web est la suivante :

Avantages et inconvénients

L'avantage de cette méthode est d'abord la vitesse à laquelle une application AJAX répond aux actions de l'utilisateur, qui sont traitées (en partie au moins) localement par le navigateur. Respectant en grande partie les standards Web (W3C et IETF), AJAX possède également des qualités de portabilité. Très vite déployé, AJAX permet d'abaisser les coûts de développement de petites applications, ainsi que les coûts de renouvellement de parc informatique; car AJAX fonctionne avec des ressources matérielles relativement faibles : simples postes clients ne nécessitant pas beaucoup de mémoire (contrairement aux technologies JAVA), simple navigateur, simple serveur Web. Seule condition : choisir un navigateur respectant les standards et acceptant en outre l'emploi du langage JavaScript (et en particulier l'objet XMLHttpRequest), ou bien adapter le code de façon à ce que les pages Web soient lues par tout type de navigateur (ces navigateurs étant de plus en plus rares) ainsi que par les utilisateurs ne souhaitant pas activer les fonctionnalités JavaScript de leur navigateur compatible.

L'utilisateur d'applications AJAX doit en effet autoriser l'exécution de code Javascript par son navigateur, ce qui peut laisser craindre des problèmes de sécurité (cependant il existe des antivirus bloqueurs de scripts efficaces). N'utilisant pas le composant JavaScript standard XMLHTTP, les versions d'Internet Explorer 5 ou 6 pour Windows doivent autoriser les ActiveX, contrairement aux autres navigateurs (Firefox, Safari, Opera, etc.), cependant la version 7 d'IE est compatible. Il est donc conseillé de tester les applications AJAX sur chaque type de navigateur, en raison du non respect des normes Web par certains éditeurs de navigateurs.

Un autre inconvénient est la question du référencement puisque les robots d'indexation ne sont pas en mesure d'indexer les contenus engendrés dynamiquement.

En modifiant le contexte de navigation sans que l'utilisateur n'en soit nécessairement averti (en fonction de son mode d'accès au Web), AJAX pose de nombreuses questions d'accessibilité. C'est le cas notamment pour les utilisateurs de lecteurs d'écran ou de dispositifs d'agrandissement (loupes virtuelles).

Enfin, différents cas de failles de sécurité de type « injection de code » ont été signalés en 2005 et 2006 avec des solutions AJAX déployées de façon standard. À cet égard, il faut rappeler que dans leur majorité les applications informatiques déployées de façon standard sont vulnérables. Cette recommandation n'est pas propre à AJAX, elle est valable pour toute technologie et tout développement. Comme pour presque toute application informatique, une sécurisation du code, du serveur et des postes clients est donc nécessaire avec AJAX. Ceci se traduira d'abord par une sécurisation du serveur Web et des bibliothèques de code JavaScript, ainsi que, côté poste client par la mise à jour du navigateur et l'installation d'un antivirus bloqueur de scripts malveillants.

Comme pour tout développement Web, établir une connexion par le protocole sécurisé https est également une solution pour sécuriser les échanges entre les postes clients et le serveur distribuant les pages Web.

Environnements de développement AJAX

Pour faciliter l’utilisation de ces technologies, de nombreux frameworks ont été mis en place. Il s’agit en général d’un ensemble de bibliothèques javascript permettant de réaliser les traitements asynchrones et d’offrir une ergonomie avancée grâce à une palette d’objets graphiques aboutis.

Dans un souci d’industrialisation, nombre de ces frameworks ont été couplés à des frameworks de conception web.

On estime à plus de 500 le nombre de frameworks Javascript actuels. Les principaux sont dans l'article Frameworks Ajax.

Côté serveur, le principe même d'Ajax implique que nous avons le choix de la technologie. Cependant, certaines technologies orientées événementiel ont un fort potentiel de productivité.

  • Ruby, et spécialement Ruby on Rails
  • .NET 2.0 de Microsoft développe un framework pour ASP.Net (Microsoft ASP.Net Ajax).
  • Morfik WebOS AppsBuilder de MORFIK est un EDI complet pour des applications AJAX avec un 'designer' visuel et le choix du langage de programmation (Pascal, Basic, Java, C#).
  • Une nouvelle approche permet de se défaire du développement Javascript, souvent jugé coûteux et complexe. Cette approche vise à industrialiser le développement et est symbolisée par des frameworks tels que GWT ou Echo2.

En parallèle est développée une ASP.NET Ajax Control Toolkit, qui offre de nombreux contrôles « prêts à l’emploi » pour les développeurs utilisant Visual Studio 2005. On y trouve actuellement une trentaine de contrôles mais Microsoft en prévoit 50 à 100, tous fournis avec leur source. Il existe aussi un tutoriel sur le site pour créer ses propres contrôles Toolkit qui utilisent la technologie Ajax .NET.

De plus, on a vu récemment arriver le design pattern « Comet », qui propose des solutions pour effectuer du push de données grâce à Ajax.

Open AJAX

IBM a créé Open AJAX Initiative, un groupe de promotion de cette technologie avec des partenaires tels que 24SevenOffice, Adobe Systems, BEA Systems, Borland, the Dojo Foundation, Eclipse Foundation, Google, Ilog, Yahoo!, Laszlo Systems, Mozilla Corporation, Novell, Openwave Systems, SAP, Oracle, Red Hat, Tibco, Zend et Zimbra[2].

Le premier résultat de cette initiative est l'AJAX Toolkit Framework[3] (ATF), un projet qui vise à proposer des outils pour le développement d'applications AJAX dans l'outil de développement Eclipse. Ce projet s'appuie entre autres sur la contribution initiale d'IBM et divers frameworks AJAX open source (tels que Dojo ou Rico).

Notes et références

  1. (en) L'article de Jesse James Garrett qui a lancé le nom Ajax (traduction)
  2. OpenAjax Alliance
  3. Description du projet hébergé par eclipse.org

Voir aussi

Articles connexes

Liens externes

  • Portail de l’informatique Portail de l’informatique

Ce document provient de « Asynchronous JavaScript and XML ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Asynchronous JavaScript And XML de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Asynchronous JavaScript and XML — Pour les articles homonymes, voir Ajax. AJAX est un acronyme signifiant Asynchronous JavaScript and XML (« XML et Javascript asynchrones ») et désignant une solution informatique libre pour le développement d applications Web. À l image …   Wikipédia en Français

  • Asynchronous javascript and xml — Pour les articles homonymes, voir Ajax. AJAX est un acronyme signifiant Asynchronous JavaScript and XML (« XML et Javascript asynchrones ») et désignant une solution informatique libre pour le développement d applications Web. À l image …   Wikipédia en Français

  • Asynchronous Javascript and XML — Ajax [ˈædʒæks] ist ein Apronym für die Wortfolge „Asynchronous JavaScript and XML“. Es bezeichnet ein Konzept der asynchronen Datenübertragung zwischen einem Server und dem Browser, das es ermöglicht, innerhalb einer HTML Seite eine HTTP Anfrage… …   Deutsch Wikipedia

  • Asynchronous JavaScript and XML — PodWEB Asynchronous JavaScript and XML. A Web scripting technique for increasing a web page’s interactivity with a user. Ajax allows data to be retrieved from a webserver and displayed in the page without reloading the whole page every time. For… …   Audio and video glossary

  • Asynchronous JavaScript and XML — AJAX technologijos statusas T sritis dirbtinis intelektas apibrėžtis Rinkinys saityno technologijų, kuriomis interaktyvaus tinklalapio atskiros dalys atnaujinamos asinchroniškai, neperkraunant viso tinklalapio. Toks atnaujinimas vykdomas įvykus… …   Lithuanian dictionary (lietuvių žodynas)

  • JavaScript 2.0 — JavaScript  Ne doit pas être confondu avec Java (langage). Apparu en …   Wikipédia en Français

  • Javascript —  Ne doit pas être confondu avec Java (langage). Apparu en …   Wikipédia en Français

  • JavaScript —  Ne doit pas être confondu avec Java (langage). JavaScript …   Wikipédia en Français

  • JavaScript editor — A JavaScript editor is computer software that allows the editing of program source code for the JavaScript language with features that make it easier to produce correctly functioning objects and functions. Editors for JavaScript typically color… …   Wikipedia

  • XML Events — is a W3C specification for handling events occurring in an XML document. These events are typically caused by a user interacting with the document as a web page using a device such as a web browser on a PC, mobile phone or telephone. Formal… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”