samedi, novembre 18, 2006

Le réveil de JavaScript

La communauté JavaScript est particulièrement active ces derniers temps. Le succès du concept « Ajax », dans lequel le langage JavaScript joue un rôle prééminent, n'y est évidemment pas pour rien. Comme le rappelle Wikipedia, JavaScript a été développé par Brendan Eich, alors à Netscape, d'abord sous les noms de « Mocha » puis de « LiveScript » et enfin de JavaScript, à peu près au même moment où Netscape adoptait Java en décembre 1995. Malgré la similitude des noms, JavaScript n'a que peu à voir avec Java, si ce n'est peut-être dans la syntaxe, héritée dans les deux cas de celle du langage de programmation C. À ce sujet, je me souviens d'une présentation laborieuse de la version 2 de Netscape dans un amphi surchauffé du Tech Museum of Innovation de San Jose en 1996, dans laquelle régnait une confusion absolue entre applets Java, pages HTML et scripts LiveScript/JavaScript et leur association à LiveWire et LiveConnect ! (Pour ajouter à la confusion, le langage de script utilisé dans Internet Explorer est un dialecte très proche appelé JScript, une implémentation en propre de Microsoft.) Netscape soumit JavaScript à l'ECMA International - une émanation de l'European Computer Manufacturers Association, un organisme de standardisation d'origine européenne, créé en 1961 - afin de ratifier ses spécifications comme standard. La première édition de la norme ECMA-262 fut adoptée en 1997 et le langage normalisé s'appelle ECMAScript.

En dehors de son application traditionnelle pour l'animation de pages Web sur le poste client, JavaScript est également embarqué dans certains autres produits comme, en particulier, Adobe Acrobat et Adobe Reader et ceux de la fondation Mozilla (qui a elle-même hérité de beaucoup des développements de Netscape). La semaine dernière, Adobe et Mozilla ont annoncé la mise en commun de leurs travaux de développement de ces implémentations de la norme ECMAScript.

Pour Adobe, c'est une annonce importante puisque son langage ActionScript, dérivé de la norme ECMAScript mais recentré sur les notions de « film » et d'événements, est au coeur de Flash Player, récupéré dans l'acquisition de Macromedia - qui l'avait elle-même reçu dans l'acquisition de la jeune pousse FutureWave Software au début des années 1990. En le partageant avec la fondation Mozilla, ActionScript devient effectivement Open Source. L'objectif du projet, baptisé Tamarin, est d'implémenter la version finale du langage ECMAScript Edition 4 (ES4) qui sera utilisée dans SpiderMonkey, la prochaine génération de moteur JavaScript embarqué dans Firefox et dans les autres projets Mozilla. Annoncé conjointement par Adobe et la fondation Mozilla, Tamarin sera hébergé par Mozilla sous la même triple licence MPL/GPL/LGPL que les autres projets Mozilla. Le code continuera d'être utilisé par Adobe dans la machine virtuelle Action Script de son Flash Player. Pour Adobe, c'est une démarche de standardisation du langage qui le motive. Il ne s'agit en aucun cas de mettre tout Flash en Open Source, ActionScript n'est que le langage de script de Flash. A terme, il est probable que le Flash Player et le projet Apollo (client riche qui combine Flash et Acrobat) utiliseront un langage standard se rapprochant d'ECMASCript 4 et bénéficieront des développements de la communauté. Pour autant, ce n'est pas qu'un simple abandon du code source à la communauté, Adobe a déjà détaché 7 développeurs au projet dont le concepteur de la machine virtuelle.

Entre-temps, Brendan Eich, devenu CTO de Mozilla, et ses équipes n'étaient pas restés inactifs quoiqu'éloignés des feux de l'actualité depuis 1999 - la création de Mozilla avait été vécue par certains des employés de Netscape, vendu à l'encan, comme un renoncement aux ambitions originelles de « changer le monde » de la startup vedette rattrapée par Microsoft. En fait, il fallut beaucoup de travail et une dose massive de persévérance à la fondation pour sortir la version 1.0 de Mozilla en juin 2002, socle sur lequel les applications Firefox et Thunderbird sont basées. Le succès qu'a connu Firefox, en particulier, a redonné esprit de conquête et lettres de noblesse à l'équipe. Avec une nouvelle vigueur, Brendan Eich lance aujourd'hui Mozilla 2.0, un effort de mise à jour majeur de la base de code Mozilla, avec en vue une échéance de livraison en 2008.

Dans Mozilla 2.O, on devrait trouver une nouvelle machine virtuelle JavaScript, offrant une forme de compilation au vol (Just In Time ou JIT, comme celle que l'on emploie pour le code Java) et surtout conforme à la nouvelle norme très attendue d'ECMA International, ES4 - aussi connue sous le nom JavaScript 2.0. Au menu, un ramasse-miettes, une accélération des appels de méthodes et une sécurité renforcée. Nouveau coup d'accélérateur à Firefox et à Ajax en prévision !

JavaScript 2.0 est encore l'objet de débats animés dans la communauté. Les appels à la modération et à ne rien changer dans les spécifications, compte tenu du nombre de pages Web saupoudrées de scripts 1.0, se succèdent aux mots d'ordres révolutionnaires cherchant à mettre radicalement fin à toutes les « faiblesses », avérées ou non, du langage. Aujourd'hui, les révolutionnaires auraient plutôt le dessus et la nouvelle norme s'éloignera, en plusieurs endroits très visiblement, de la norme actuelle. Elle nous promet un nouveau système de types plus strict (avec classes et interfaces en plus des types dynamiques caractéristiques de JavaScript), un mécanisme de « packages » pour des applications à plus grande échelle, des nouvelles constructions (blocs, générateurs, itérateurs à la Python...) toutes nouveautés envisagées comme essentielles pour le succès de la prochaine étape de développement du Web jusqu'en 2010. (Pour les curieux de technologie, voir la présentation de Brendan Eich le printemps dernier sur JS2 à http://developer.mozilla.org/presentations/xtech2006/javascript/)

Cette évolution de la norme est à mettre en parallèle avec celle de XBL (XML Binding Language) au W3C, une spécification qui décrit comment associer des événements et des comportements à des éléments XML. Avec XBL on peut, par exemple, changer au vol l'ordre dans lequel est présenté le contenu des pages HTML ou encore associer aux différents constituants d'une page les scripts pour gérer les interactions avec les utilisateurs. La combinaison de JavaScript 2.0 et de XBL2 transformera alors le navigateur en véritable serveur d'application côté client. C'est un des objectifs implicites de la fondation Mozilla dans la nouvelle aventure qu'elle entame.

Pour conclure, notons que JavaScript a essaimé hors du navigateur client depuis 1996. Il existe en effet des implémentations dites « server-side » de JavaScript qui peuvent être utilisées pour des programmes généraux, sans lien avec le Web. En plus de SpiderMonkey, une implémentation en C, Mozilla poursuit également le développement de Rhino, une implémentation en Java du langage JavaScript. Ces moteurs sont la base d'outils atypiques comme Resin Servlet Runner, dans lequel les pages JSP sont remplacées par des pages JavaScript, et comme ces serveurs Web tels Rhinola, Helma, Phobos de Sun, Whitebeam et d'autres où les scripts JavaScript sont exécutables sur le serveur avant la transmission de la page au navigateur. Pour les a« accros » il est donc possible de développer ses applications Web en tout-JavaScript, une pierre dans le jardin de Ruby et Ruby On Rails ?

ShareThis