JavaScript, pour des applications Web

Depuis que Netscape a créé JavaScript pour programmer des pages HTML dynamiques, ses applications n'ont cessé de s'étendre.

Sa principale fonction et le scripting d'une page HTML ou d'une interface graphique (voir Qt, XAML, etc... Cela permet l'échange de données avec le serveur grâce à Ajax, WebSocket, WebRTC.
Mais on l'utilise aussi pour permettre le scripting dans des applications (Photoshop utilise JavaScript) et même pour la programmation système!

Une rose en JavaScript

JavaScript s'est appelé successivement Moka, puis LiveScript et finalement avec l'accord de Sun, JavaScript.
JScript est une version compatible implémentée par Microsoft en 2006, pour Windows uniquement.

Sa conception est un mélange de C et Self aus dires de l'auteur, Brendan Eich, qui était aussi amateur de Scheme. Le langage a de nombreux défauts, mais il est innovateur et flexible, et bien qu'il date de plus de 20 ans, il offre plus de possibilités que la plupart des langages plus récents, tel Dart. Et les implémenteurs oeuvrent à supprimer ces défauts.

Pour compléter ECMAScript 6 qui fait de JavaScript un langage d'application à part entière, Google a proposé en 2015 le mode SoundScript qui apporte en outre des variables typées et différentes accélérations à l'exécution. Mais ce projet a été abandonné en février 2016 et l'équipe a été réaffectée à Dart. Les variables typées sont cependant prévues dans une future version d'ECMAScript.

Court historique du langage

Un langage ingénieux et innovant

Le format décrit ici est ECMAScript 1.5, défini par l'ECMA en 1999. Des versions plus récentes existent, mais ne sont pas supportées par tous les navigateurs.

JavaScript dans LightTable
Exemple de code: afficher les éléments d'une chaîne

Quelques défauts du langage...

ECMAScript 7, un langage d'applications plus importantes

La nouvelle version de JavaScript, dont le nom de code était Harmony, tout en préservant la compatibilité, fera de ce langage un outil plus sûr pour développer des applications d'envergure. On peut écrire du code ES6 et le faire traduire pour compatibilité avec tout navigateur par un outil comme TypeScript (Microsoft), Traceur (Google), ou Babel.

Quelques nouvelles fonctionalités sont déjà implémentées dans un navigateur ou un autre. Pour savoir ce qui est implémenté dans un navigateur, utilisez le pour regarder les tests d'implémentation des nouvelles fonctionalités de JavaScript.
Pour activer certaines de ces fonctions sous Chrome, il faut entrer chrome:flags et Enable Experimental JavaScript.

Référence: ECMA Standard Specification for 7th Edition. 2016.

ECMAScript 2017

Les principales fonctionnalités de cette version sont async/await et la mémoire partagée et les atomiques.
Les Shared Array Buffer et Atomics sont des bases pour la programmation concurrente.
Les fonctions async fournissent aussi une forme de concurrence mais la commande await dans une fonction permet de revenir à un traitement synchrone car le code dans la fonction est interrompu jusqu'a ce que la condition suivant await soit satisfaite.

Le langage devient un peut plus fonctionnel avec Object.value et Object.entries qui permettent d'énumérer les éléments d'un tableau ou les propriétés d'un objet.

Quel interpréteur JavaScript pour quel navigateur?

Les navigateurs se font concurrence sur les moteurs JavaScript comme sur les moteurs de rendu... Mais ce sont maintenant plutôt des compilateurs JIT que des interpréteurs...

Hashorn produit du bytecode pour la JVM. Intégré à aucun navigateur majeur.

Un langage système?

Avec l'apparition des compilateurs JavaScript, fonctionnant aussi bien dans le navigateur que comme outil indépendant, de nouvelles utilisations voient le jour pour ce langage proche de C mais plus libre encore et disposant d'une gestion automatique de mémoire, de sandbox.

JavaScript est-il lent sur les mobiles?

La polémique a été lancée par un article de Drew Crowford selon lequel JavaScript est trop lent parce que les mobiles ont peu de mémoire comparativement aux ordinateurs de bureau.
Mais d'autres spécialistes du langage ne sont pas d'accord. Dans cet article, on affirme que le coupable n'est pas le langage, c'est le DOM. On sait que DOM est lent, c'est pourquoi certains frameworks comme Angular ont implémenté le data-binding qui permet de mettre à jour le contenu sans passer par lui.
L'auteur précise qu'en fait, JavaScript peut être plus rapide que d'autres langages comme Objective-C (utilisé sur iOS) dans l'échange de messages car c'est quelque chose qui fonctionne mieux avec un JIT qu'avec une compilation statique.
Finalement l'auteur attribue la rapidité des applications natives iOS au fait que l'écran ait une taille unique, contrairement à Android ou autres systèmes.

Documents

Même si le langage est relativement facile à apprendre, il a des points obscurs, au point qu'on a des livres spécialisés dans les bonnes parties du langage, d'autres sur les aspects complexes.

Compilés en JavaScript
Outils

Vous pouvez développer une application en JavaScript sous LightTable (voir image plus haut), Eclipse, NetBeans ou Aptana, ou un éditeur de texte pour un simple script.

JavaScript en ligne de commande

On peut utiliser le moteur V8 ou Nashborn, une version pour la machine virtuelle Java.

Extensions et frameworks

Il est recommandé d'utiliser un framework Ajax ou HTML 5 pour développer une application sérieuse. Il existe aussi des frameworks pour mobiles.

Langages de programmation et de données Asm.js - Basic - C - C++ - C# - Dart - Eiffel - Go - Java - JavaScript - Julia - Pascal - PHP - Python - Ruby - Scala - Scriptol - TypeScript - HTML - Wasm - XML - XAML - SQL
Nouvelles

JavaScript devient le langage des applications Linux

05-02-2013 19:06:01

Linux

Plus précisément des applications pour l'environnement Gnome, qui suit ainsi la voie tracée par Windows 8 et son interface moderne. D'autres langages restent possible, mais le premier choix devient JavaScript. Les avantages sont nombreux: une plus grande portabilité, un écosystème plus vaste, un public de développeurs plus large car JavaScript est connu de presque tous.
Evidemment cela provoque des protestations car chaque développeur a son langage favori (C, Python, Ruby, etc.) qu'il aurait voulu voir choisi pour ce rôle.
L'autre environnement de référence, KDE, étant basé sur Qt, utilise aussi JavaScript pour l'interface et C++ pour les applications. Toutefois l'interface Plasma, qui est l'équivalent de Metro pour Linux, permet la création rapide d'applications en JavaScript avec l'IDE Plasmate.