Francais | English | Espanõl

Asynchronous JavaScript and XML

Un article de Wikivisual, l'encyclopédie libre.

Pour les articles homonymes, voir Ajax. Image:Disambig.svg

AJAX, ou Asynchronous JavaScript And XML (« XML et Javascript asynchrones »), est un acronyme désignant une méthode informatique de 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 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 et XSLT

En alternative au couple XML/XSLT, les applications AJAX peuvent utiliser d'autres technologies: le HTML préformaté, les fichiers texte plats, JSON et JSON-RPC.

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, Safari ou encore Opera. Toutefois, ce dernier ne supporte pas les transformations XSLT nativement pour les versions antérieures à la 9.0<ref>http://www.opera.com/docs/specs</ref>.

Sommaire

[modifier] Histoire

Le terme AJAX est employé depuis 2005 et a rapidement gagné en popularité. Cependant les éléments qui le composent et leur utilisation pour générer des interactions asynchrones sont antérieurs. L'objet XMLHttpRequest (aussi nommé XMLHTTP), point de départ de cette technique, fut développé par Microsoft en tant qu'objet ActiveX ; il fut donc supporté en premier lieu par Internet Explorer 5 dès 1999.

[modifier] Comparaison avec les applications Web traditionnelles

Les applications Web 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. 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 utilisateurs plus lentes que leurs équivalents 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, et en utilisant la puissance des feuilles de style (CSS) ainsi que le langage Javascript côté client pour interpréter la réponse du serveur HTTP. 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 légèrement réduit, une partie du traitement étant réalisé 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 (certains frameworks pèsent plus de 500 ko !).

[modifier] Les approches côté serveur

Un des points critiques dans la programmation avec AJAX est de déterminer l'architecture client/serveur. En théorie, AJAX fonctionne indépendamment du serveur. En pratique, la technologie côté serveur choisie a un impact significatif sur les choix de programmation à disposition.

  • Java fournit une technologie à maturité avec un support des threads et un important soutien de la communauté Open Source.
  • Ruby, et spécialement Ruby on Rails, en tire un fort potentiel de productivité.
  • 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 scripts complet et largement utilisé mais moins que Java ou PHP sur les serveurs (Google l'utilise largement).
  • .NET 2.0 de Microsoft développe un framework pour Ajax .Net (MicrosoftAjax .Net).

[modifier] Avantages et inconvénients

L'avantage de cette méthode est la vitesse à laquelle une application AJAX répond aux actions de l'utilisateur, dont les actions sont traitées (en partie au moins) localement par le navigateur.

L'utilisateur d'applications AJAX doit autoriser l'exécution de code Javascript par son navigateur, ce qui peut laisser craindre des problèmes de sécurité. Avec les versions d'Internet Explorer 5 ou 6 pour Windows, il doit aussi autoriser les ActiveX car le composant XMLHTTP n'y est pas natif comme dans ses concurrents (Firefox, Safari, Opera, etc.) ou la version 7. Utilisant des techniques apparentées au HTML dynamique, les applications AJAX doivent être testées sur chaque navigateur, en raison du non respect des normes officielles.

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

Enfin, 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).

[modifier] L'avenir d'Ajax

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

Le premier résultat de cette initiative est l'AJAX Toolkit Framework<ref>Description du projet hébergé par eclipse.org</ref>, 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 autre sur la contribution initiale d'IBM et divers frameworks AJAX open source (tels que Dojo ou Rico).

La fondation Eclipse propose également un outil pour le développement d'applications web basées sur le framework Eclipse, sous le nom de RAP (Rich AJAX Platform). Les applications ainsi construites pourront être déployées côté serveur et seront accessibles par un navigateur web via une génération de code utilisant les principes d'AJAX.

Du coté de Microsoft, un framework est en cours de développement, facilitant la mise en place de site ajax. Une fois n'est pas coutume, ce framework est gratuit chose qui se répand chez Microsoft en ce moment. En parallèle est développé 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.

[modifier] Notes & références

<references />

[modifier] Voir aussi

[modifier] Liens externes

ca:Ajax (programació) cs:AJAX de:Ajax (Programmierung) en:Ajax (programming) es:AJAX eu:Ajax (programazioa) fa:آژاکس (برنامه‌نویسی) fi:Ajax (ohjelmointi) ga:AJAX gl:AJAX he:AJAX (תכנות) hu:AJaX id:Asynchronous JavaScript And XML it:AJAX ja:Ajax ko:Ajax la:Aiax lt:AJAX mk:AJAX nl:Ajax (programmeren) no:Ajax (Internett) pl:AJAX pt:AJAX (programação) ru:AJAX sv:AJAX ta:ஏஜாக்ஸ் th:AJAX tr:AJAX (programlama) uk:AJAX vi:Ajax (lập trình) zh:AJAX

Outils personnels