Ajax JavaScript CSS HTML 5 DOM

XUL vs. HTML 5. Faut-il abandonner XUL?

XUL dans XULRunner est un moyen d'ajouter du code natif à une application HTML 5, en l'encapsulant dans une fenêtre XUL.

Sinon, quel est l'avenir de XUL? On peut se poser la question, en voyant notamment que Mozilla lance un projet de navigateur utilisant non plus XUL, son propre langage d'interface, mais plutôt HTML 5.

Et elle le fait parce que le moteur de rendu devant être dajà capable de présenter des pages web en HTML 5, il pourrait être simplifier si l'on supprimait le traitement du langage XUL.
Reste à savoir si HTML 5 peut entièrement remplacer XUL.

Comparaison des technologies

Une application XUL utilise un langage dérivé de XML, pour structurer la page, CSS pour sa présentation, JavaScript pour l'interaction avec l'utilisateur, DOM pour l'accès aux éléments du contenu.
Noter que DOM est étendu avec de nouvelles méthodes comme par exemple getElementsByAttribute.

Une application ou page web utilise le langage HTML ou XHTML tous deux dérivés de XML, et également CSS, JavaScript et DOM.

Quand à SVG, il peut aussi s'imbriquer dans du code HTML et dans du code XUL.

Ainsi les deux langages reposent sur les standards du Web. Pour les différencier il faut donc comparer leurs balises et autres caractéristiques.

Comparaison des balises

Trois balises sont cruciales: Canvas, Video et Audio. La première permet virtuellement de faire tout ce que l'on veut en matière d'interface et d'animation, les deux autres ont une usage très fréquent qui les rend incontournables.

Canvas

Canvas dans XUL et HTML 5 est une balise représentant une surface de dessin (dans Silverlight, c'est un conteneur pour d'autres balises graphiques).
Il semble que la Canvas de XUL soit simplement un projet, alors qu'il est déjà implémenté dans HTML 5.

Video et audio

XUL ne dispose d'aucune de ces deux balises essentielles pour une page Web, mais pas nécessairement utile dans une application.
Il existe un moyen des les ajouter: imbriquer du code HTML dans le code XUL.

Les widgets

Les composants graphiques prédéfinis de XUL sont plus nombreux comparés aux objets de formulaire de HTML 5.
Par exemple, XUL dispose d'un objet tree pour afficher une arborescence, des balises de layout avancées comme Grid, un système de gabarits (templates).
On peut construire des composants équivalents en HTML mais sur ce plan encore, XUL à un avantage car il dispose du dispositif XBL pour faciliter la définition de nouveaux composants graphiques.

Les plus de XUL

Modèle vue-contrôle

L'emploi du RDF pour les widgets permet de définir des contenus alternatifs définis dans des fichiers différents. Voir un exemple dans le tutoriel RDF.
On peut associer des évènement aux composants avec du code JavaScript, mais XUL dispose de capacité supérieures dans les réponses aux changements d'états et les interactions entre composants.

XPCOM

C'est une interface aux librairies externes, écrites dans différents langages. On peut ainsi à partir de JavaScript utiliser des fonctions écrites en C.
Cet accès au code natif à son pendant avec Native Client de Google pour les applications Web.

Bases de données

XUL peut se connecter directement à une base de données avec XPCOM et une extension a été développée spécialement par Mozilla pour SQL, voir SQL support in Mozilla, mais elle date de quelques années.
L'emploi de XPCOM est plus complexe que l'emploi d'Ajax couplé à des scripts sur le serveur.

XPInstall

Un système d'installation automatique pour les applications XUL. S'exécute à partir du navigateur Firefox.

Localisation

La structure de toute application XUL comprend de base un répertoire local pour les différentes traductions des libellés. La mappage est automatique.

Compatibilité

Pour fonctionner une application XUL a besoin du navigateur Firefox ou du runtime XULRunner. De son coté, HTML 5 fonctionnera bientôt sur tous les navigateurs et sur tous les systèmes y compris les mobiles.
Il existe une version allégée de Firefox pour mobiles au nom de code Fennec.

Conclusion

L'avantage déterminant de XUL sur HTML est la possibilité d'insérer du code HTML dans une interface XUL. Cela donne accès à toutes les balises que possède HTML plus celles qui lui manquent.

XUL semble mieux adapté pour construire une interface complexe grâce à ses balises de layout, et son langage de description de widgets permet aussi de se doter d'une librairie de composants réutilisables. Quand XUL offre des capacités additionnelles, c'est toujours au prix d'une très grande complexité mais il permet d'inclure des API natives.

HTML 5 convient pour un développement rapide et des applications portables. L'emploi d'un framework JavaScript peut apporter des widgets complémentaires.

Voir aussi