Après bien des fausses joies, sauf peut-être du côté de chez Microsoft, Mozilla devrait finalement présenter la version finale de Firefox 2.0 dans une paire de semaines. On en attend une sécurité accrue, une plus grande rapidité dans le rendu des pages Web, une meilleure qualité graphique en général, mais pour parvenir à ces prouesses, il aura fallu changer une pièce essentielle du moteur : son interpréteur JavaScript.


Qualité über alles
Mike Schroepfer, l'un des vice-présidents de Mozilla, le martèle à chaque fois qu'il en a l'occasion : l'éditeur open-source ne publie pas ses logiciels en fonction de dates-butoirs (suivez mon regard), mais à condition qu'ils aient atteint une maturité suffisante. Ce qu'il faut comprendre par, "qu'ils soient au point". Aussi, interrogé sur les reports successifs de lancement de Firefox 2.0, il explique que ce dernier va bientôt recevoir son bon de sortie, et rappelle que ses entrailles renferment pas mal de nouveautés, certaines déjà maintes fois évoquées ici, comme les modifications apportées à la navigation par onglets ou l'interface graphique, et d'autres presque jamais mentionnées, comme un nouvel interpréteur pour les pages Web écrites en JavaScript. Si Firefox 2.0 sort bien le 26 octobre prochain, comme tout le monde semble le penser, il emportera dans ses bagages la version 1.7 de l'interpréteur JavaScript maison, dont ce sera là le baptême du feu.


Pages d'écriture
Les techniques de programmation en matière d'écriture de pages Web ont bien évolué, au fil des ans. Je vous la fait en mode raccourci : on a connu la mode du tout-HTML, puis l'avènement du PHP, avec la montée en puissance de l'open-source, avant de voir déferler la vague AJAX, une méthode d'écriture hybride qui combine les avantages (et les inconvénients) des langages JavaScript et XML, sans oublier le Flash. Dans le cas d'AJAX (Asynchronous JavaScript And XML), le fait que le traitement des différents éléments  constitutifs de la page se fasse de manière asynchrone (au rafraîchissement d'une page, par exemple, les cadres non modifiés demeurent, tandis que changent ceux auxquels l'internaute a apporté une modification, en saisissant par exemple un identifiant et un mot de passe) en a fait un outil de choix pour les développeurs de sites Web, car il impose moins de contraintes au navigateur lors du rendu, et au serveur lors du traitement. Cette technique n'est pas parfaite—aucune ne l'est vraiment—mais les programmeurs l'apprécient, et l'ont popularisée, au point que les sites qui n'y font pas appel se comptent désormais sur les doigts de la main d'un lémurien. Devant cette affluence, les outils existants de décodage de ces pages hybrides avaient atteint leurs limites, et Mozilla a dû travailler à l'amélioration de son interpréteur JavaScript. A tel point que certains n'hésitent pas à affirmer que les navigateurs Web de la famille pourront bientôt se passer d'un moteur de rendu graphique basé sur le langage HTML. Il faut dire que nombreux sont les membres de l'équipe Netscape/JavaScript originelle à avoir rejoint les rangs de Mozilla, à commencer par le père historique du JavaScript, Brendan Eich, qui est depuis devenu le responsable technique en chef de l'éditeur open-source.


Polyvalence
De son côté, Schroepfer relève que si Firefox est autant apprécié des développeurs de sites Web, c'est justement en raison de tout ce qui précède : sa souplesse, la justesse de son rendu, et la possibilité, non seulement de lire le code inséré dans les pages Web telles qu'elles ont été écrites, mais également d'agir côté client (le navigateur, par opposition au serveur, fournisseur de contenu dans ce cas), afin d'exécuter un code compris, par exemple, dans une extension au navigateur lui-même. Les extensions, ces petits programmes annexes bien pratiques, ont eux aussi participé à l'essor de Firefox, en lui donnant des fonctionnalités que ses géniteurs lui avaient refusé. Pour rester à la page, Firefox devait changer certaines pièces de son moteur, dont l'interpréteur JavaScript ; ce sera chose faite à la fin du mois.

