Le titre peut vous laisser songeur, je comprends ! Mais l’intitulé de la prochaine keynote qui aura lieu lors de la conférence au GOTO Aarhus 2011, le lundi 10 octobre 2011 est très prometteur : « Dart, un nouveau langage de programmation pour la programmation Web structurée » (Dart, a new programming language for structured web programming, en anglais).
Alors concrètement pourquoi ce titre d’article ? C’est ce que je vais essayer de vous expliquer dans la suite de celui-ci. En tout état de cause, le monde entier sera en état d’alerte lorsque Google présentera un nouveau langage de programmation « Dart » lors de la conférence. Nous pourrons ainsi voir ce qu’est « Dart » et comment il est « relié » au JavaScript.
Une stratégie de Google pour remplacer le JavaScript ?
Toutes les citations mentionnées dans la suite de cet article proviennent d’un courrier électronique que Google a écrit en Novembre 2010. Il s’agit vraisemblablement d’une fuite en interne… Il résume une discussion interne entre différents membres de Google.
Selon l’auteur du mail, le langage JavaScript est devenu un véritable labyrinthe déroutant (confusing labyrinth, en anglais), les frameworks JavaScript et les modèles de conception utilisés par les développeurs freinent le développement des Google Web Apps à grande échelle, les défauts ralentissant le développement d’applications Web complexes. Aujourd’hui pas moins de vingt frameworks JavaScript différents sont disponibles, avec différentes caractéristiques et capacités.
Voici ce que l’on peut retenir du mail :
On November 10th and 11th, a number of Google teams representing a variety of viewpoints on client-side languages met to agree on a common vision for the future of Javascript.
Avec une vision commune, le but est de développer un nouveau langage de programmation appelé « Dash », qui va être renommé « Dart » par la suite.
The goal of the Dash effort is ultimately to replace JavaScript as the lingua franca of web development on the open web platform.
Afin de minimiser le risque d’échec, Google va user de précautions :
Javascript has fundamental flaws that cannot be fixed merely by evolving the language. We’ll adopt a two-pronged strategy for the future of Javascript:
- Harmony (low risk/low reward): continue working in conjunction with TC39 (the EcmaScript standards body) to evolve Javascript
- Dash (high risk/high reward): Develop a new language (called Dash) […]
J’ignore si le courriel est authentique, ou si Google répondait à une demande de commentaires au moment de la publication, mais le projet mené par Google semble ambitieux. Concrètement, « Dart » est destiné à maintenir la nature dynamique de JavaScript, mais avec un meilleur profil de performance, qui se prête mieux sur les grands projets.
« Dash » à l’origine de « Dart » !
Les objectifs de « Dart » cités depuis le mail sont les suivants :
- Performance – Dash is designed with performance characteristics in mind, so that it is possible to create VMs that do not have the performance problems that all EcmaScript VMs must have.
- Developer Usability – Dash is designed to keep the dynamic, easy-to-get-started, no-compile nature of Javascript that has made the web platform the clear winner for hobbyist developers.
- Ability to be Tooled – Dash is designed to be more easily tooled (e.g. with optional types) for large-scale projects that require code-comprehension features such as refactoring and finding callsites. Dash, however, does not require tooling to be effective–small-scale developers may still be satisfied with a text editor.
Plusieurs méthodes seront possibles afin d’utiliser Dart :
- Dedicated VM : as a substitute for JavaScript, in all browsers.
- Server : with the goal to enable “Google-scale” web applications where front end and back end are written in the same programming language.
- Cross-compiler : that compiles Dart to ECMAScript 3 on the fly, for compatibility with non-Dart browsers. Compare to Google Traceur [2] which compiles ECMAScript.next [1] to ECMAScript 3, in a similar manner.
À la fin du mail, la FAQ indique clairement que Google à l’intention de déployer « Dart » partout où ce sera possible (du moins dans le périmètre du Web). Elle précise également que Google s’attend à une lente migration de JavaScript vers « Dart ». Pour vous y aider, un outil d’aide à la migration sera mis à votre disposition, pour rester compatible avec les navigateurs qui ne le prendront pas en charge nativement :
The Dash Cross Compiler should be capable of taking typed Closure code (with some restrictions) and converting to Dash. Although the migration process won’t be fully automatic, it should make moving over to a Dash codebase somewhat easier.
Si on analyse bien la FAQ, on peut aussi apprendre que Google travaille sur un projet d’IDE sur le cloud, nommé Brightly :
Brightly will enable building any web application in V1 using today’s Javascript plus the additions in Harmony. As soon as it is ready, Brightly will support Dash as well. We expect that the more prescriptive development aspects of Brightly that will come on line in the future will be more Dash focused.
We expect Brightly itself to be the first application written in Dash.
Qu’est-ce que cela signifie ?
Comme l’indique la citation ci-dessus, Google est susceptible d’augmenter ses investissements sur le langage JavaScript, en maintenant une stratégie appelée « Harmony ». Celle-ci va avoir pour effet de continuer de travailler conjointement avec le corps de standardisation d’EcmaScript afin de faire évoluer le JavaScript.
Techniquement est-ce fiable ? Il est évident que les trois objectifs annoncés par Dart sont pas anodins. En effet, la capacité à être outillée, toolability comme l’indique Google, est un domaine dans lequel JavaScript a actuellement d’énormes lacunes, en particulier par rapport à Java. L’objectif de la convivialité garantie que le langage restera léger. Enfin, l’amélioration des performances est le point fort intéressant notamment pour les gros projets.
Si l’on en croit la liste des personnes qui ont rédigé le document, du beau monde a travaillé sur ce projet, ayant à la fois une expertise sur la conception d’un langage et également sur la compilation.
Who authored this document ?
Brad Abrams, Erik Arvidsson, Lars Bak, Darin Fisher, Dimitri Glazkov, Dan Grove, Peter Hallam, Bruce Johnson, Alex Komoroske, John Lenz, Kasper Lund, Mark Miller, Ivan Posva, Alex Russell, and Joel Webber, who collectively represent TC39 (the EcmaScript standards body), WebKit, Parkour, Brightly, JSPrime, JS++, Closure, JSCompiler, V8, Dash, Joy, and GWT, among others.
On peut citer par exemple, Gilad Bracha qui a beaucoup d’expérience dans la conception d’un langage, son travail sur Newspeak mais également sur la possibilité de plugger différents systèmes sont exemplaires. Newspeak est actuellement le meilleur langage sur lequel « Dart » peut s’appuyer. Son approche correspond fortement à la philosophie de « Dart », sur la convivialité développeur.
Ouvert ? Open Source ?
Google n’est pas réellement ouvert comme peut l’être la communauté JavaScript. Voici un tweet du créateur Brendan Eich affirmant ceci :
En effet, « Dart » est presque exclusif. Ce dernier n’est pas développé en Open Source et ne sera seulement montré au public une fois que son développement sera terminé. Brendan Eich appelle cela le « delayed-open ».
De plus, on peut également noter que tous les développeurs cités dans le mail travaillent pour Google. C’est une très bonne chose qu’il devienne ouvert et que les sources deviennent éventuellement Open Source, dont les deux contribueront à sa popularité. Mais il ne sera probablement jamais aussi ouvert que peut l’être JavaScript. Google n’a pas vraiment un passé glorieux dès lors qu’il faut rédiger des spécifications pour des services Open Source.
Tout le monde va l’adopter ?
Quelles sont les réelles perspectives pour l’adoption de « Dart » par les autres éditeurs de navigateur ? Son développement est principalement contrôlé par Google, on peut donc logiquement accorder une longueur d’avance de plus de deux ans pour le géant Américain.
Concrètement ce n’est donc pas très attrayant pour la concurrence…
Conclusion
Mark S Miller indique que « l’émergence de plateformes alternatives impérieuses, comme iOS signifie que la plateforme Web doit se montrer compétitive, non seulement sur le fond, mais aussi sur sa portée » et que le « JavaScript tel qu’il est aujourd’hui n’est pas une solution viable à long terme et quelque chose doit changer ».
L’objectif clairement annoncé de Google est donc de faire un « Javascript +1, purifié de toutes verrues » afin d‘accélérer le bouleversement du développement Web où règne une certaine stagnation.
Ce ne sera pas une tâche facile, comme le mail l’indique, « ce sera un effort difficile qui exige finesse et détermination, mais nous sommes engagés à faire tout notre possible pour l’aider à réussir ». Les éditeurs de navigateurs ainsi que les développeurs voudront-ils passer du temps à apprendre et implémenter un nouveau langage ? A moins que ce dernier ne devienne un standard du Web !
Nous en saurons plus dans les semaines à venir…
Êtes-vous prêt à développer en Dart ? Quel type de langage souhaitez-vous avoir ? Pensez-vous qu’il y a encore une place pour Google Dart dans les langages de programmation Web ?