Asynchronous JavaScript and XML - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs est disponible ici.

AJAX, ou Asynchronous JavaScript And XML (" XML et Javascript asynchrones "), est un acronyme 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 (Le mot technologie possède deux acceptions de fait :) en elle-même, mais un terme qui évoque l'utilisation conjointe d'un ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui...) 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 (JavaScript est un langage de programmation de scripts principalement utilisé dans les pages web interactives mais aussi coté serveur. C'est un langage orienté objets à prototype, c'est-à-dire que les...) pour afficher et interagir dynamiquement avec l'information présentée ;
  • l'objet (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans un espace à trois dimensions, qui a une fonction précise, et...) XMLHttpRequest pour échanger et manipuler les données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) de manière asynchrone avec le serveur Web.
  • XML.

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 (Mozilla est un nom utilisé en informatique avec beaucoup de significations différentes. Cependant toutes ces significations sont liées à l'ancienne...), Firefox, Internet Explorer (Internet Explorer (officiellement Windows Internet Explorer depuis la version 7), parfois abrégé IE, MSIE ou MS IE, est le navigateur Web de Microsoft, installé par défaut avec Windows. Depuis...), Konqueror, Safari ou encore Opera.

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 (Un site Web est un ensemble de pages Web hyperliées entre elles et mises en ligne à une adresse Web. On dit aussi site Internet par métonymie, le World Wide Web reposant sur Internet.) Adaptive Path[1]. Depuis, il a rapidement gagné en popularité.

Les éléments qui le composent et leur utilisation pour générer des interactions asynchrones sont antérieurs.

En 2001, l'objet XMLHttp, apparu avec la bibliothèque MSXML, point (Graphie) de départ de cette technique, fut développé à l'origine par Microsoft (Microsoft Corporation (NASDAQ : MSFT) est une multinationale américaine de solutions informatiques, fondée par Bill Gates et Paul Allen, dont le revenu annuel a atteint...) pour Internet (Internet est le réseau informatique mondial qui rend accessibles au public des services variés comme le courrier électronique, la messagerie instantanée et le World Wide Web, en utilisant...) 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 permettent aux utilisateurs d'effectuer des choix (suivre un lien, remplir et valider un formulaire). Une requête (Le mot requête, synonyme de demande, est employé dans les domaines suivants :) 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 (La bande passante (angl. bandwidth) est un intervalle de fréquences pour lesquelles la réponse d'un appareil est supérieure à un minimum. Elle est...), 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 (Une interaction est un échange d'information, d'affects ou d'énergie entre deux agents au sein d'un système. C'est une action réciproque qui suppose l'entrée en contact de sujets.) avec l'application, le temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) 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 équivalents natives. Les navigateurs actuels mettent les éléments communs en cache, donc le chargement (Le mot chargement peut désigner l'action de charger ou son résultat :) 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 (Le mot client a plusieurs acceptations :) 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é (La quantité est un terme générique de la métrologie (compte, montant) ; un scalaire, vecteur, nombre d’objets ou d’une autre manière de dénommer la valeur d’une collection ou un groupe de choses.) 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 (Un ordinateur est une machine dotée d'une unité de traitement lui permettant d'exécuter des programmes enregistrés. C'est un ensemble de circuits électroniques permettant de...) 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 (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel...) avec AJAX est la nécessité d'une architecture (L’architecture peut se définir comme l’art de bâtir des édifices.) client/serveur, mais des solutions en mode déconnecté (offline en anglais) commencent à voir le jour (Le jour ou la journée est l'intervalle qui sépare le lever du coucher du Soleil ; c'est la période entre deux nuits, pendant laquelle les rayons du Soleil éclairent le ciel. Son début (par rapport à minuit heure...) (fonctionnement du poste client sans nécessité d'être relié au réseau (Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. Par analogie avec un filet (un réseau est un « petit rets », c'est-à-dire un petit filet), on appelle nœud (node)...) Internet ou à l'Intranet d'une entreprise). AJAX n'a pas besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes catégories :...) de code actif sur le serveur (seul le code JavaScript est actif sur le poste client), ce dernier étant un serveur Web se contentant de pousser 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 (Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) est la création de plusieurs environnements d'exécution sur un seul ordinateur, dont chacun émule l'ordinateur...) (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 (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.), 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 (Le périmètre d'une figure plane est la longueur du bord de cette figure. Le calcul du périmètre sert par exemple à déterminer...) 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 (PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner...) 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 scripting 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.