Comme tous les langages informatiques, hormis peut-être ceux qui ont cessé d'être développés, JavaScript continue d'évoluer. On a prêté à ce langage bien des maux, après l'avoir encensé à sa sortie, en 1995, et force est de reconnaître que bon nombre des failles relevées dans les différents navigateurs Web du commerce ont un lien direct avec lui. Il a tout de même gagné de nouvelles fonctionnalités, au fil du temps, au point de concurrencer dans le coeur des développeurs d'autres langages à la mode, comme Python, ou Ruby. Ces derniers, orienté-objet comme JavaScript, ont pour eux leur légèreté et leur adaptabilité, mais en terme de programmation, tout le monde a raison, et personne n'a tort : si l'on y met tout son coeur, on peut faire évoluer un langage jusqu'à lui donner des capacités insoupçonnées à sa naissance. JavaScript n'échappe pas à la règle, et il a pour lui de pouvoir compter sur une colonie de développeurs motivés... et une large base de clientèle. De fait, d'accessoire nécessaire à un bon rendu des pages Web, l'interpréteur JavaScript prend dans la nouvelle version de Firefox un rôle central. Il était donc temps de le faire évoluer en profondeur, d'autant que Firefox ne se destine pas seulement au grand public ; il veut séduire encore plus de développeurs. La version 1.7 de l'interpréteur JavaScript devrait encore renforcer sa popularité.


Le dynamisme à l'honneur
Ceux qui manient au quotidien du JavaScript verront d'emblée les deux principales améliorations introduites avec l'interpréteur 1.7, les générateurs et les itérateurs. En temps normal, une page Web écrite en JavaScript, si elle se veut interactive, doit accepter de sortir de ses paramètres d'affichage lorsque l'internaute, par exemple, clique sur un lien ou remplit un formulaire. Si le code n'inclut pas cette éventualité, le lien demeurera inerte, et la page inchangée. Il est donc nécessaire d'introduire une fonction qui amène la page à un niveau supérieur ou inférieur. C'est facile à faire, mais suppose que l'intégralité de la page soit modifiée. Vous cliquez sur un lien, et au lieu de changer la physionomie de la partie active de la page (le cadre dans lequel vous avez cliqué, la portion de formulaire que vous êtes en train de remplir, etc...), c'est toute la page qui disparaît, pour réapparaître modifiée. Etant donné que nous avons affaire là à une nouvelle page Web, elle n'est pas encore mise en cache, et son affichage peut donc prendre "un certain temps". Avec les nouveaux itérateurs et générateurs introduits dans l'interpréteur JavaScript 1.7, chaque cadre actif devient un objet à part entière, indépendant des autres objets que renferme la page. On peut également introduire des limites à un objet qui ne concerneront pas les autres objets d'une même page. Ainsi, il devient possible de rafraîchir à partir du cache un certain nombre de cadres, même si le remplissage de l'un d'entre eux à été empêché par une erreur de saisie de la part de l'internaute. Exemple : vous réservez votre billet de train en ligne, et au moment de valider votre numéro de carte bancaire, vous vous trompez dans les chiffres ; avec les nouvelles fonctions évoquées plus haut, la seule portion de l'écran qui sera remise à zéro pour permettre une nouvelle saisie sera la partie où se situe l'erreur. Le rechargement intégral d'une page vierge de vos informations précédentes ne sera plus nécessaire, d'où un important gain de temps pour tout le monde : sur certains sites surchargés, tout délai dans la validation des formulaires en ligne par tel ou tel internaute maladroit entraîne un ralentissement, qui se répercute sur les autres usagers. En rafraîchissant les pages de manière sélective, on soulage les serveurs et on rassure en même temps l'usager. Tout bénef pour tout le monde, en somme...

JavaScript 1.7 n'est qu'une étape dans la dernière ligne droite, celle qui nous sépare de la sortie de la version 2.0, laquelle, si elle est validée par l'organisme de certification ECMA (ce dernier l'évalue depuis 2003), offrira en outre une interaction directe avec l'outil d'écriture de script ActionScript, imaginé par Macromedia avant son rachat par Adobe, au printemps dernier. En version 1.7 déjà, JavaScript ajoute à sa palette des fonctions auxquelles les dévelopeurs en Python ou en Perl sont habitués, et qui rendent l'écriture des pages Web à la fois plus intuitive et plus rapide. JavaScript n'est pas mort, malgré son grand âge.

Qu'on se le dise...