samedi, janvier 22, 2011

La Révélation Javascripturaire


Le phénomène de la « Mode » fleurit dans la période dans l'entre-deux-guerres, marquant durablement l'évolution de la haute couture parisienne. Dans la ganterie, industrie encore provinciale au début du siècle dernier — comme à Grenoble ou à Millau —, les maisons Perrin, Neyret, Reynier s'installèrent à Paris pour y lancer « le gant à la mode », le gant modèle, complément indispensable à la grande couture. Neyret, notamment, érigeait au fond d'un XIIIe arrondissement encore ouvrier, mais récemment arraché aux communes de Gentilly et d'Ivry, une nouvelle manufacture moderniste. Le bâtiment fut cédé en 1934 à l'École Supérieure des Postes & Télégraphes (ESPT), création d'une Troisième République toute acquise au progrès scientifique de la France et saisie par l'essor du télégraphe électrique — l'Internet de l'époque. (L'école s'appelait à l'origine l'École Supérieure de Télégraphie puis devint l'École Professionnelle Supérieure des Postes & Télégraphes.) Devenue, au gré des orientations politiques et des affirmations progressistes du patriotisme scientifique, l'École nationale supérieure des postes, télégraphes et téléphones, dont la scission pendant la guerre donna naissance à l'École nationale supérieure des Télécommunications — l'une de mes almae matres — puis, après la libéralisation du marché des télécommunications, au Groupe des écoles des télécommunications (GET) sous le nom Telecom Paris, eux-mêmes à nouveau rebaptisés en 2008 Institut Télécom et Télécom ParisTech.



Ainsi donc il était parfaitement naturel que, le 20 janvier dernier, dans le cadre du programme Ambition PME, le Groupe Thématique Logiciel libre du Pôle de compétitivité Systematic eût choisi cet auguste établissement pour organiser un événement sur le thème « Javascript en entreprise ». Et il est effectivement question de « Mode » et de nouvelles technologies : en 2010, Javascript est passé devant Perl et Python comme langage de programmation le plus fréquemment utilisé sur le dépôt public GitHub, en seconde place derrière le nippon Ruby. Il y a donc un véritable effet de mode autour de Javascript, dont l'histoire tourmentée reflète les atermoiements et les intérêts industriels qui sourdent des méandres de l'évolution des navigateurs Web depuis l'idée originale de Brendan Eich dans Netscape 2.0 en 1995.



Dénigré à ses modestes débuts, entaché qu'il était aux yeux des puristes de l'amateurisme prêté aux auteurs de pages Web — comparés à l'élite de la grande prêtrise des real programmerspeu notèrent à quel point Javascript était adapté à la programmation fonctionnelle. (Les LISPeurs aux tempes grisonnantes dont l'agilité parenthétique sclérosait lentement dans le désoeuvrement des années 1990 ne pouvaient manquer de s'en apercevoir.) On le crut fourvoyé dans le marais bureaucratique et doctrinaire de la standardisation à l'ECMA ; son retour à la scène n'en fut que plus triomphal dans les orchestrations Ajax et jQuery qui ont largement contribué à son succès actuel.



Du coup, Javascript intéresse, passionne, déclenche des vocations, entretient d'ardentes polémiques et suscite de nombreuses initiatives comme on pouvait le sentir durant cette longue après-midi dans l'amphi B310 bondé comme rarement — en tout cas certainement plus que lorsque j'y usais mes fonds de pantalon... Il y avait longtemps que cette rafraîchissante excitation avait déserté les plus traditionnels user groups ; ce courant d'air frais est bienvenu et mérite d'être salué !




Cloud Computing




Ce panorama de l'examen de la maturité de Javascript pour les applications dites d'entreprise doit commencer par les remarquables progrès des interpréteurs (et des compilateurs) auxquels la fondation Mozilla et Google ont largement contribués. SpiderMonkey utilisé par Firefox, écrit en C, et Rhino pour la machine virtuelle Java sortent des laboratoires de Mozilla. V8 écrit en C++ par Google est utilisé dans Chrome et dans Node.js sur lequel nous reviendrons. Il y a même Narcissus un interpréteur de Javascript (méta-circulaire) écrit en Javascript. Au registre de l'amélioration des performances, les compilateurs JIT (Just In Time) traduisent le code Javascript à la volée en code natif comme TraceMonkey ou Tamarin, une contribution d'Adobe à la fondation Mozilla. Ces plateformes intégrées aux navigateurs permettent désormais de développer de véritables applications sur l'infrastructure des pages Web.



Cette intégration aux navigateurs a rapidement donné lieu à une prolifération de bibliothèques, toolkits et frameworks Javascript pour assister le développeur dans la construction d'applications Web du type interface utilisateur graphique pour l'entreprise. Parmi les plus employés et originaux citons jQuery, Dojo, Prototype, Ext.js, MooTools, Yahoo! YUI, Google GWT, DreamFace Interactive. À l'occasion de la conférence, Sergey Ilinksky présentait son toolkit Open Source Ample SDK qui illustrait parfaitement ce courant des activités de développement Javascript. En conséquence, Javascript dans le navigateur devient une option de plus en plus professionnelle pour l'interface utilisateur des applications cloud computing. D'ailleurs de nombreux clodoaldiens d'obédience libre étaient présents dont les éminents organisateurs, les normalo-clodoaldiens primi inter pares Jean-Paul Smets (Nexedi et Free Cloud Alliance) et Stéfane Fermigier (Nuxeo et OSS4CLOUD).



Mais pour le cloud computing, 2011 pourrait être l'année de Javascript sur les serveurs, libéré du cadre client du navigateur Web. Mentionnons quelques projets en plein essor qui visent à donner à Javascript ses lettres de noblesse également sur les serveurs pour les applications d'entreprises. Reprenant V8, le projet Node.js est au coeur d'une communauté croissante qui connaît ces derniers mois une activité frénétique. Du simpliste mais complet serveur Web en six lignes — en fait, une suffirait — de Javascript :




var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');


aux applications les plus complexes, Node.js promet de devenir la plateforme de développement de services et d'applications Web du côté du serveur. RingoJS, basé sur Rhino, et Narwhal sont également des plateformes visant les développements sur le serveur.



Du côté des données, même antienne : MongoDB et CouchDB deux superbes exemples de bases de données NoSQL utilisent déjà Javascript, et CouchDB intensivement, avec des profils parfaitement adaptés au cloud computing.




Les Applications Mobiles




Second grand domaine d'applications Javascript lié à l'entreprise : les apps mobiles pour les martphones. Stéfane Fermigier dressait un tableau comparatif du développement natif et de l'emploi de Javascript avec les environnements modernes comme Titanium d'Apcelerator et PhoneGap de Nitobi. Javascript promet, comme aux temps protohistoriques de la confrontation héroïque des GUIs (vous rappelez-vous encore les acrimonieuses escarmouches Motif vs. NeWS vs. Presentation Manager vs. NeXTSTEP vs. X-Window vs Windows et j'en oublie certainement !), de mitiger le risque de fragmentation du développement d'applications mobiles.



On peut d'ailleurs également citer Wink de la fondation Dojo, jqTouch un plugin jQuery orienté navigateurs Webkit, XUI ou encore Sencha Touch : l'outillage devient pléthorique.




Le Développement en Javascript




Le signe peut-être le plus probant de la maturité croissante de Javascript pour les applications d'entreprise est sans doute à lire dans l'apparition d'une instrumentation et d'un appareillage conséquent du cycle de développement et de déploiement des applications.



À la conférence, le buzz était créé lors de la présentation par Ajax.org de son IDE complet pour le développement d'applications Javascript, Cloud0 IDE, lui-même en codé en Javascript insistait l'orateur. Embarquant Node.js c'est bien plus qu'un éditeur extensible de code optimisé pour Javascript — qui, en cela, fait irrésistiblement penser à l'éblouissante architecture de l'immarcescible Emacs (une curiosité : Ymacs !) — c'est une véritable plateforme de développement, de déboguage et de configuration d'applications Javascript. À l'occasion de cette conférence, Ajax.org annonçait que l'éditeur de Cloud9 IDE, le projet Ace, fusionnait avec le projet expérimental BeSpin de Mozilla qui, lancé en 2008, puis rebaptisé SkyWriter pour l'habiller aux couleurs du cloud computing cherchait encore sa voie. De même, pour les applications mobiles, signalons l'acquisition, la semaine passée, d'Aptana par Apcelertor qui acquiert ainsi un IDE complet.



On vit également Daniel Glazman, récemment primé à l'édition 2010 des Open Innovation Awards, présenter BlueGriffon, un éditeur complet HTML5 et CSS3, une cathédrale de 150.000 lignes de source Javascript élevée par un génial artisan sur les fondements XULRunner de Mozilla. Somptueux et exemplaire !



Mais il y a déjà bien plus au registre de l'instrumentation ; qu'on en juge par les sujets abordés :




  • Node.js dispose de son dépôt public et d'une gestion de modules, npm, comptant d'innombrables projets, extensions et autres composants logiciels Javascript prêts à l'emploi ;


  • les outils de test professionnels sont légion, comme Patr, Vows ou Zombie.js ;


  • la gestion du dessin vectoriel avec SVG-edit un éditeur complet pour SVG en Javascript ;


  • au-delà de MongoDB et de CouchDB, on ne manque d'aucun driver pour les bases de données MySQL ou NoSQL comme Redis — voire d'une prometteuse réimplémentation de Redis en Javascript : Awesome ;


  • des middlewares orienté messages comme Tungunska sont disponibles ;


  • les prémices d'un environnement de runtime interopérable émerge actuellement, avec un jeu complet de bibliothèques : CommonJS  déjà présent dans plusieurs implémentations ;


  • sécurité et authentification pour les applications Javascript ne sont pas laissées pour compte. C'est le sujet abordé par Giulio Cesare avec ClipperZ et par Ori Pekelman qui parlait des serveurs OAuth de AF83 ;


  • au plan des progiciels, notons les premières applications collaboratives et bureautique ouvertes comme UNG Docs de la Free Cloud Alliance qui étaient présentées par Jean-Paul Smets et Gabriel Monnerat ;


  • enfin, les options d'hébergement cloud des applications Javascript se multiplient, simplifiant le déploiement de services et d'applications Web.



Bref une communauté croissante de développeurs s'active à faire naître un écosystème complet favorisant l'adoption et la généralisation de Javascript dans l'informatique d'entreprise. Cet épanouissement n'était certainement pas étranger à la présence discrète mais attentive dans la salle des meilleurs architectes IT de Cap Gemini et de Sage, exfiltrés en catimini de leurs DSI pour évaluer les best practices du Javascript moderne.




Des avancées théoriques




Javascript devient, semble-t-il, aussi un outil théorique dans l'étude des langages de programmation et du parallélisme. Ses caractères de langage de programmation fonctionnelle et d'asynchronisme en font une matière première adaptée à l'expérimentation de nouvelles idées et à l'exploration de nouvelles notions. Quelques initiatives, en vrac, évoquées lors de cette réunion :




  • Mentionné à la conférence, le projet Resilience est lié à l'étude théorique de la coordination décentralisée dans les smart grids.


  • De nombreux travaux sur la gestion du parallélisme dans Javascript remettent au goût du jour les travaux de recherche antérieurs sur les langages de programmation fonctionnelle. Citons, par exemple, jwacs, Narrative Javascript, StratifiedJS, ou encore Streamline.js, qui visent à simplifier la programmation asynchrone pour le développeur quelque peu cristallisé dans ses habitudes séquentielles et synchrones, tout en s'appuyant sur des bases théoriques solides de gestion disciplinée de continuations et de coroutines. (Ces abstractions font l'objet de recherches actives dans d'autres langages de programmation comme Scala, Ruby, Scheme bien sûr, et haskell.)


  • Des variations ou des recherches sur le langage Javascript lui-même, au-delà des évolutions prévues par l'ECMA et Brendan Eich, comme la syntaxe de CoffeeScript, ou la génération de code de Emscripten qui compile le bitcode LLVM (produit par tout front-end LLVM comme Clang) en Javascript. Mentionnons le Closure Compiler qui optimise le code source Javascript ainsi que le fait que les JIT Javascript utilisent les derniers développement de la théorie de compilateurs (comme les arbres de traces).



Un écosystème en pleine ébullition, théorique et pratique, des outils et instruments de plus en plus nombreux, une communauté d'utilisateurs et de développeurs qui s'aguerrit de jour en jour, une atmosphère Open Source pour la grande majorité des projets, 2011 promet décidément d'être une année charnière pour le développement de Javascript.



ShareThis