ECMAScript
ECMAScript est un ensemble de normes concernant les langages de programmation de type script et standardisées par Ecma International dans le cadre de la spécification ECMA-262. Il s'agit donc d'un standard, dont les spécifications sont mises en œuvre dans différents langages de script, comme JavaScript ou ActionScript. C'est un langage de programmation orienté prototype.
Histoire et développement[modifier | modifier le code]
LiveScript et Mosaic Communications Corporation[modifier | modifier le code]
La société Netscape, à l'origine connue sous le nom de Mosaic Communications Corporation, a développé un langage de script côté client, appelé LiveScript, pour renforcer l'offre commerciale de son serveur web. La sortie de LiveScript est intervenue à l'époque où le NCSA forçait Mosaic Communications Corporation à changer de nom pour devenir Netscape.
Netscape travailla alors au développement d'une version orientée client de LiveScript. Quelques jours avant sa sortie, Netscape changea le nom de LiveScript pour JavaScript. Sun Microsystems et Netscape étant partenaires, et la machine virtuelle Java étant de plus en plus populaire, ce changement de nom servait les intérêts des deux sociétés. Sun promit donc de ne pas poursuivre Netscape[réf. nécessaire].
JavaScript et Netscape[modifier | modifier le code]
En décembre 1995, Sun et Netscape annoncent la sortie de JavaScript. En mars 1996, Netscape implémente 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 août 1996 pour la sortie de son navigateur.
Netscape soumet alors JavaScript à l'ECMA pour standardisation. Les travaux débutent en novembre 1996, et se terminent en juin 1997 par l'adoption du nouveau standard ECMAScript. Les spécifications sont rédigées dans le document Standard ECMA-262.
Versions[modifier | modifier le code]
ECMA-262[modifier | modifier le code]
Il existe à ce jour 11 versions du standard ECMA-262[1].
ECMAScript Edition 4 (ES4)[modifier | modifier le code]
Aujourd'hui abandonné au profit d'ES5, les premiers travaux furent critiqués car ils modifiaient la nature du langage, qui passait d'un modèle de programmation avec les prototypes vers un modèle traditionnel fondé sur les classes comme Java, C++ ou C#.
Ce modèle orienté prototype est pour beaucoup le modèle le plus performant en développement orienté objet[réf. nécessaire].
Une première version du référentiel d'implémentation d'ECMAScript 4 est disponible depuis juin 2007[2].
Par ailleurs, Mozilla et Adobe Systems ont travaillé à l'implémentation des spécifications d'ECMAScript 4 dans JavaScript 2 et ActionScript 3. Pour concilier ces implémentations avec la création de la machine virtuelle Tamarin, Mozilla et Adobe Systems collaborent sur le projet Tamarin.
ECMAScript Edition 5 (ES5)[modifier | modifier le code]
Suite aux critiques à l'encontre d'ES4, un ensemble de sociétés, parmi lesquelles Yahoo, Microsoft et Google, décident de développer en parallèle une mise à jour de l'ES3 moins ambitieuse, nommée ES3.1.
Malgré les divergences d'option avec l'équipe consacrée à l'ES4, la décision est finalement prise d'arrêter le développement d'ES4 et de se consacrer exclusivement à l'ES3.1[3], qui deviendra ES5 pour éviter toute ambiguïté, et est publié le 3 décembre 2009[4].
L'ensemble de ces spécifications sont aujourd'hui bien intégrées dans les navigateurs modernes[5].
ECMAScript Edition 6 (ES6)[modifier | modifier le code]
Nommée ES2015, la dernière version d'ECMAScript a été publiée en juin 2015[6]. Elle est prise en charge par toutes les versions récentes des navigateurs[7].
ECMAScript Edition 7 (ES7)[modifier | modifier le code]
Première version publiée après le changement du processus de normalisation, l'ES7, ou ES2016, apporte peu de changements au langage. Le nouveau processus prévoit en effet de publier chaque année une nouvelle norme avec les ajouts qui ont eu lieu dans l'intervalle, afin d'éviter de publier des changements énormes comme ce fut le cas en 2015[8].
Comparatif[modifier | modifier le code]
Édition | Date de publication | Différences avec l'édition antérieure |
---|---|---|
1 | Juin 1997 | 1re édition. |
2 | Juin 1998 | Modifications rédactionnelles pour se conformer au standard international ISO/CEI-16262. |
3 | Décembre 1999 | Expressions rationnelles plus puissantes, amélioration de la manipulation des chaînes de caractères, nouvelles instructions de contrôle, gestion des exception avec les instructions try/catch, formatage des nombres. |
4 | Jamais | Édition abandonnée. |
5 | Décembre 2009 | Clarification des ambiguïtés de la 3e édition, accesseurs, introspection, contrôle des attributs, fonctions de manipulation de tableaux supplémentaires, support du format JSON, mode strict pour la vérification des erreurs. |
6 | Juin 2015 | Modules, classes, portée lexicale au niveau des blocs, itérateurs et générateurs, promesses pour la programmation asynchrone, patrons de destructuration, optimisation des appels terminaux, nouvelles structures de données (tableaux associatifs, ensembles, tableaux binaires), support de caractères Unicode supplémentaires dans les chaînes de caractères et les expressions rationnelles, possibilité d'étendre les structures de données prédéfinies. |
7 | Juin 2016 | Opérateur d'exponentiation, nouvelle méthode pour les prototypes de tableaux[9]. |
8 | Juin 2017 | |
9 | Juin 2018 | |
10 | Juin 2019 | |
ESnext | En cours de développement | Async/await, opérateur de binding, décorateurs, SIMD, observable, attributs d'instances publics et privés[9],[10]. |
E4X[modifier | modifier le code]
ECMAScript for XML (E4X) est une extension XML au langage ECMAScript. Il s'agit bien d'un standard différent[11].
Dénomination[modifier | modifier le code]
Application | Dénomination | Dernière version | Correspondance ECMAScript |
---|---|---|---|
Navigateurs de type Gecko avec le moteur embarqué SpiderMonkey, dont Mozilla Firefox | JavaScript | 1.8 | ECMA-262, edition 3 1 |
Internet Explorer | JScript | 5.6.7 | ECMA-262, edition 3 6 |
Opera | ECMAScript, avec des extensions JavaScript et JScript | 1.3/1.5 | ECMA-262, edition 3 |
Navigateurs fondés sur KHTML, incluant Konqueror de KDE | JavaScript | 1.5 | ECMA-262 |
Framework .NET de Microsoft | JScript .NET et Managed JScript | 8.0 | ECMA-262, edition 3 2 |
Adobe Flash | ActionScript | 2
3 |
ECMA-262, edition 3 3
ECMA-262, edition 4 4 |
Adobe Acrobat | JavaScript | 1.5 | ECMA-262, edition 3 |
Langage de script général | DMDScript | 1.06 | ECMA-262 |
OpenLaszlo Platform | JavaScript | 1.4 | ECMA-262, edition 3 5 |
iCab | InScript | 3.22 | ECMA-262, edition 3 |
Implémentation d'XML dans les navigateurs fondés sur Gecko et les programmes embarqués comme SpiderMonkey | E4X | ??? | ECMA-357, edition 2 |
Note (1): E4X en partie supporté par Gecko 1.9 ; pour d'autres fonctionnalités.
Note (2): Microsoft indique que JScript 8.0 supporte « presque toutes les caractéristiques d'ECMAScript Edition 3" mais ne donne pas de liste des caractéristiques non supportées.
Note (3): En plus du support d'ECMA-262 edition 3, ActionScript 2 inclus aussi un support des propriétés, fonctions et mécanisme qui avaient été proposés dans une version préliminaire d'ECMA-262 edition 3. Il n'est pas connu si ActionScript restera synchronisé avec de futures modifications des spécifications d'ECMAScript.
Note (4): Adobe indique supporter une version préliminaire de l'édition 4 d'ECMA-262.
Note (5): OpenLaszlo supporte partiellement ECMA-262 édition 3.
Note (6): Un document « JScript Deviations from ES3 » a été publié par Microsoft.
Le support par Mozilla, (SpiderMonkey en langage C et Rhino en Java), sont utilisés par plusieurs programmes tiers, par exemple le Yahoo! Widget Engine (Konfabulator) et le langage de script pour Macintosh JavaScript OSA.
Safari utilise JavaScriptCore qui est fondé sur la bibliothèque KJS de KDE.
Correspondance[modifier | modifier le code]
JavaScript | JScript | ECMAScript |
---|---|---|
1.0 (Netscape 2.0, mars 1996) | 1.0 (IE 3.0 — et première version, août 1996) | |
1.1 (Netscape 3.0, août 1996) | 2.0 (IE 3.0 — dernière version, janvier 1997) | |
1.2 (Netscape 4.0, juin 1997) | ||
1.3 (Netscape 4.5, octobre 1998) | 3.0 (IE 4.0, octobre 1997) | édition 1 (juin 1997) / édition 2 (juin 1998) |
1.4 (Netscape Server uniquement) | 4.0 (Visual Studio 6, pas de nouvelle version d'IE) | |
5.0 (IE 5.0, mars 1999) | ||
5.1 (IE 5.01) | ||
1.5 (Netscape 6.0, nov 2000 ; mais aussi plus tard les versions de Netscape et Mozilla) |
5.5 (IE 5.5, juillet 2000) | édition 3 (décembre 1999) |
5.6 (IE 6.0, octobre 2001) | ||
1.6 (Gecko 1.8, Firefox 1.5, novembre 2005) | édition 3, avec pour nouveautés: E4X, Array extras (e.g. Array.prototype.forEach ), Array et String generics [1]
| |
1.7 (Gecko 1.8.1, Firefox 2.0, octobre 2006) | ||
1.8 (Gecko 1.9, Firefox 3.0, mai 2007) | ||
2.0 | édition 4 (en développement) |
Annexes[modifier | modifier le code]
Notes et références[modifier | modifier le code]
- ECMA, « La 11ème version du standard », (consulté en juin 2020).
- (en) Publication d'un site web dédié.
- Brendan Eich, « ECMAScript Harmony », (consulté le 17 décembre 2015).
- (en) « ECMAScript Language Specification, 5th edition ».
- « ECMAScript 5 compatibility table », sur kangax.github.io (consulté le 17 décembre 2015).
- « ECMAScript 2015 Language Specification – ECMA-262 6th Edition », sur www.ecma-international.org (consulté le 17 décembre 2015).
- « ECMAScript 6 compatibility table », sur kangax.github.io (consulté le 17 décembre 2015).
- Axel Rauschmayer, « Isn’t ECMAScript 2016 too small? » (consulté le 12 juin 2019).
- (en) « Finished proposals » (consulté le 14 septembre 2016).
- « Active proposals » (consulté le 14 septembre 2016).
- (en) ECMA-357.
Articles connexes[modifier | modifier le code]
Liens externes[modifier | modifier le code]
- Référence ECMAScript 4
- Standard ECMA-262 : Spécification ECMAScript 7e édition (juin 2016) [PDF]
- Standard ECMA-290 : Spécification ECMAScript Components (juin 1999) [PDF]
- Standard ECMA-327 : Spécification ECMAScript 3e édition Compact Profile (juin 2001) [PDF]
- Standard ECMA-357 : Spécification ECMAScript pour XML (E4X) (juin 2004) [PDF]
- Wiki du comité ECMAScript 4
- The World of ECMAScript : blog de John Resig's sur ECMAScript