AJAX

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 AJAX de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • 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

  • 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

  • Ajax — may refer to: Mythology * Ajax (mythology), son of Telamon and a hero in the Trojan war, also known as Ajax the Great * Ajax the Lesser, son of Oileus and also a hero in the Trojan warPeople*Ajax (missionary), Arian missionary who converted the… …   Wikipedia

  • Ajax — ist der Name mehrerer Personen: Ajax der Große, Sohn des Königs Telamon von Salamis, einer der Haupthelden des Trojanischen Kriegs Ajax der Kleine, König von Lokris, der „Oileus Sohn“ Ajax (Missionar), ein westgotischer Missionar, der um 464 n.… …   Deutsch Wikipedia

  • ajax — héros grec qui devint fou parce qu on avait donné à Ulysse les armes d Achille mort; croyant tuer des ennemis, il massacra le bétail des Grecs et se suicida. ⇒AJAX, subst. masc. A. Guerrier intrépide et impétueux : • Tout ce qui m est permis, c… …   Encyclopédie Universelle

  • 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)

  • 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)

  • Ajax — Ajax. Unter diesem Namen sind zwei trojanische Helden bekannt. Ajax, der Lokrer, ein Sohn des Oileus, erschien mit 40 Schiffen vor Troja. Nach der Einnahme der Stadt entweihte er im Tempel der Minerva die Priesterin Kassandra. Zur Strafe für… …   Damen Conversations Lexikon

  • Ajax — ● AJAX, hace referencia a una tecnología que hace uso de JavaScript asíncrono + XML para el desarrollo web. ● El Ajax de Amsterdam es un equipo de fútbol holandés. ● Ajax también hace referencia a una marca de diversos productos relacionados con… …   Enciclopedia Universal

  • Ajax — name of two Greek heroes in the Trojan War (Great Ajax, son of Telamon, and Little Ajax, son of Oileus), Latin, from Gk. Aias, perhaps originally the name of an earth god, from aia earth. The Elizabethans punned on the name as a jakes a privy …   Etymology dictionary

  • Ajax — [ā′jaks΄] n. [L < Gr Aias] Gr. Myth. 1. a strong, brave Greek warrior in the Trojan War who kills himself when Achilles armor is given to Odysseus: called Ajax Telamon [tel′ə män΄] 2. one of the swiftest runners among the Greek warriors in the …   English World dictionary

Share the article and excerpts

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