Au-delà de Javascript – Synthèse

Cet article synthétise les travaux de veille technologique entrepris autour du thème des nouvelles technologies alternatives à Javascript.

 Javascript : vue d’ensemble, limites et défauts

Aujourd’hui, la technologie Javascript jouit d’une grande popularité dans les développements d’applications web modernes : non seulement le langage lui-même, qui s’est imposé comme le langage de script de référence pour le web, mais aussi les nombreux outils basés sur Javascript (bibliothèques, frameworks, méthodes AJAX). Javascript offre un moyen simple d’augmenter le dynamisme et l’interactivité d’un site. De plus, sa communauté est active, comme en témoigne d’ailleurs le nombre important de bibliothèques et frameworks qui étendent les possibilités du langage.

Cependant, Javascript souffre de défauts non négligeables. Par exemple, les mécanismes d’héritage, basés sur les chaînes de prototypes et non les classes, sont assez laborieux. Le langage permet une grande permissivité et réserve de nombreuses surprises, notamment en ce qui concerne la déclaration des variables et la gestion de leurs types. Ce qui peut rendre les tâches de déboggage très délicates. La syntaxe de Javascript, inspirée des langages tels que C ou Java, n’est pas adaptée à sa vraie nature, qui se rapproche davantage de langages fonctionnels comme Lisp ou Scheme, selon Douglas Crockford. De plus, le comité ECMA, qui pilote la conception du langage, a déjà publié de nombreuses versions de Javascript, ce qui entretient une certaine confusion. D’ailleurs, malgré de nets progrès ces dernières années, les principaux navigateurs web présents sur le marché ont des implémentations différentes du langage (browser quirks), ce qui complexifie les développements. Enfin, Javascript pâtit de mauvaises pratiques, passées ou toujours en vigueur : récupération et exploitation abusives de données personnelles, surgissement de fenêtres intempestives, surcharge des capacités de calcul ou des temps de chargement côté client et détériotation de l’expérience utilisateur pour les non-voyants.

Technologies alternatives à Javascript

Il existe de nombreuses bibliothèques et de nombreux frameworks basés sur Javascript, principalement dédiés aux développements d’applications web riches (RIA), comme en témoigne le site du projet TodoMVC. Il existe également des langages alternatifs qui, tout en conservant une syntaxe relativement proche de Javascript, entendent le dépasser. Ces langages sont souvent compilables en Javascript, à l’image de TypeScript, CoffeeScript et Dart.

CoffeeScript

CoffeeScript est un langage de programmation issu d’un projet open source, à typage dynamique faible (comme Javascript) et multi-paradigme. Il est pensé comme une tentative de révéler le meilleur de Javascript le plus simplement possible. Il permet d’utiliser toutes les bibliothèques Javascript existantes. Bien qu’il n’apporte ni méthode ni objet nouveau, CoffeeScript est tout de même pensé pour remédier aux défauts de syntaxe de Javascript et le rendre “plus simple et plus sûr”.

CoffeeScript apporte aussi des fonctionnalités nouvelles inspirées de langages comme Python, Ruby ou Haskell : sucre syntaxique, filtrage par motif ou listes en compréhension.

CoffeeScript propose un code qui se veut élégant mais qui n’est pas pour autant plus facile à lire ou à écrire car il se destine à des développeurs familiers de Javascript et ayant une certaine connaissance du langage Ruby. De plus, CoffeeScript est basé sur la programmation fonctionnelle et semble moins adapté à la programmation web orientée objet qu’un langage comme Dart.

Dart

En 2011, Google a dévoilé le projet Dart : un langage largement basé sur Javascript fourni avec différents outils de développement, dont un EDI, un SDK et un compilateur vers JavaScript. Il existe une différence majeure entre CoffeeScript et Dart : tandis que le premier tend à promouvoir les meilleurs aspects du Javascript, le second entend le remplacer.

Zoom sur Dart

Motivation

Dart est né à partir du constat, fait par Google, que les problèmes inhérents à la nature de Javascript ne peuvent être résolus en le faisant évoluer. Le projet Dart vise donc à créer un langage facile à apprendre, plus performant et prédictible, offrant plus de sécurité et capable d’être utilisé aussi bien sur de petits projets que sur de larges applications.

Le langage Dart

Afin de rendre le projet attrayant et de faciliter la prise en main du langage, Dart s’inspire de concepts familiers aux développeurs Javascript, C# et Java. En fait, Dart regroupe des concepts empruntés à de nombreux langages : la syntaxe de Javascript, les types optionnels à la manière de Strongtalk, les objets sur le modèle de Smalltalk, certains concepts tirés de C# et un mécanisme de parallélisme inspiré par Erlang.

De manière générale, Dart est un langage orienté objet à héritage simple, basé sur les classes, qui se veut moins permissif que Javascript et sans surprise. D’autre part, Dart apporte ou revoie des fonctionnalités par rapport à des langages comme Javascript ou C# : portée lexicale, types statiques optionels, types génériques covariants, constructeurs nommés, appels en cascade, capture des variables de boucle (closures), absence de conversions implicites, etc. Enfin, toutes les bibliothèques et API Javascript sont utilisables en Dart.

Les outils de développement Dart

Le projet Dart propose également un panel d’outils destinés à former une plateforme complète pour les développements web : un EDI, un SDK, un navigateur web dédié, un compilateur Dart vers Javascript, une machine virtuelle standalone, un gestionnaire de paquets et des mécanismes de déploiement et d’optimisation du code source.

Évolutions du projet

Les développements autour du projet Dart se poursuivent. En effet, depuis 2011, Dart a connu deux mises à jour importantes : Dart’s Milestone 2 et 3. Sortie en décembre 2012, la Dart M2 apporte une large documentation avec tutoriels ainsi que des améliorations majeures de certaines fonctionnalités : réduction importante de la taille du code généré par le compilateur vers Javascript, amélioration des bibliothèques et du gestionnaire de paquets et support du SSL par la machine virtuelle. En février 2013 est parue la Dart M3, principalement consacrée à la programmation asynchrone et à la gestion des événements (nouvelle API dédiée et améliorations de l’existant).

Les critiques

Aujourd’hui, le développement de Dart continue mais il est trop tôt pour avoir une idée de la réussite de cet ambitieux projet. A cet égard, Dart est l’objet de nombreuses critiques, notamment en ce qu’il entend constituer un énième standard de langage web. Une autre critique visant le projet Dart concerne sa conception en dehors d’un consensus, à l’encontre du développement de l’open-web. Certains développeurs craignent une forme d’appropriation de la technologie Javascript par Google.

Plan du rapport

En conclusion de ces travaux de veille technologique, nous publierons un rapport PDF qui reprendra tous les points abordés précédemment. Voici un aperçu de son plan :

Le Javascript

Origine et nature du langage

Limites et défauts

Mauvaise conception du langage
Disparités des versions et des implémentations
Mauvaises pratiques
Multiplication des extensions

Technologies alternatives

Vue d’ensemble

Le projet CoffeeScript

Le projet Dart

Zoom sur le projet Dart

Raison d’être

Le langage Dart

Les outils de développement Dart

Évolutions et perspectives du projet

Critiques

Conclusion

 

Licence Creative Commons
Cet article est mis à disposition selon les termes de la Licence Creative Commons Attribution 3.0 France.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>