J’ai assisté vendredi 25 novembre à une présentation de Valtech Training sur « les Clients Riche, périmètre et solutions techniques ». Cette présentation visait à nous présenter les dernières technologies pour porter ou réaliser un client riche.
Denis Peyrusaube de Valtech Training a tout d’abord présenté ce qu’est un client riche, pour expliquer ensuite XUL, AJAX, Flash, Java Web Start et enfin Eclipse SWT.
Je vais essayer de résumer sa présentation, en donnant au passage mon avis.
Qu’est-ce qu’un client riche ?
Un client riche est un système qui est hébergé sur un serveur pour faciliter les mises-à-jour et le déploiement, tout en offrant une interface riche à l’utilisateur. Il n’embarque pas toute la logique de l’application. La majorité des traitements sera effectuées côté serveur. Cependant l’ergonomie et la richesse fonctionnelle offertes à l’utilisateur sont très proches d’un client lourd classique.
La conception d’une application en mode page au sens Web du terme tend à disparaître. Aujourd’hui une application doit offrir une ergonomie et une navigation par composant plutôt que par page d’état comme ce fut le cas au début des applications webs.
Idéalement une techno doit proposer des composants graphiques de haut niveau tout en restant facilement déployable. D’autre part, quelque soit la techno retenue, la notion de conteneur sur le poste client apparaît. En règle général le navigateur internet est suffisant.
1. XUL
XUL (prononcer [Zool]) est le précurseur des technologies de présentation web. Il s’agit d’un langage XML décrivant des composants (Menu, ComboBox) destiné à remplacer le langage HTML. Dans les faits aujourd’hui, XUL est porté par la communauté open-source Mozilla, mais Microsoft s’y intéresse aussi.
Un exemple de site utilisant XUL: http://www.georgenava.com/
Ce site ne fonctionne que si vous avez Firefox ou Mozilla. Il ne fonctionne pas avec Internet Explorer.
2. AJAX
AJAX (Asynchronous Javascript And XML) n’est pas réellement une nouveauté même si en ce moment c’est un sujet chaud dans la communauté Web. Au départ il ne s’agit que d’un article écrit par un consultant destiné à formaliser un mécanisme Asynchrone qui permet de rafraichir une page dans un navigateur sans devoir recharger toute la page. AJAX fonctionne avec Internet Explorer et Firefox car il s’agit ni plus ni moins que du? Javascript côté client. Premier avantage donc: la portabilité.
AJAX du côté serveur n’impose pas de modèle de programmation. Il n’y a donc aucunes normes XML, ni DTD. Le message envoyé par le serveur est au format XML et le client le reçoit de manière indirecte. Il peut alors afficher des informations en utilisant du Javascript, du Dynamic HTML et des feuilles de style.
Donc pour résumer: le serveur envoie un message XML, le navigateur le reçoit via un objet XMLHttpRequest de manière asynchrone. Une librairie Javascript modifie la page, change la couleur d’un combo, fait apparaître un menu déroulant ou masque un tableau par exemple.
Puisqu’une démo est mieux qu’un long discours voici quelques sites utilisant AJAX:
GoogleSuggest
Si vous tapez JAV puis vous attendez un instant, votre navigateur envoi au serveur ces 3 lettres. Le serveur retourne une réponse au format XML en utilisant un format propriétaire à Google. La partie Javascript d’AJAX dans le navigateur lit la réponse, construit alors un DIV en HTML (une boîte) et vous liste le nombre de site parlant de java, javascript…
AJAX permet d’ajouter des mécanismes côté client pour ne recharger qu’une partie d’une page internet. Il existe aussi des librairies Javascript destinées à faciliter les développements d’application AJAX comme ScriptAcuLous (http://script.aculo.us/) ou surtout ProToType (http://prototype.conio.net/). Elles permettent de coder des fonctions de Drag-and-drop par exemple (http://wiki.script.aculo.us/scriptaculous/show/DragAndDrop)
Les inconvénients ?
- Pas de DTD/XSD côté serveur concernant le XML. Chacun fait ce qui lui plait.
- Le Javascript est difficile à coder/débugger et n’est pas un langage très puissant.
- Difficile à tester en phase de développement
- Il existe des composants riches mais ils sont payant
- Pertinence et pérennité du JavaScript dans 2 ou 3 ans ?
Les avantages?
- Simple à mettre en ?uvre
- Puissant
- Effets intéressants offrant de nouvelles possibilités en terme d’ergonomie
- Compatible Internet Explorer et Firefox dans la mesure où le code JS l’est
- Communauté de développeur très active
- Bientôt intégré dans des composants Java Server Faces (JSF) pour faciliter le codage.
Outils AJAX:
– ATLAS (Microsoft) framework intégré dans Visual Studio et .NET destiné à simplifier le développement d’application Web. A noter que Microsoft a annoncé que d’ici 2 ans, Office 13 sera majoritairement en mode serveur lourd-client riche et que c’est l’une des raisons qui font que Microsoft pousse cette techno. Voir l’article d’un des gourou de Microsoft http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx
Est-ce un effet d’annonce de Microsoft ou vas-t-on voir un nouveau système pour créer une application riche ?
– SAJAX: Toolkit de dév pour AJAX (http://www.modernmethod.com/sajax)
– DoJoToolKit http://dojotoolkit.org) API Javascript pour résoudre les problèmes de portabilité entre IE et les autres navigateurs.
3. Macromédia FLASH
Sans doute pour moi la révélation de cette présentation. Je pensais que Macromedia Flash servait soi à faire un site joli et animé, soit à afficher des bandeaux de publicité lorsque Firefox bloque les pop-ups. Et bien non? nous sommes en 2005 et ce que j’ai vu était vraiment intéressant.
Flash est une techno créée par Macromédia (qui appartient à ADOBE) utilisant un plug-in installé sur un navigateur Web. Conçu à l’origine pour l’animation Web, Flash est un outil pour les graphistes ou les animateurs. Aujourd’hui l’évolution est le fait que Flash peut aussi servir à faire des applications type Client Riche.
Exemple 1: Le site internet du Club Med utilise Flash pour vous permettre de trouver un séjour sur mesure.
L’évolution est du côté de la conception. La première monture du Studio Flash était destinée à des animateurs Web, avec une ligne de temps et des outils de déformation vectorielle. Ce qui est nouveau c’est la phase de développement et de rendu dynamique.
Il existe 2 solutions basées sur Flash: Macromedia Flex et Laszlo
Macromedia Flex:
Solution propriétaire et payante de Macromédia. Il s’agit d’un studio qui vous permet de construire votre page en utilisant des composants (Label, Buttons, ComboBox?).
Flex se décompose d’un fichier MXML pour décrire l’interface et d’un fichiet ActionScript pour décrire ce qui se passe et les interactions entre les composants. Ces fichiers sont compilés par un conteneur de Servlet (comme JSP) pour générer un flux binaire de type Flash qui sera envoyé au client. Etant donné qu’il ne s’agit que d’une servlet il est donc possible de rendre dynamique une partie du contenu XML par exemple.
Un plugin Eclipse pour FLEX est en cours de réalisation.
OpenLaszlo est basé sur le même système que Flex, à la différence prêt qu’il s’agit d’une initiative Open-source. Démo disponible à cette adresse : http://www.laszlosystems.com/demos.
La société LaszloSystem propose des services comme le fait Jboss Inc. en terme de support si nécessaire.
Flash est finalement intéressant car les outils de conception de page existent déjà et permettent donc de bien séparer la partie GUI de la partie data. Cependant difficile de se rendre compte si les données dynamiques sont faciles à gérer ou non.
4. Java Web Start
JWS ajoute à Java des fonctionnalités de déploiement, de gestion de cache et d’exécution distante. A ce titre c’est donc une technologie pour Client riche. JWS fonctionne via un navigateur internet ou non. Permet de mettre à jour rapidement les clients répartis, tout en ayant une richesse fonctionnelle complexe.
En gros inconvénient, il faudra recoder un container pour remplacer ce qu’offre le navigateur Web (partie réseau, chargement du contenu, gestion Proxy, CSS?)
JWS ne convient que si le client riche doit vraiment avoir des fonctions qu’un navigateur web ne peut pas offrir.
En terme d’avantage, on revient au modèle client-serveur classique, ce qui est beaucoup plus facile à coder/débuger que via le Javascript par exemple.
5. Eclipse Platform
Eclipse est un éditeur Java bien connu mais surtout un moteur de rendu appelé Platform.
Ce système est composé d’un ensemble de service, de widgets, de gestion des ressources qui permettent d’utiliser le squelette d’eclipse comme base de dévelopement de client lourd.
D’autre part, il est possible d’intégrer d’autres plugins et donc d’enrichir son application facilement. A noter que l’on peut utiliser JWS pour installer une application basée sur Eclipse.
http://www.eclipse.org/platform/index.html
Conclusion
Les clients riches seront fortement présent dans les années à venir car les navigateurs Web deviennent aussi de plus en plus puissant. La facilité de déploiement, l’absence de gestion de mise à jour sur le poste client et l’ergonomie riche sont les critères qui font un client riche. On parle beaucoup d’AJAX et je sais qu’il existe des composants JSF (côté serveur) qui permettent de s’interfacer via J2EE avec les applications métiers. Il sera donc certainement facile d’ici quelques mois de tester et voir si ce genre de solution peut nous intéresser.
Flash via Flex ou Laszlo offre le meilleur résultat en terme de rendu côté client. N’ayant pas vu en détail le côté serveur, il est difficile d’estimer si cette technique est adaptée à des données très dynamique comme dans la finance. Java Web Start et Eclipse Platform sont deux solutions pour développer des clients riches sans retomber dans le modèle client-serveur.