ECMAScript es un conjunto de estándares para lenguajes de programación de tipo script estandarizados por Ecma International bajo la especificación ECMA-262. Por tanto, es un estándar cuyas especificaciones se implementan en diferentes lenguajes de scripting, como JavaScript o ActionScript . Es un lenguaje de programación orientado a prototipos .
La empresa Netscape , originalmente conocida como Mosaic Communications Corporation , ha desarrollado un lenguaje de scripting del lado del cliente llamado LiveScript para fortalecer el suministro comercial de su servidor web. El lanzamiento de LiveScript se produjo cuando la NCSA estaba obligando a Mosaic Communications Corporation a cambiar su nombre a Netscape .
Luego, Netscape trabajó en el desarrollo de una versión de LiveScript orientada al cliente . Unos días antes de su lanzamiento, Netscape cambió el nombre de LiveScript a JavaScript . Como Sun Microsystems y Netscape son socios, y la JVM es cada vez más popular, este cambio de nombre sirvió a los intereses de ambas empresas. Por lo tanto, Sun prometió no demandar a Netscape .
En diciembre de 1995, Sun y Netscape anunciaron el lanzamiento de JavaScript . En marzo de 1996, Netscape implementó el motor JavaScript en su navegador web Netscape Navigator 2.0. El éxito de este navegador contribuye a la rápida adopción de JavaScript en el desarrollo web orientado al cliente. Microsoft luego reaccionó desarrollando JScript , que luego incluyó en Internet Explorer 3.0 en agosto de 1996 para el lanzamiento de su navegador.
Luego, Netscape envía JavaScript a ECMA para su estandarización. El trabajo comenzó en noviembre de 1996 y terminó en junio de 1997 con la adopción del nuevo estándar ECMAScript . Las especificaciones están escritas en el estándar ECMA-262 .
Actualmente existen 11 versiones del estándar ECMA-262.
Ahora abandonado a favor de ES5, los primeros trabajos fueron criticados porque cambiaron la naturaleza del lenguaje, que pasó de un modelo de programación con prototipos a un modelo tradicional basado en clases como Java, C ++ o C #.
Este modelo orientado a prototipos es para muchos el modelo más eficiente en el desarrollo orientado a objetos .
Una primera versión del repositorio de implementación ECMAScript 4 está disponible desde junio de 2007.
Además, Mozilla y Adobe Systems han trabajado en la implementación de las especificaciones de ECMAScript 4 en JavaScript 2 y ActionScript 3. Para conciliar estas implementaciones con la creación de la máquina virtual Tamarin , Mozilla y Adobe Systems están colaborando en el proyecto Tamarin .
Tras las críticas a ES4, varias empresas, incluidas Yahoo, Microsoft y Google, decidieron desarrollar una actualización menos ambiciosa para ES3 en paralelo, llamada ES3.1.
A pesar de las diferencias de opciones con el equipo de ES4, finalmente se toma la decisión de detener el desarrollo de ES4 y centrarse exclusivamente en ES3.1, que se convertirá en ES5 para evitar cualquier ambigüedad, y fue lanzado el 3 de diciembre de 2009.
Todas estas especificaciones ahora están bien integradas en los navegadores modernos.
Nombrado ES2015, la última versión de ECMAScript se lanzó en junio de 2015. Es compatible con todas las versiones recientes de navegadores.
La primera versión lanzada después del cambio en el proceso de estandarización, ES7 o ES2016, realiza algunos cambios en el idioma. El nuevo proceso prevé la publicación de un nuevo estándar cada año con las adiciones que se han realizado entre tanto, con el fin de evitar la publicación de grandes cambios como fue el caso en 2015.
Edición | Fecha de publicación | Diferencias con la edición anterior |
---|---|---|
1 | Junio de 1997 | 1 st edición. |
2 | Junio de 1998 | Cambios editoriales para cumplir con la norma internacional ISO / IEC-16262. |
3 | Diciembre de 1999 | Expresiones regulares más poderosas, manejo mejorado de cadenas, nuevas declaraciones de control, manejo de excepciones con declaraciones try / catch, formato de números. |
4 | Nunca | Edición descontinuada. |
5 | Diciembre de 2009 | Aclarando las ambigüedades en la 3 ª edición, de acceso, la introspección, atributos de control, funciones adicionales Mesa de manipulación, soporte JSON, el modo estricto para la comprobación de errores. |
6 | Junio de 2015 | Módulos, clases, alcance léxico a nivel de bloque, iteradores y generadores, promesas para programación asincrónica, patrones de desestructuración, optimización de llamadas de terminal, nuevas estructuras de datos (matrices asociativas, conjuntos, matrices binarias), soporte para caracteres Unicode adicionales en cadenas de caracteres y regulares. expresiones, posibilidad de ampliar las estructuras de datos predefinidas. |
7 | Junio de 2016 | Operador de exponenciación, nuevo método para prototipos de tablas. |
8 | Junio de 2017 | |
9 | Junio de 2018 | |
10 | Junio de 2019 | |
Siguiente | En desarrollo | Async / await, vinculante operador , decoradores, SIMD , observable, atributos de instancias públicas y privadas. |
ECMAScript para XML (E4X) es una extensión XML del lenguaje ECMAScript. De hecho, es un estándar diferente.
Solicitud | Denominación | Última versión | Coincidencia de ECMAScript |
---|---|---|---|
Navegadores tipo Gecko con motor integrado SpiderMonkey , incluido Mozilla Firefox | Javascript | 1.8 | ECMA-262, edición 3 1 |
explorador de Internet | JScript | 5.6.7 | ECMA-262, edición 3 6 |
Ópera | ECMAScript, con extensiones JavaScript y JScript | 1.3 / 1.5 | ECMA-262, edición 3 |
Navegadores basados en KHTML , incluido Konqueror de KDE | Javascript | 1,5 | ECMA-262 |
Framework .NET Microsoft | JScript .NET y JScript administrado | 8.0 | ECMA-262, edición 3 2 |
Adobe Flash | ActionScript | 2
3 |
ECMA-262, edición 3 3 ECMA-262, edición 4 4 |
Adobe Acrobat | Javascript | 1,5 | ECMA-262, edición 3 |
Lenguaje general de secuencias de comandos | DMDScript | 1.06 | ECMA-262 |
Plataforma OpenLaszlo | Javascript | 1.4 | ECMA-262, edición 3 5 |
iCab | InScript | 3,22 | ECMA-262, edición 3 |
Implementación de XML en navegadores basados en Gecko y programas embebidos como SpiderMonkey | E4X | ??? | ECMA-357, edición 2 |
Nota (1) : E4X parcialmente compatible con Gecko 1.9; para otras funciones.
Nota (2) : Microsoft indica que JScript 8.0 admite "casi todas las funciones de ECMAScript Edition 3", pero no enumera las funciones no compatibles.
Nota (3) : Además de la compatibilidad con ECMA-262 edición 3, ActionScript 2 también incluye compatibilidad con propiedades, funciones y mecanismos que se ofrecieron en una versión preliminar de ECMA-262 edición 3. No se sabe si ActionScript permanecerá en sincronía con futuros cambios en las especificaciones de ECMAScript.
Nota (4) : Adobe indica que admite una versión preliminar de la edición 4 de ECMA-262.
Nota (5) : OpenLaszlo es parcialmente compatible con ECMA-262 edición 3.
Nota (6) : Microsoft ha publicado un documento "Desviaciones de JScript de ES3".
El soporte de Mozilla, ( SpiderMonkey en lenguaje C y Rhino en Java ), es utilizado por varios programas de terceros, por ejemplo Yahoo! Widget Engine (Konfabulator) y lenguaje de scripting para Macintosh JavaScript OSA .
Safari usa JavaScriptCore, que se basa en la biblioteca KJS de KDE .
Javascript | JScript | ECMAScript |
---|---|---|
1.0 (Netscape 2.0, marzo de 1996) | 1.0 (IE 3.0 - y primera versión, agosto de 1996) | |
1.1 (Netscape 3.0, agosto de 1996) | 2.0 (IE 3.0 - última versión, enero de 1997) | |
1.2 (Netscape 4.0, junio de 1997) | ||
1.3 (Netscape 4.5, octubre de 1998) | 3.0 (IE 4.0, octubre de 1997) | edición 1 (junio de 1997) / edición 2 (junio de 1998) |
1.4 (solo servidor Netscape) | 4.0 (Visual Studio 6, sin nueva versión de IE) | |
5.0 (IE 5.0, marzo de 1999) | ||
5.1 (IE 5.01) | ||
1.5 (Netscape 6.0, noviembre de 2000; pero también versiones posteriores de Netscape y Mozilla ) |
5.5 (IE 5.5, julio de 2000) | edición 3 (diciembre de 1999) |
5.6 (IE 6.0, octubre de 2001) | ||
1.6 (Gecko 1.8, Firefox 1.5, noviembre de 2005) | edición 3, con nuevas funciones: E4X , Arrayextras (p Array.prototype.forEach. ej. ) Arrayy Stringgenéricos [1] | |
1.7 (Gecko 1.8.1, Firefox 2.0, octubre de 2006) | ||
1.8 (Gecko 1.9, Firefox 3.0, mayo de 2007) | ||
2.0 | edición 4 (en desarrollo) |