· Tech watch

XUL, la partie visible du framework Mozilla (XPFE)

Réaliser une application métier performante, facilement maintenable et extensible, offrant une interface ergonomique aux utilisateurs, nécessite tout d’abord un choix technologique de première importance, tant les solutions sont aujourd’hui diverses.

[XPFE|XPFE : Cross Platform Front-End->http://www.mozilla.org/xpfe/] [[XPFE signifie Cross-Platform Front-End]], la plateforme de développement de Mozilla, pourrait bien jouer les trouble-fête dans la cour des habitués que sont Java ou .Net. Son langage de description d’interfaces riches en XML, XUL|XUL : XML User Interface Language [[XUL : XML User Interface Language]], a tout pour séduire.

Choisir une architecture applicative

La question du choix d’architecture au moment de réaliser une application se pose de façon récurrente. En particulier, le débat entre client riche et client web, souvent abordé dans nos colonnes, n’a pas de solution définitive, chaque parti ayant ses avantages et ses inconvénients.

Clients riches

Un client riche apporte incontestablement la meilleure expérience ergonomique à l’utilisateur : menus, boutons, glisser/déposer, etc., et tout cela avec une réactivité incomparable.

Par ailleurs, du point de vue du développement, que ce soit en Java avec Swing, SWT ou en .Net avec les WinForms, le développeur a accès à une bibliothèque d’éléments d’interface (widgets) riche et extensible, ainsi qu’à des fonctionnalités programmatiques avancées.

Malheureusement, l’utilisation de telles technologies demande des temps de développement longs, un niveau de compétence technique relativement élevé et pose immanquablement des problèmes de portabilité (Java mis à part), du déploiement du client en milieu hétérogène et de sa maintenance.

Clients web

Retenir la solution de l’application web élimine automatiquement ces problèmes. Cela réduit aussi grandement la difficulté technique et le temps du développement. Mais de telles applications manquent typiquement de réactivité et de fonctionnalités ergonomiques (telles que le glisser-déposer, ou les menus contextuels).

L’accès aux ressources locales du poste de travail pose également problème (dossiers réseau, carnet d’adresse, etc.). En effet, le HTML a été créé pour décrire des documents (notamment scientifiques) et n’est aucunement adapté à la création d’interfaces d’applications spécialisées. L’évolution de ce langage est en cours [ [Web Applications 1.0 Working Draft, Web Forms 2.0 Working Draft ]], mais le processus n’en est qu’à ses débuts et n’aboutira pas avant plusieurs années.

La frontière s’estompe

On pourrait penser que le débat entre ces deux approches concurrentes est aujourd’hui clos, chaque solution répondant à des besoins spécifiques. Or il n’en est rien : depuis quelques années, une troisième voie est en train d’émerger, venant bousculer les vieilles habitudes. Des applications web se voient dotées d’interfaces riches, tandis que des applications traditionnellement autonomes se retrouvent accessibles depuis un navigateur web : la frontière entre clients riches et clients web est en train de s’estomper.

Parmi les technologies se revendiquant de cette nouvelle approche[notamment : [OpenLazlo, Macromedia Flex, le futur Microsoft XAML]], le framework XPFE de Mozilla est celle qui semble promise au plus bel avenir.

XPFE, une solution complète

XPFE est souvent confondu avec son composant phare : le langage de description d’interfaces XUL. Mais c’est en réalité un framework complet, qui se compose de :

  • XUL, le langage de description d’interface ;
  • Mozilla Layout Engine, plus connu sous le nom de Gecko, le moteur de rendu et d’exécution ;
  • XPInstall, un système de mises à jour automatiques ;
  • XPCom, une bibliothèque de composants extensible.

L’architecture XPFE

Une application XPFE peut se concevoir de plusieurs façons :

  • en tant qu’application autonome, comme le navigateur Firefox ou le client de messagerie Thunderbird ;
  • en tant qu’application client/serveur ;
  • en tant qu’application web, accessible depuis un navigateur (les navigateurs compatibles sont ceux qui utilisent le moteur Gecko, tels que Mozilla/Firefox, Netscape Communicator, Camino, etc.).

La particularité est que ces ces trois architectures utilisent un seul et même langage pour décrire les interfaces : XUL.

Les interfaces XUL

Un coup d’oeil à l’exemple suivant permet de se rendre compte de la richesse potentielle d’une interface décrite en XUL :

Il s’agit de l’application XUL FileManager, un explorateur de fichiers distants accessible depuis un navigateur web (rappelons que pour tester l’application, il faut disposer d’un navigateur utilisant le moteur Gecko).

XUL utilise le formalisme XML pour décrire les éléments d’une page, comme cela se fait en XHTML par exemple. Ainsi, ces quelques lignes de code [exemple pris à l’excellent tutoriel publié sur [xulplanet.com (traduction française intégrale du tutoriel disponible sur le site xulfr.org)]] :

<button type="menu">

</button>

permettent d’obtenir ce résultat (la capture d’écran montre les deux états du bouton) :

A côté de XUL, qui permet de décrire les éléments d’interface, XPFE s’appuie sur :

  • les feuilles de style CSS pour définir l’apparence
  • le langage Javascript pour décrire les comportements

soient deux standards éprouvés dans le monde du web.

Enfin, signalons qu’il est possible d’associer simplement des comportements à des raccourcis clavier, et que l’internationalisation est également intégrée au framework.

Des applications portables

Toute application développée au sein du framework sera automatiquement compatible avec toutes les plateformes logicielles supportées par XPFE, et notamment : MacOS, GNU/Linux, Windows et les grands UNIX.

Une application XPFE peut aussi bien être utilisée à travers un navigateur Web que packagée et installée sur l’ordinateur de l’utilisateur. Il est même tout à fait envisageable d’améliorer l’ergonomie d’interfaces Web existantes en y incorporant des balises XUL, qui, tout comme le HTML, peuvent être générées par des langages de script côté serveur, comme JSP ou PHP.

Une maintenabilité simplifiée

La maintenabilité d’une application web ne pose pas de problème, puisqu’elle est par essence centralisée. En revanche, pour des applications client/serveur ou autonomes, la mise à jour peut se révéler une opération complexe.

Le framework XPFE dispose d’un mécanisme d’extension [ [XPInstall|XPI ]] facilitant l’apport de correctifs et d’évolutions à une application déjà déployée. La simple invocation d’un lien web permet de déclencher la mise à jour de l’application, mise à jour dont l’intégrité est garantie par un système de signature de paquets.

Le souci de l’interopérabilité

Le fait que XUL soit un dialecte XML apporte à ce langage un niveau d’interopérabilité et d’extensibilité exceptionnel.
Ainsi, toute interface décrite par du XUL peut être manipulée au moyen
de feuilles de transformation XSL (on peut notamment imaginer la transformation par ce biais d’une interface XUL en interface XHTML si le navigateur d’un utilisateur ne supporte pas la technologie XPFE).
XUL peut en outre être étendu grâce au mécanisme des espaces de nom XML. À l’heure actuelle, le moteur de rendu du framework (Gecko) est capable d’interpréter un grand nombre de langages liés au XML.

Support complet :

  • HTML 4.0 et XHTML
  • CSS2
  • MathML (dialecte XML utilisé pour la notation d’expressions mathématiques)
  • RDF (utilisé comme source de données par défaut des éléments d’interface complexes de XUL)
  • XSLT (pour des transformations côté client)
  • XPath (langage de requête destiné au XML)

Support partiel :

Par ailleurs, XPFE fournit des connecteurs (sous la forme de composants XPCOM) pour les Web Services, [XML-RPC->http://www.mozilla.org/projects/xmlrpc/], LDAP, SQL, IMAP et POP3.

Il est aussi possible d’utiliser une source de données locale à l’application grâce à un composant permettant la lecture et l’écriture de données au (très puissant) format RDF.

Une extensibilité à plusieurs niveaux

Bien qu’il réponde aux besoins courants du développement d’applications riches, le framework XPFE n’en est pas moins extensible. Cette extensibilité est présente à deux niveaux :
– il est possible d’implémenter facilement de nouvelles balises XUL (par exemple : pour réaliser des widgets ultra-spécialisés comme Xulrecordset) par la combinaison simple de XML, CSS et Javascript.
– on peut étendre les capacités du framework en implémentant de nouvelles bibliothèques pour celui-ci. Le langage d’implémentation des bibliothèques standard du framework est le C++, mais le modèle de composant XPCOM / XPConnect propose une abstraction du langage d’implémentation qui permet de réaliser des bibliothèques avec des langages tels que Java, Python, Perl ou Ruby.

Fiabilité et pérennité

Bien que mal connu, le framework d’application Mozilla est loin d’en être à ses débuts. Existant depuis 1998 et supporté par la Fondation Mozilla, XPFE est à la base d’applications utilisées quotidiennement par des millions d’utilisateurs, comme le navigateur Mozilla Firefox[« les 15 millions d’utilisateurs de Firefox utilisent XUL tous les jours sans le savoir ! » déclare Tristan Nitot, président de [Mozilla Europe ]] ou le client de messagerie Mozilla Thunderbird. XPFE est aussi à la base du puissant IDE Komodo, de l’éditeur HTML WYSIWYG Nvu et de plusieurs centaines d’autres applications|Mozdev.org.
XPFE dispose donc d’une base d’utilisateurs très importante, d’une communauté de développeurs active et peut être considéré comme une technologie fiable et éprouvée.

Enfin, XPFE est une plateforme libre, indépendante d’un quelconque éditeur, reposant sur des technologies standardisées et soutenue par une fondation : elle présente donc un risque technologique relativement faible. Selon Tristan Nitot, président de Mozilla Europe, cela séduit de nombreux acteurs du marché, qui vont très prochainement « déployer de très grosses applications écrites en XUL, applications qui ne sont pas nécessairement liées à la notion de navigation Web ». Le directeur technique du journal Le Monde à ainsi déclaré|Journal Du Net : Interview de Jean Christophe Potocki avoir retenu la solution XUL pour le développement des interfaces utilisateurs des prochains clients riches du journal.

Quel futur pour XPFE ?

Le prochain chantier de la communauté des développeurs Mozilla est d’isoler le code encore dépendant des applications historiques du framework (firefox, thunderbird), de manière à pouvoir créer une machine virtuelle indépendante du moteur de rendu Gecko permettant d’exécuter des applications XPFE standalone. Cette séparation permettra de réduire la taille de l’empreinte mémoire des applications du framework (en favorisant le partage de code). Ce chantier est déjà bien avancé et on peut déjà tester le XulRunner[ Wiki Mozilla : [XulRunner, plus de détails sur xulfr.org]] au prix de quelques compilations…

D’ores et déjà, XPFE est un concurrent sérieux pour les plateformes traditionnelles de développement de clients riches (J2EE, .Net). Dans toute mission de choix d’architecture, il n’est plus possible d’ignorer cette solution alliant simplicité, efficacité et portabilité.

Le respect des standards étant devenu un critère majeur dans le choix d’une solution, la plateforme Mozilla dispose de nombreux atouts pour séduire les directions informatiques.