JavaScript

Ne doit pas être confondu avec Java (langage).
JavaScript
Logo.

Date de première version Voir et modifier les données sur Wikidata
Paradigme Multi-paradigme: script, orienté objet ( orienté prototype), impératif, fonctionnel
Auteur Brendan Eich
Développeurs Netscape Communications Corporation, Mozilla Foundation
Dernière version 8 (Juin 2017)
Typage dynamique, faible
Normes ECMA-262
ISO/CEI 16262
Dialectes JavaScript, JScript, ECMAScript
Influencé par Self, Scheme [1], Perl, C, Java, Python
A influencé JScript, JScript .NET, Objective-J, TIScript, Swift
Implémentations SpiderMonkey, Rhino, KJS, JavaScriptCore, V8
Site web Mozilla
Extension de fichier js Voir et modifier les données sur Wikidata

JavaScript est un langage de programmation de scripts principalement employé dans les pages web interactives mais aussi pour les serveurs [2] avec l'utilisation (par exemple) de Node.js [3]. C'est un langage orienté objet à prototype, c'est-à-dire que les bases du langage et ses principales interfaces sont fournies par des objets qui ne sont pas des instances de classes, mais qui sont chacun équipés de constructeurs permettant de créer leurs propriétés, et notamment une propriété de prototypage qui permet d'en créer des objets héritiers personnalisés. En outre, les fonctions sont des objets de première classe. Le langage supporte le paradigme objet, impératif et fonctionnel. JavaScript est le langage possédant le plus large écosystème grâce à son gestionnaire de dépendances npm, avec environs 500 000 paquets en août 2017 [4].

JavaScript a été créé en 1995 par Brendan Eich. Il a été standardisé sous le nom d' ECMAScript en juin 1997 par Ecma International dans le standard ECMA-262. Le standard ECMA-262 en est actuellement à sa 8e édition. JavaScript n'est depuis qu'une implémentation d'ECMAScript, celle mise en œuvre par la fondation Mozilla. L'implémentation d'ECMAScript par Microsoft (dans Internet Explorer jusqu'à sa version 9) se nomme JScript, tandis que celle d' Adobe Systems se nomme ActionScript.

Histoire

Le langage a été créé en dix jours en mai 1995 par Brendan Eich pour le compte de la Netscape Communications Corporation, qui s'est inspiré de nombreux langages, notamment de Java mais en simplifiant la syntaxe pour les débutants [5].

Brendan Eich a initialement développé un langage de script côté serveur, appelé LiveScript, pour renforcer l'offre commerciale de serveur HTTP de Mosaic Communications Corporation. La sortie de LiveScript intervient à l'époque où le NCSA force Mosaic Communications Corporation changea de nom pour devenir Netscape Communications Corporation.

Netscape travaille alors au développement d'une version orientée client de LiveScript. Quelques jours avant sa sortie, Netscape change le nom de LiveScript pour JavaScript. Sun Microsystems et Netscape étaient partenaires, et la machine virtuelle Java de plus en plus populaire. Ce changement de nom servait les intérêts des deux sociétés.

En , Sun et Netscape annoncent [6] la sortie de JavaScript. En , Netscape met en œuvre le moteur JavaScript dans son navigateur Web Netscape Navigator 2.0. Le succès de ce navigateur contribue à l'adoption rapide de JavaScript dans le développement web orienté client. Microsoft réagit alors en développant JScript, qu'il inclut ensuite dans Internet Explorer 3.0 en pour la sortie de son navigateur.

JavaScript est décrit comme un complément à Java dans un communiqué de presse [6] commun de Netscape et Sun Microsystems, daté du . Cette initiative a contribué à créer auprès du public une certaine confusion entre les deux langages, proches syntaxiquement mais pas du tout dans leurs concepts fondamentaux, et qui perdure encore de nos jours [7].

Netscape soumet alors JavaScript à Ecma International pour standardisation. Les travaux débutent en et se terminent en , donnant naissance à la 1re édition du standard ECMA-262 qui spécifie le langage ECMAScript. Le standard est ensuite soumis à l' ISO/CEI et publié en en tant que standard international ISO/CEI 16262.

Des changements rédactionnels sont apportées au standard ECMA-262 pour le conformer au standard international ISO/CEI 16262, aboutissant à la 2e édition du standard ECMA-262 en .

La 3e édition du standard ECMA-262 introduit des expressions rationnelles plus puissantes, une amélioration de la manipulation des chaînes de caractères, de nouvelles instructions de contrôle, une gestion des exception avec les instructions try/catch et le formatage des nombres. Elle est publiée par Ecma International en puis soumise à l'ISO/CEI qui publie le standard international ISO/CEI 16262:2002 en . Après la publication de la 3e édition s'ensuit une adoption massive par tous les navigateurs Web.

Un travail conséquent est entrepris pour développer la 4e édition du standard ECMA-262, mais il ne sera pas achevé et cette édition ne verra jamais le jour. Cependant une partie du développement effectué sera intégrée à la 6e édition.

La 5e édition du standard ECMA-262 clarifie les ambiguïtés de la 3e édition et introduit les accesseurs, l'introspection, le contrôle des attributs, des fonctions de manipulation de tableaux supplémentaires, le support du format JSON et un mode strict pour la vérification des erreurs. Elle est publiée par Ecma International en puis soumise à l'ISO/CEI qui apporte des corrections mineures et publie le standard international ISO/CEI 16262:2011 en . L'édition 5.1 du standard ECMA-262 reprenant à l'identique le texte du standard international ISO/CEI 16262:2011 est publiée à la même date.

Bien que le développement de la 6e édition du standard ECMA-262 ait commencé officiellement en 2009, peu avant la publication de la 5e édition, sa publication en est en réalité l'aboutissement de 15 ans de travail depuis la publication de la 3e édition en 1999. Le but de cette 6e édition est d'apporter un meilleur support pour les applications d'envergure, la création de bibliothèques et l'utilisation d'ECMAScript comme cible de compilation pour d'autres langages. Cette édition introduit notamment les modules, les classes, la portée lexicale au niveau des blocs, les itérateurs et les générateurs, les promesses pour la programmation asynchrone, les patrons de destructuration, l'optimisation des appels terminaux, de nouvelles structures de données (tableaux associatifs, ensembles, tableaux binaires), le support de caractères Unicode supplémentaires dans les chaînes de caractères et les expressions rationnelles et la possibilité d'étendre les structures de données prédéfinies.

La 7e édition du standard ECMA-262 est la première édition issue du nouveau processus de développement ouvert et du rythme de publication annuel adoptés par le comité Ecma TC39. Un document au format texte est créé à partir de la 6e édition et est mis en ligne sur GitHub comme base de développement pour cette nouvelle édition. Après la correction de milliers de bugs et d'erreurs rédactionnelles ainsi que l'introduction de l'opérateur d'exponentiation et d'une nouvelle méthode pour les prototypes de tableaux, la 7e édition est publiée en .

L'édition actuelle du standard ECMA-262 est la 8e édition, publiée en [8].

Other Languages
Afrikaans: JavaScript
العربية: جافا سكريبت
azərbaycanca: JavaScript
žemaitėška: JavaScript
беларуская: JavaScript
беларуская (тарашкевіца)‎: JavaScript
български: JavaScript
ᨅᨔ ᨕᨘᨁᨗ: JavaScript
català: JavaScript
Mìng-dĕ̤ng-ngṳ̄: JavaScript
čeština: JavaScript
Чӑвашла: JavaScript
dansk: JavaScript
Deutsch: JavaScript
Ελληνικά: JavaScript
English: JavaScript
Esperanto: Ĝavoskripto
español: JavaScript
eesti: JavaScript
euskara: JavaScript
suomi: JavaScript
galego: JavaScript
客家語/Hak-kâ-ngî: JavaScript
עברית: JavaScript
hrvatski: JavaScript
magyar: JavaScript
Հայերեն: ՋավաՍկրիպտ
interlingua: JavaScript
Bahasa Indonesia: JavaScript
íslenska: JavaScript
italiano: JavaScript
日本語: JavaScript
Basa Jawa: JavaScript
ქართული: ჯავასკრიპტი
қазақша: JavaScript
ភាសាខ្មែរ: JavaScript
Кыргызча: Java script
lumbaart: JavaScript
lietuvių: JavaScript
latviešu: JavaScript
македонски: JavaScript
монгол: JavaScript
Bahasa Melayu: JavaScript
မြန်မာဘာသာ: JavaScript
مازِرونی: جاوااسکریپت
Nederlands: JavaScript
norsk: JavaScript
polski: JavaScript
português: JavaScript
română: JavaScript
русский: JavaScript
саха тыла: JavaScript
Scots: JavaScript
srpskohrvatski / српскохрватски: JavaScript
Simple English: JavaScript
slovenčina: JavaScript
slovenščina: JavaScript
shqip: JavaScript
српски / srpski: Јаваскрипт
svenska: Javascript
tetun: JavaScript
тоҷикӣ: JavaScript
Türkmençe: JavaScript
Tagalog: JavaScript
Türkçe: JavaScript
татарча/tatarça: JavaScript
українська: JavaScript
Tiếng Việt: JavaScript
中文: JavaScript
Bân-lâm-gú: JavaScript
粵語: JavaScript