Google revoie ses ambitions à la baisse pour Dart
ven, 27/03/2015 - 15:18
Dart devait être le langage miracle du web. Une alternative à JavaScript et un remède à ses défauts. Quand Google a lancé Dart, l'entreprise comptait bien en faire le remplaçant et successeur de JavaScript, et apporter la programmation Web structurée -Mountain View dixit - incontournable pour les gros projets.
Incontestablement Dart présente des qualités techniques. Mais le problème est que pour être utilisé, il faut qu'il soit interprété dans une VM. Ce qui revient à dire que les éditeurs de navigateurs acceptent d'implémenter celle-ci dans leurs produits. Ce qui n'a pas été le cas.
Seul Google a implémenté cette VM dans son navigateur Chrome. Et encore pas dans la version grand public, mais dans la version développeur seulement. Devant ce manque de succès, Google revoit ses ambitions à la baisse pour Dart. Dans un billet paradoxalement intitulé 'Dart pour tout le Web' Google annonce renoncer à Dart dans les navigateurs Web, même pour le navigateur Chrome.
Après un passage convenu sur les retours d'expériences positifs des utilisateurs de Dart, le billet nous apprend que désormais, les développeurs souhaitant une meilleure intégration avec JavaScript, ainsi que des moyens pour écrire, débogueur et optimiser les applications sur les navigateurs, Google renonce à intégrer la Dart VM dans le navigateur Chrome.
Au lieu de cela, Google va continuer de travailler sur son compilateur dart2js. Celui-ci permet de convertir du code Dart en JavaScript optimisé, et aussi en JavaScript plus sûr, en vertu des avantages de Dart utilisé en amont.
Dart devenant un simple compilateur vers JavaScript, ceci étant dit non péjorativement, car dart2js est indéniablement un outil intéressant, Dart devient au final JavaScript, donc un langage pour tout le Web.
Beau tour de passe-passe pour des ambitions revues à la baisse :-)
Commentaires
Dart est un langage interressant en soit, surtout si on le compare à Javascript. Il support en effet les classes, les types, les enums, les generics, les metadata, etc...
Malheureusement il souffre de nombreux defauts qui le rendent beaucoup pertinent que d'autres solutions comme Haxe ou Typescript. Dart2JS dispose d'un Dead Code Eliminator qu'on en peut pas désactiver. Impossible donc de l'utiliser pour ecrire une librairie ou une api. Ensuite interragir avec avec d'autres librairies JS nécéssite l'usage de JS-interop qui alourdi conciderablement le poid du js produit.Il est bon de noter que Google n'a pas choisi Dart pour développer AngularJS 2 mais TypeScript.
Enfin les performances de Dart-JS ne sont pas formidable et dautres techonologies sont bien plus efficaces : http://www.infognition.com/blog/2014/comparing_flash_haxe_dart_asmjs_and_cpp.html
J'ai donc du mal à croire en l'avenir de Dart pour le web.