La concurrence

La concurrence pour l'affichage (L' affichage désigne l'application d'une surface de papier script dans un lieu public(et non du foyer)sur un support destiné à son émission, externe ou...) de contenus dynamiques au sein d'une page Web (Une page Web est une ressource du World Wide Web conçue pour être consultée par des visiteurs à l'aide d'un navigateur Web. Elle a une adresse Web. Techniquement,...) est la suivante :

  • Flash et Flex (Flex peut désigner :) (Adobe/Macromedia),
  • SilverLight (Microsoft),
  • JavaFX
  • XForms, le standard de formulaire proposé par le W3C.

Avantages et inconvénients

L'avantage de cette méthode est d'abord la vitesse (On distingue :) à 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é (Selon le contexte, le mot portabilité peut avoir plusieurs significations :). 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 (Un Parc est un terrain naturel enclos,[1] formé de bois ou de prairies, dans lequel ont été tracées des allées et chemins destinés à la chasse, à la promenade ou à l’agrément. Il se...) informatique (L´informatique - contraction d´information et automatique - est le domaine d'activité scientifique, technique et industriel en rapport avec le traitement...); car AJAX fonctionne avec des ressources matérielles relativement faibles : simples postes clients ne nécessitant pas beaucoup de mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) (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 (Windows est une gamme de systèmes d'exploitation produite par Microsoft, principalement destinées aux machines compatibles PC. C'est le remplaçant de MS-DOS. Depuis les années...) 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 (Le référencement est l'action de référencer, c'est-à-dire mentionner quelque chose ou y faire référence.) puisque les robots d'indexation ne sont pas en mesure d'indexer les contenus engendrés dynamiquement.

En modifiant le contexte (Le contexte d'un évènement inclut les circonstances et conditions qui l'entourent; le contexte d'un mot, d'une phrase ou d'un texte inclut les mots qui l'entourent. Le...) de navigation (La navigation est la science et l'ensemble des techniques qui permettent de :) 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 (Un moniteur est un périphérique de sortie usuel d'un ordinateur. C'est l'écran où s'affichent les informations saisies ou demandées par l'utilisateur et générées ou restituées par...) 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. A cet égard, il faut rappeller que toute application informatique déployée de façon standard est vulnérable[réf. nécessaire]. Cette recommandation (Les industries ne fonctionnent pas correctement sans normes garantissant l'interopérabilité, des organismes crées pour, promulguent des recommandations, qui si elles sont suivies deviennent des...) n'est pas propre à AJAX, elle est valable pour toute technologie et tout développement. Comme pour 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 (Une mise à jour, souvent abrégé en MAJ ou MàJ, est l'action qui consiste à mettre « à jour », ou bien « à niveau », un outil informatique, un...) 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 soucis d’industrialisation, nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) de ces frameworks ont été couplés à des frameworks de conception web.

On estime à plus de 500 le nombre de framework (Un framework est un espace de travail modulaire. C'est un ensemble de bibliothèques et de conventions permettant le développement rapide d'applications. Il fournit suffisamment de briques logicielles et impose suffisamment...) 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 (Ruby est un langage de programmation libre. Il est interprété, orienté objet, et multi-paradigme.), et spécialement Ruby on Rails
  • .NET 2.0 de Microsoft développe un framework pour Asp.Net (Microsoft Asp.Net Ajax).
  • Morfik WebOS (Un WebOS (Web Operating System, en français Système d'exploitation sur le web) est une imitation de bureau ou environnement graphique d'un système d'exploitation. Il s'agit d'une...) AppsBuilder de MORFIK est un EDI complet pour des applications AJAX avec un 'designer' visuel et le choix du langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par une...) (Pascal, Basic (En programmation, BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. qui désigne une famille de langages de programmations de haut niveau.), Java, C#).
  • Une nouvelle approche permet de se défaire du développement Javascript, souvent jugé couteux 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 (En géométrie, la développée d'une courbe plane est le lieu de ses centres de courbure. On peut aussi la décrire comme l'enveloppe de la famille des droites normales à la courbe.) une ASP.NET Ajax Control Toolkit, qui offre de nombreux contrôles " prêts à l’emploi " pour les développeurs utilisant Visual Studio (Microsoft Visual Studio est une suite de logiciels de développement pour Windows conçu par Microsoft. La dernière version s'appelle Visual Studio 2010.) 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 (Le design (la stylique en français) est un domaine visant à la création d'objets, d'environnements ou d'œuvres graphiques, à la fois fonctionnels, esthétiques et conformes aux impératifs...) pattern " Comet ", qui propose des solutions pour effectuer du push de données grâce à Ajax.

OpenAjax

IBM (International Business Machines Corporation (IBM) est une société multinationale américaine présente dans les domaines du matériel informatique, du logiciel et des services informatiques.) a créé Open AJAX Initiative, un groupe de promotion de cette technologie avec des partenaires tels que 24SevenOffice, Adobe Systems (Adobe Systems (NASDAQ : ADBE), ou plus simplement Adobe, est une entreprise informatique éditant des logiciels graphiques dont InDesign, Acrobat,...), BEA Systems (BEA Systems, Inc. (NASDAQ : BEAS) est une société fondée en 1995 qui se spécialise dans les logiciels d'infrastructure d'entreprise.), Borland (Borland (Borland Software Corporation) (NASDAQ : BORL) est une société américaine de logiciel, basée en Californie. Elle a été créée par Philippe Kahn, Français installé aux États-Unis et par 3...), the Dojo Foundation, Eclipse Foundation, Google (Google, Inc. est une société fondée le 7 septembre 1998 dans la Silicon Valley en Californie par Larry Page et Sergey Brin, auteurs du moteur de recherche Google. Depuis 2001, Eric Schmidt en est le PDG...), Ilog, Yahoo! (Yahoo!,Inc. est une société américaine de services sur Internet opérant notamment un portail Web. À l'origine, Yahoo! était uniquement un annuaire Web. En 2009,...), Laszlo Systems, Mozilla Corporation, Novell (Novell (NASDAQ : NOVL) est un éditeur de logiciel réputé pour son système d'exploitation réseau NetWare lancé en 1983 pour la plateforme...), Openwave Systems, SAP, Oracle, Red Hat (Red Hat est une société multinationale d'origine américaine éditant des distributions Linux. Elle est l’une des entreprises dédiées aux logiciels Open Source les plus importantes et les...), Tibco, Zend ( Le zend (féminin : zende) est surtout une langue dans laquelle a été écrite une version tardive de l'Avesta, de laquelle Anquetil-Duperron tira une première traduction. (à développer...) ...) et Zimbra.[2].

Le premier résultat de cette initiative est l'AJAX Toolkit Framework[3] (ATF), un projet (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et l’intégration d’une grande diversité de contribution, et...) qui vise à proposer des outils pour le développement d'applications AJAX dans l'outil (Un outil est un objet finalisé utilisé par un être vivant dans le but d'augmenter son efficacité naturelle dans l'action. Cette augmentation se traduit par la simplification des actions entreprises, par une plus grande...) 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).

Notes & références

  1. (en) L'article de Jesse James Garrett qui a lancé le nom Ajax (traduction (fr))
  2. OpenAjax Alliance
  3. Description du projet hébergé par eclipse.org
Cet article vous a plus ? Partagez-le sur les réseaux sociaux avec vos amis !
Page générée en 0.012 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique