Comment réaliser une RIA?

La plupart des innovations dans le domaine du développement convergent dans une seule direction: l'amélioration des applications Web riches pour faciliter leur programmation et leur utilisation, pour accroître les performances et les possibilités. Comme si les RIA voulaient supplanter les logiciels de bureau traditionnels. Cependant, si de nouveaux outils facilitent la programmation, les nouvelles techniques la rendent par ailleurs plus complexe et des choix doivent être faits avant de débuter la conception d'un RIA.

Description et perspectives

Définissons une RIA comme une application Web, un programme hébergé sur un serveur et fonctionnant sur le navigateur, et qui a toutes les fonctionnalités d'une application locale tel le logiciel de traitement de texte. La RIA est débarrassée de la lenteur des applications Internet et elle a accès aux fichiers sur l'ordinateur local, contrairement aux scripts Web.
Cependant, pour une raison de sécurité (on pourrait être connecté à un logiciel malveillant) la RIA s'exécute dans un environnement propre que l'on appelle sandbox.
Pour pouvoir procurer ces avantages sur les applications Web simples, un runtime doit être téléchargé sur le poste client.

Grâce aux nouvelles technologies que nous allons détailler et aux possibilités nouvelles dont elles sont dotées, les RIA disposent de tant d'avantages sur les applications locales qu'elles ne peuvent que les remplacer à court terme, tendance qui se constate sur tous les plans: nouveaux outils de développement, investissements et rachats d'entreprises, offre d'emplois (administration de serveurs, webmasters).

Avantages pour l'éditeur

L'éditeur dispose d'un moyen de promotion pour son application gratuit et considérable: le moteur de recherche. Il obtient d'emblée un large public sans frais et sans distribuer quoi que ce soit.
Il est délivré de toutes les tâches de distribution, il lui suffit de mettre la dernière version de l'application en ligne.
Eventuellement il peut compléter ses revenus en ajoutant des publicités dans l'interface, qui seront mises en jour en temps réel.

Avantages pour l'utilisateur

Aucune installation n'est nécessaire, sauf le framework, qui sera commun à toutes les applications. L'application ne dépend pas du système d'exploitation et fonctionne sous Linux comme sous Windows ou Mac. L'utilisateur dispose toujours de la dernière version. Il utilise le logiciel sur n'importe quel poste (sauf si ses données sont sauvées localement). Il ne craint pas les virus ou pannes matérielles.

Techniques des RIA

Mode asynchrone

Le mode asynchrone consiste à lancer des opérations et rendre la main à l'utilisateur sans attendre la réponse du serveur. Les frameworks de RIA incorporent Ajax pour permettre ce mode de fonctionnement.
A cela on peut adjoindre une fonction de prefetching, qui consiste à anticiper les besoins et lancer les requêtes pour obtenir les réponses sans attente. Par exemple si on affiche une carte, Google Maps télécharge les régions adjacentes qui s'affichent alors immédiatement quand on se déplace sur la carte.

Sandbox

Littéralement 'bac à sable", car on l'utilise pour effectuer des tests. C'est un environnement d'exécution doté d'un espace mémoire et de ressources. Les programmes, essentiellement des bibliothèques de fonctions et objets n'ont pas accès aux fichiers de l'ordinateur hors de l'espace alloué. La machine virtuelle Java qui fait fonctionner les applets des pages Web en est un exemple. Mais cela se généralise aux autres environnements tels que XAML, XUL, etc.
Au contraire les ActiveX ne fonctionnent pas dans une sandbox et nécessitent des mesures de sécurité complexes.

Mode déconnecté

Une RIA continue de fonctionner après que l'on ait fermé la connexion à Internet, lors d'un déplacement par exemple. Pour ce faire plusieurs techniques sont mises en oeuvre.
- Les bases de données sont transférées sur une base locale SQLite.
- Les ressources telles que pages Web et images sont triées et stockées sur le disque dur local.
- La troisième fonction consiste à transposer sur le poste local le fonctionnement sur le Web. Ainsi Ajax doit fonctionner en local, ce qui n'est pas permis par l'objet XMLHttpRequest en mode normal.
Ces trois fonctions correspondent aux trois modules de Google Gear.

Pages dynamiques

La RIA s'appuie sur les composantes des pages Web dynamiques, donc Ajax qui comprend JavaScript, DOM, CSS, l'objet XMLHttpRequest. Les RIA doivent s'appuyer sur les standards du Web pour fonctionner sur tous les navigateurs.

Services Web

L'application peut utiliser des services Web, sur le site de l'application ou provenant de sites tiers et qui accomplissent des traitements ou fournissent des informations spécifiques.

Frameworks

A cet environnement Web s'ajoute un framework coté client: la machine virtuelle Java, .NET, le flash player etc...

La guerre des environnements à démarré avec l'annonce de Silverlight par Microsoft. Face à une offre hétaroclite, d'origines différentes et incompatibles, Silverlight avec son langage d'interface XML, son plug-in léger et portable semble vouloir écraser la concurrence et remplacer Flash par un standard Microsoft.
Cependant le monde du Web a réagi, Adobe annonce un environnement de développement Flash open source et gratuit, le W3C prend en compte HTML 5 pour remplacer le format actuel et Google propose un plug-in pour exécuter les RIA hors connexion.
Ainsi le programmeur se trouve face à un panel de technologies étendues...

Le framework Silverlight de Microsoft dépent de la plateforme .NET. L'interface se décrit en XAML et se code en JavaScript, ou autres langages.
Silverlight utilise un contrôle ActiveX sous IE. Donnons un exemple de création de contrôle avec Silverlight. On définit l'emplacement de l'objet avec un div ou autre:

<div id="MonObjet"></div>   

Puis on crée l'objet avec un constructeur du plug-in:

<script language="text/javascript>
    Sys.Silverlight.createObject("code.xaml", parent, "MonObjet" ... autres options ...);
</script>

Maintenant principalement dévolu à Windows Phone 7, Silverlight est toujours utilisable pour les applications Web en général.

Le format binaire Flash s'affiche grâce à contrôle ActiveX sous IE, et un plug-in pour les autres navigateurs. Son avantage est qu'il est maintenant assez répandu et les développeurs peuvent l'utiliser sans craindre pour la compatibilité.

Le framework JavaFX utilise la syntaxe du format XML graphique SVG pour définir des interfaces et Java coté serveur. L'éditeur propose aussi une solution plus lourde, Java Webstart, entièrement en Java.

Le nouveau standard HTML 5, est conçu pour les applications Web. Il dispose d'une balise Canvas permettant de dessiner des composants graphiques et d'éléments de formulaires plus complets.
Il dispose de fonction hors ligne mais on peut aussi utiliser pour cela Gears en attendant qu'il soit supporté par tous les navigateurs.

Conclusion

Le futur des applications Web ne sera pas forcément limité à un seul environnement... Ce n'est pas vraiment dans les possibilités des technologies offertes qu'il faudra faire le choix pour créer une RIA, car elles tendent à être équivalentes, mais plutôt dans une culture qui voudrait se placer dans le sillage de Microsoft ou ailleurs...

Voir aussi