L’avenir du JavaScript, jetez-y un œil dès aujourd’hui !

On sait que Google aime introduire en amont et le plus rapidement possible les nouveautés du Web, plus particulièrement dans son navigateur Web, Google Chrome. En effet, si l’on compare le soutien d’HTML5, on peut dire que Chrome 16 est largement en tête devant Firefox 10. Idem pour CSS3. Mais qu’en est-il pour le JavaScript ?

Et bien, pour répondre à cette question quoi de mieux que de mettre en œuvre les futures fonctionnalités de JavaScript ? C’est en tout cas ce que l’équipe de Chrome est en train de faire. En effet, dans un article relevé sur le blog officiel du navigateur, on apprend que les équipes de Chrome commencent donc à intégrer les nouvelles fonctionnalités du langage JavaScript. Celles-ci sont liées au travail du comité de l’ECMA (European association for standardizing information and communication systems), qui travaille sur la conception de la prochaine version de JavaScript, également connue sous le nom de « Harmony ».
Selon toute vraisemblance, Harmony est attendue pour la fin de l’année prochaine, et devrait être plus qu’une mise à niveau, car elle va être la plus complète dans l’histoire du langage.

Ainsi, vous pouvez d’ors-et-déjà essayer certaines d’entre elles dès aujourd’hui, et ce en téléchargeant la dernière version de la branche dev du navigateur. De plus, vous devrez l’activer. Pour cela, allez sur la page chrome://flags, et activez l’option « Experimental JavaScript features ».

Voici un résumé de ce que vous retrouver :

  • Lexical scoping : Adieu le traditionnel var. En effet, désormais il fait place à la variable let, complétée par const. L’utilisation de ces variables est d’éliminer les sources communes d’erreurs et de comportements bizarres. L’instruction let fournit une portée locale pour les variables, constantes et fonctions. Elle fonctionne en liant un ensemble de variables à la portée lexicale d’un seul bloc de code. La valeur de terminaison de l’instruction let est celle du bloc
  • Collections : Les collections maps et sets sont vous rendre la vie plus facile. N’importe quelle valeur peut être utilisée comme une clé ou un élément, incluant également les objets. Pas de surprise donc, il n’y a plus besoin d’abuser des objets comme de dictionnaire
  • Weak maps : Un type particulier de collection (map) a été intégré, qui permet au garbage collector, récupérateur de mémoire en français, de déterminer si une clé n’est plus accessible, de sorte que la paire de clé-valeur soit retirée automatiquement de la collection. Cela va éviter les fuites mémoires, mais également soulager notre travail quotidien !
  • Proxies : Enfin, vous allez pouvoir utiliser un proxy, qui va simuler un objet ou une fonction JavaScript, dont vous pourrez le/la personnaliser à votre bon vouloir. Il s’agit d’une fonctionnalité extrêmement puissante, qui comme l’indique l’article, pourra être utilisée comme interfaces ou abstractions avancées

Bien entendu, il ne s’agit que de la première étape de l’intégration de ces nouveautés, et l’équipe de Chrome assure qu’ils vont continuer à travailler sur celle-ci. D’ailleurs, de nombreuses propositions sont en cours de débat sur le projet Harmony, ce qui ne facilite pas le déploiement des équipes de Google/

Avez-vous testé ces fonctionnalités ? Que pensez-vous d’Harmony ? Va t-il changer notre façon de programmer en JavaScript ?

  • Thomas Despoix

    Si le bloc scope binding offert par let est une bonne idée, la documentation/justification n’est vraiment pas claire pour le néophite. Pire, on ne sait pas si : if (b) { var x = 9; } sera toujours légal! J’imagine que oui pour la rétrocompatibilité…

    Concernant la gestion des collections, on se rapproche des enumérations a-la Prototype.js et de leur équivalent chez jQuery.

    En tout cas, c’est une bonne chose de voir que ce langage d’avenir évolue !

    Pour info :
    https://www.ohloh.net/languages/compare?measure=commits&percent=true&l0=c&l1=javascript&l2=php&l3=java&l4=csharp&l5=cpp&l6=-1&commit=Update

  • Fabien Ménager

    « var » sera toujours valable, ça reste quand même du Javascript ;)
    Pour les collections, c’est beaucoup mieux que les hash de Prototype (ou que les objets tout court) car on peut mettre des objets en clé, ce qui est impossible sans passer par des fonctions de hachage souvent coûteuses.

    Vive JS 2.0, à mort Dart ! ;)

    • Thomas Despoix

      J’imagine Fabien :)
      Pas sûr pour autant que j’utilise fréquemment des maps avec un objet en clé, ca me parait un peu gros!
      A ce sujet, c’est la référence de l’objet qui servira de clé, ou bien son contenu ? Dans le second cas il faudra bien que le hash soit fait d’une manière ou d’une autre…

      Pour Dart… Allez, je prends le risque d’un pronostic: le n-ième bide de Google.

      C’est fou comme ces boites ayant une position dominante ont l’hégémonie viscéralement chevillée au corps, au point de vouloir imposer au reste du monde des normes à l’intérêt discutable.

  • Pingback: L’avenir du JavaScript, jetez-y un œil dès aujourd’hui ! | CODEZ.fr