SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 1 de 9
Los dialectos ECMAScript y su implementación en
los navegadores
INTRODUCCIÓN
ECMAScript es al día de hoy uno de los principales y más importantes lenguaje de scipting que es
multiplataforma e independiente de cualquier tecnología o empresa, lo que le brinda una considera-
ble ventaja frente a otros lenguajes. Fue tomado como norma, por lo que se han creado otros len-
guajes a partir de ECMAScript con diferentes fines, el caso más difundido es en el cliente a través
de los navegadores web para crear contenido dinámico en las páginas web y dotarles la posibilidad
de interactuar con el usuario.
Este estudio brinda un panorama general sobre ECMAScript, sus diferentes dialectos y las
principales implementaciones que se han hecho para poder interpretar y ejecutar este tipo de lengua-
je del lado del cliente, es decir, en los navegadores web.
1. ECMAScript
ECMAScript es una “especificación de lenguaje de scripting”, es decir, un estándar que define las
características que debe cumplir un lenguaje de programación que sea capaz de interpretar y proce-
sar scripts1
, es decir, un lenguaje de programación interpretado, el cual se caracteriza por ser impe-
rativo, estructurado, dinámico, funcional y con orientación a objetos2
.
Para entender un poco más sobre ECMAScript es necesario retornar en la historia y resaltar los
hechos más relevantes. En aquel entonces, antes de que apareciera el primer lenguaje con estas ca-
racterísticas, la potencia de las computadoras era poca y la velocidad de conexión de Internet muy
limitada, de modo que cuando un cliente enviaba información (por ejemplo al rellenar un formula-
rio) al servidor, este último tenía que hacer validaciones para comprobar si los datos eran correctos,
sin embargo resultaba muy común que el usuario se equivocara, por lo cual se tenían que hacer
múltiples intentos previos enviando datos incorrectos al servidor antes de lograr un envío exitoso,
de manera tal que el servidor terminaba sobrecargándose y el usuario desesperado ante la lentitud
de la velocidad y tener que repetir el proceso. Esta fue una de las razones por las que se ve la nece-
sidad de implementar un lenguaje de programación en el cliente, el cual ayudara a disminuir la car-
ga de trabajo en el servidor haciendo procesamiento de información en el mismo cliente y con ello
disminuyendo también el tráfico de red.
1
Un script es un archivo almacenado en formato de texto plano que contiene un conjunto de órdenes para
realizar diversas tareas como combinar componentes, interactuar con el Sistema Operativo o con el usuario.
2
Para entender los diferentes paradigmas de programación consulte el libro “Introducción a la programación.
Teoría y práctica” de Jesús Javier Rodríguez en sus páginas 4-6, o la página web
http://es.wikipedia.org/wiki/Paradigma_de_programación
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 2 de 9
Así pues, el primer lenguaje en aparecer con las características de la especificación EC-
MAScript fue un lenguaje inventado por Brendan Eich para el navegador web Netscape Navigator
2.002 en diciembre de 1995 que originalmente fue llamado Mocha y que posteriormente sería de-
nominado LiveScript. Entonces este lenguaje comenzó a popularizarse y diversas empresas trataron
de imitar y copiar el lenguaje, como el caso de Microsoft, que en 1996 lanza el lenguaje JScript
para su navegador Internet Explorer 3.0, de pronto comenzó a darse una guerra de navegadores,
cada uno ejecutando su propia versión de lenguaje scripting. Fue por esta razón que Netscape
Communications decide aliarse con Sun Microsystem con la finalidad de desarrollar un nuevo y
mejor lenguaje, el cual llamaron JavaScript y que continuaron mejorando hasta que en noviembre
de 1996 proponen JavaScript 1.1 para que fuera adoptado como estándar. El organismo ECMA
(European Computer Manufacturers Association) decide crear un comité para estandarizarlo (to-
mando también como referencia JScript) y hacerlo independiente de toda plataforma y empresa,
hasta que en junio de 1997 publican el estándar ECMA-262 definiéndolo como ECMAScript. A su
vez, ECMA envía la especificación a ISO/IEC JTC 1 que bajo un procedimiento rápido de adopción
es aprobado en abril de 1998 bajo la denominación ISO/IEC 16262. Para adecuarse al estándar
internacional, ECMA vuelve a redactar las especificaciones y en junio del mismo año publica la
segunda versión de ECMAScript (Ecma International, 2011) (Wikipedia, 2014).
Es hasta diciembre de 1999 que se publica la tercera versión de la especificación, la cual fue es-
tandarizada internacionalmente como ISO/IEC 16262:2002. Sin llegar a realizar la publicación de
la cuarta versión, dan a conocer ECMA-262 5ta
edición que es inmediatamente revisada y estanda-
rizada internacionalmente como ISO/IEC 16262:2011, y para apegarse a ella, ECMA publica en
junio de 2011 ECMA-262 versión 5.1, que es más estricta pues se apega completamente a la terce-
ra versión de la norma internacional (Ecma International, 2011).
La versión 5.1 es la más actual, sin embargo ya se está trabajando en la sexta versión bajo el
nombre “Harmony” o “ES.next” 3
que está muy próxima a publicarse, de hecho, algunos navegado-
res web ya incorporan características que tendrá esta versión4
. Además de la sexta versión que está
próxima a publicarse, también se está comenzando a elaborar la séptima versión de ECMA-262 y
además se propone un ciclo de lanzamiento de dos años (Ecma International, 2014).
2. Los dialectos ECMAScript
Cada que una organización realiza una implementación del estándar ECMAScript se le conoce co-
mo “dialecto”. Cada empresa suele adaptar ECMAScript a sus necesidades y con los fines que me-
jor crea convenientes creando un dialecto nuevo, y aunque pueden parecerse bastante entre sí, tie-
nen diferencias sustanciales, ya que las características que no se apegan al estándar tendrán proble-
3
Se pueden consultar las nuevas características y su nivel de adopción de las próximas versiones de EC-
MAScript en la página http://kangax.github.io/compat-table/es5/
4
En el siguiente enlace se puede observar el nivel de adopción de ECMAScript 6 en Firefox)
https://developer.mozilla.org/en-
US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 3 de 9
mas de compatibilidad con los motores de ejecución de las aplicaciones que intenten interpretarlos,
por lo que una instrucción podría por ejemplo funcionar en un navegador web pero no en otro.
Entre las tres implementaciones principales que se conocen de ECMAScript se encuentran los
dialectos JavaScript, JScript y ActionScript. JavaScript es el dialecto más usado en las páginas web
el cual sirve para añadir interacción y funcionalidad a las mismas. JScript por su parte es usado
principalmente para la creación de páginas en ASP y que ha evolucionado a lo que hoy se conoce
como JScript .NET. Y en cuanto a ActionScript, es una implementación hecha específicamente para
Flash (Sikos, 2011, págs. 230-231).
Hay otras implementaciones para usos específicos por lo que no se apegan enteramente al es-
tándar ECMAScript o añaden más características, tal es el caso de ExtendScript que es un lenguaje
que creó Adobe Systems para usar con los productos de su Creative Suite (Adobe Systems), o tam-
bién DMDScript (conocido como DScript) que es una implementación especialmente adaptada para
ser usada en el lenguaje de programación “D” y en “C++” (Digital Mars, 2012).
De igual manera han surgido diferentes sub-implementaciones como es el caso de Ejscript que
es una implementación basada en JavaScript para ser usado en aplicaciones embebidas como por
ejemplo dispositivos móviles o incluso servidores web (EmbedThis).
Así mismo, se han creado otro tipo de lenguajes que se escriben en su propia sintaxis pero que
requieren compilarse, y al hacerlo se traducen a algún dialecto ECMAScript siendo el más usado
JavaScript. Existen gran variedad de implementaciones de este tipo, entre ellos se pueden mencio-
nar algunos como TypeScript, CoffeeScript, Dart, Brython, Objetive-J, o CRIScript, sin embargo
este tipo de lenguajes no son tema de estudio de este trabajo por lo que no serán abordados.
2.1. Breve descripción de JavaScript
El dialecto o lenguaje JavaScript (a veces abreviado como JS) es un lenguaje interpretado, muy
conocido por ser usado en navegadores web para visualizar páginas web, aunque también se ha
popularizado por su uso en otros entornos sin navegador como por ejemplo node.js o CoucchDB.
JavaScript es un lenguaje multi-paradigma, dinámico, basado en prototipos, con soporte de estilos
de programación funcional, orientado a objetos e imperativo (Hirsch, 2015).
Su sintaxis es similar a los lenguajes Java y C, por lo que la mayoría de la sintaxis funciona de
forma parecida, sin embargo difiere en que tiene objetos que se crean en tiempo de ejecución a los
cuales se les añaden métodos y propiedades, y una vez construido un objeto, éste puede usarse co-
mo modelo base o prototipo para crear objetos similares. Así pues, JavaScript puede funcionar tanto
como lenguaje procedimental como lenguaje orientado a objetos (Perrier, 2014).
El uso más común que se le da a JavaScript es incrustar instrucciones en páginas HTML para
ampliar los usos de las páginas web, por ejemplo, entre otras cosas lo que se puede hacer es:
 Enviar y recibir datos del servidor para cargar el nuevo contenido sin recargar la página.
 Lograr efectos de animaciones con elementos de la página.
 Crear contenido interactivo guiado por el usuario, por ejemplo un juego.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 4 de 9
 Validar información antes de enviarla al servidor.
La última versión es JavaScript 1.8.5 la cual se apega completamente a ECMAScript versión 5
y ya que es mantenido por Mozilla es la que se encuentra disponible para todos sus proyectos
incluido Firefox desde su versión 4, que fue lanzada en 2011.
JavaScript Engines
Para interpretar y ejecutar JavaScript están disponibles diversos “motores JavaScript”, el primer
y más antiguo motor fue el creado por Brendan Eich llamado SpiderMonkey que cumple con EC-
MA-262 edición 5 y está desarrollado en C/C++ (del cual se han hecho versiones optimizadas tales
como TraceMonkey, jägerMonkey e IonMonkey), de este motor se hizo otra versión llamada Rhino
que fue desarrollado en Java pero que cumple hasta la tercera versión del estándar. También hay
otros motores como V8 de Google escrito en C++ y que puede ejecutarse standalone o embebido en
una aplicación. Por otro lado JavaScriptCore (también conocido como SquirrelFish o Nitro) es el
motor que usan algunos navegadores basados en WebKit; y Carakan que es el motor usado en Ope-
ra (Perrier, 2014).
2.2. Breve descripción de JScript
JScript es el dialecto del estándar ECMAScript creado por Microsoft para su navegador Internet
Explorer (IE) y que soporta active scripting (mejor conocido como ActiveX Scripting), es decir,
soporta el uso de tecnologías creadas para Windows, por lo que permite ser usado en las páginas
web ASP (Active Server Pages), también soporta una compilación condicional, con lo que se permi-
te ejecutar código selectivamente en bloques de comentarios. Estás características adicionales al
estándar es lo que lo hace incompatible en otros navegadores web (Wikipedia, 2014).
En el mismo Microsoft Developer Network se indica que JScript no es una versión simplificada
de otro lenguaje, pero sin embargo está limitado, y por ejemplo, no se pueden escribir aplicaciones
standalone, es decir que funcionen independientemente, tampoco tiene soporte para la lectura o
escritura de archivos, y los scripts no pueden ejecutarse sin la presencia de un intérprete específico
como lo son Internet Explorer, ASP y Windows Script Host (Microsoft).
La primera versión de JScript fue lanzada en 1996 para Internet Explorer 3.0 y la más reciente
del 2011 que corresponde a JScript 9.0, la cual se basaba en ECMAScript 5.0 y fue incluida en IE
9. Aisladamente5
Microsoft estuvo trabajando en un nuevo dialecto, interrumpiendo el desarrollo de
JScript 9.0 para dar continuidad al nuevo dialecto denominado JScript .NET, el cual también se le
conoce como JScript 10.0 (aunque por las características dicho nombre sería incorrecto).
La versión JScript .NET
JScript .NET se caracteriza por compilar para .NET Framework y Common Language Runtime.
Es un potente lenguaje pero que no tiene muchas de las características de JScript por lo que en mu-
chos casos no se le podría considerar como un lenguaje de scripting, inclusive, es un auténtico len-
5
Fue a partir del lanzamiento de Visual Studio 2002 que JScript 7.0 fue incorporado, dos años antes de que
pararan el desarrollo de JScript para pasar a JScript .NET.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 5 de 9
guaje orientado a objetos que además se utiliza para aplicaciones que se ejecutan en el servidor
(Microsoft).
JScript Engines
Ya que JScript es mantenido únicamente por Microsoft, la cantidad de motores JScript es me-
nor. De hecho el único6
intérprete que se puede encontrar en las referencias es Chakra, desarrollado
para Internet Explorer 9 y posteriores versiones del navegador, desde su implementación Chakra
tenía la característica de ser bastante eficiente (en su versión de 32 bits), pues compila los scripts en
modo “just in time”, para ello usa un núcleo diferente en el que se ejecuta el navegador e inclusive,
si hay disponible una unidad gráfica de procesamiento (GPU) también la aprovecha, hoy en día aún
sigue haciendo aceleración por hardware (Wikipedia, 2013).
Existen otros intérpretes, como fue mencionado anteriormente, por ejemplo Windows Script
Host y ASP, sin embargo no están dirigidos a navegadores web, por lo que no serán considerados
en este documento.
3. Motores ECMAScript
Un motor ECMAScript es una aplicación que interpreta el código fuente y ejecuta el script acorde a
las instrucciones dadas. Los programas más comunes que incorporan estos motores son los navega-
dores web, los cuales implementan una API7
pública que permite crear objetos que se reflejan en el
DOM de una página, esa manipulación se hace por las instrucciones de los script a través del motor.
A continuación se hace un resumen de los principales intérpretes usados en navegadores web y pos-
teriormente se detallan los más relevantes (Wikipedia, 2015):
Proyectos Activos:
 SpiderMonkey: Fue el primer motor, el cual fue desarrollado para Netscape Navigator y
que ahora es mantenido por Mozilla y es usado principalmente en Firefox.
 V8: Desarrollado por Google y forma parte del navegador Chrome.
 JavaScriptCore: Mejor conocido como “Nitro”, es desarrollador por Apple para Safari.
 KJS: Desarrollado para el navegador web Konqueror de Linux bajo entorno KDE.
 Chakra: Creado por Microsoft para su navegador Internet Explorer.
Proyectos Inactivos:
 Tamarin: Desarrollado para la máquina virtual ActionScript usada en Flash, pero en 2006
Adobe donó el proyecto a Mozilla con el fin de mejorar las próximas generaciones de Ja-
vaScript y ActionScript.
 Carakan: Creado por Opera Software para el navegador Opera, sin embargo en 2013 Ope-
ra comenzó a usar V8, dejando de lado el desarrollo de Carakan.
6
Algunos consideran a Trident como un intérprete JScript, sin embargo Trident es el motor de renderizado, es
decir de diseño, el cual se encarga de interpretar principalmente HTML, CSS y XML.
7
Del inglés Application Programming Interface, es un conjunto de funciones y procedimientos que son ofre-
cidos en una librería para que otra aplicación pueda utilizarlos.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 6 de 9
 Futhark: Creado por Opera Software y antecesor de Carakan. Formaba parte del motor de
diseño Presto que también fue desarrollado por Opera.
 Narcissus: También creado por Brendan Eich (creador de SpiderMonkey), es un intérprete
meta circular, ya que es un motor JavaScript escrito en lenguaje JavaScript. Puede usarse en
Firefox con el plugin Zaphod.
 Rhino: Es un motor escrito completamente en lenguaje Java, que se creó para Javagtor, una
herramienta de Netscape, sin embargo en 1998 se canceló el proyecto y entonces fue dona-
do a Mozilla quien ha continuado su desarrollo, aunque su última versión es del 2012.
3.1. SpiderMonkey
Es el JavaScript Engine creado por Brendan Eich para el navegador Netscape Navigator, que poste-
riormente pasaría a ser licenciado como open source y finalmente mantenido por Mozilla Founda-
tion. SpiderMonkey está escrito en lenguaje C e incluye un compilador, intérprete, descompilador,
recolector de basura y clases estandarizadas (Wikipedia, 2014).
Usa el compilador TraceMonkey que permite una aceleración por hardware, el cual terminó
siendo sustituido por JägerMonkey que ofrecí más mejoras, sin embargo, ante la imposibilidad de
realizar ciertas optimizaciones, éste también fue remplazado por IonMonkey
SpiderMonkey se apega a la versión 5.1 del estándar ECMAScript y a una gran cantidad de ca-
racterísticas del ECMA-357 para interpretar XML (su soporte se interrumpió en 2013). La última
versión de SpiderMonkey es la 31 aunque ya se está trabajando en la versión 38.
3.2. V8
Fue creado en Google por Lars Bak, el cual está escrito en lenguaje C++ para ser usado en el nave-
gador Chrome y el navegador web de Android 2.2, y puede funcionar tanto standalone como inte-
grado en una aplicación (Wikipedia, 2014).
Este motor compila JavaScript a código máquina nativo, además tiene un recolector de basura
que es incremental, un ensamblador que está basado en el ensamblador Strongtalk, al liberar su
compilador Crankshaft logran mejoras de velocidad.
V8 se apega a la versión 5.0 de ECMAScript y la última versión de V8 es la 3.29.59 de sep-
tiembre de 2014.
3.3. KJS
Es un motor escrito en lenguaje C++ que pertenece al proyecto KDE, siendo destinado para el na-
vegador web Konqueror, del cual se basó JavaScriptCore para ser usado en Apple para el navega-
dor Safari. La última versión de KJS es la 5.6.0 publicada en enero de 2015 (Wikipedia, 2014).
3.4. WebKit
No es en sí mismo un motor, sino que es una completa plataforma que funciona como base para los
navegadores Safari, Chrome, Opera, Epiphany, Maxthon, Midori, QupZilla, y otros más. Está basa-
do en Konqueror del proyecto de KDE y es mantenido principalmente por Apple, Google y RIM.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 7 de 9
Webkit incluye algunos frameworks entre los que se encontraban JavaScriptCore, el intérprete
para JavaScript que está basado en KJS, pero que sin embargo desde 2008 el intérprete paso a ser
SquirrelFish (abreviado como SFX o conocido como Nitro) que compila JavaScript a código má-
quina y que por lo tanto acelerando la velocidad (Wikipedia, 2014).
El nacimiento de WebKit se debe a que Apple indicó que los motores de renderizado KHTML
y de JavaScript KJS permitían un desarrollo más fácil que otras tecnologías al tener un código pe-
queño, muy limpio y compatible con las normas; así que decidieron portarlos a MacOS X usando
para ello WebCore y JavaScriptCore.
En 2010 se anunció WebKit2, rediseñado desde cero para generar un modelo de procesos divi-
didos, donde el contenido de la web (JavaScript, HTML, diseño, etc.) se ejecuta cada uno en un
proceso separado.
En 2013 Google dejó WebKit para hacer una adaptación de éste al que llamó Blink y que man-
tiene junto con Opera, Blink ha resultado en motores muy veloces tanto para diseño como para in-
terpretar JavaScript.
4. ECMAScript en los navegadores web
A continuación se muestra a manera de resumen las implementaciones que han tenido los principa-
les navegadores web en sus motores para interpretar algún dialecto ECMAScript, el resumen es de
manera general sin especificar plataformas o características más técnicas8
:
Tabla 1. Comparativa de uso de Motores ECMAScript en los principales navegadores web
Navegador web Versión / Fecha Motor para ECMAScript
Mozilla Firefox 34.0 / Dic-2014 SpiderMonkey
Google Chrome 39.0 / Dic-2014 V8
Opera 26.0 / Dic-2014 V8
Safari 08.0 / Oct-2014 Nitro (WebKit)
Internet Explorer 11.0 / Sep-2014 Chakra
Konqueror 4.14 / Oct-2014 Nitro (WebKit)
Maxthon 04.4 / Dic-2014 Nitro (WebKit)
Fuente: Recopilación propia
También en la siguiente tabla se muestra el nivel de cumplimiento que tienen los diferentes na-
vegadores web (solo se consideran las más recientes versiones) para las el actual estándar EC-
MAScript, así como las futuras versiones9
:
8
Para conocer la lista de navegadores web existentes puede consultar los siguientes enlaces tanto para las
versiones de escritorio como móviles:
https://en.wikipedia.org/wiki/Web_browser_history
https://en.wikipedia.org/wiki/Mobile_browser
9
Basado en los resultados de la tabla de compatibilidad de http://kangax.github.io/compat-table/es5/ el día 9
de enero de 2015.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 8 de 9
Tabla 2. Nivel de apego a ECMAScript de los últimos y principales navegadores web
FF21+ CH23+ IE10+ SF6+ OP15+ iOS8 KQ4.13
ECMAScript 5 100% 100% 100% 100% 100% 100% 92%
FF36 CH40 IE11 SF8 OP27 iOS8 KQ4.14
ECMAScript 6 67% 35% 21% 22% 35% 22% 13%
FF35 CH37 IE11 SF8 OP27 iOS8 KQ4.13
ECMAScript 7 63% 13% 0% 0% ND 0% 0%
FF = Firefox
CH = Chrome
IE = Internet Explorer
SF = Safari
OP = Opera
iOS = iOS
KQ = Konqueror
+ = Y superiores
FF35  Firefox versión 35
FF21+  Firefox versión 25 y superiores
Fuente: Recopilación propia a partir de la tabla de Kangax (Kangax)
Como se puede observar, al día de hoy los últimos navegadores se apegan al estándar EC-
MA-262, sin embargo, para las futuras versiones, se puede notar que Mozilla es el que más trabaja
en la adopción del estándar, seguido por Google.
ACID3 es la tercera versión de la prueba de estándares para navegadores web, la cual se in-
cluyó un grupo de pruebas para ECMAScript, el Bucket 6. Aunque los resultados tienen tiempo
pues fue lanzada en 2008, pueden servir de referencia para analizar el nivel de compromiso de los
navegadores. La siguiente tabla muestra los resultados de las pruebas ACID3 en el 2008, ya que
actualmente todos los navegadores modernos aprueban el test y aún no han lanzado ACID4.
Tabla 3.Resultados de ACID3 en 2008
Chrome Firefox Internet Explorer Opera
78/100 71/100 14/100 83/100
Fuente: http://www.cnet.com/news/chrome-tops-ie-firefox-in-acid3-test/
5. Conclusión
De acuerdo a las estadísticas globales de StatCounter, Chrome es el navegador con mayor adopción,
seguido de Internet Explorer y Firefox, por lo cual los usuarios de la web no han tenido tan mala
elección, por las siguientes razones:
 Chrome es el segundo mejor calificado en compatibilidad con ECMAScript
 Chrome usa el motor V8, que es bastante eficiente y compila JavaScript, el lenguaje más
estandarizado que existe de ECMAScript.
Ahora bien, la principal razón por la que se podría elegir uno y otro navegador sería:
 Firefox una mayor compatibilidad con ECMAScript.
 Opera es una alternativa a Chrome, ya que los desarrollos van de la mano.
 Internet Explorer es el más rápido en procesar ECMAScript10
.
 En cuanto a Safari, simplemente no es la mejor opción que existe.
10
Leer comparativa en http://www.muycomputer.com/2012/04/02/benchmark-navegadores-web-chrome-18-
frente-al-resto
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Computación en el Cliente Web
10 de enero de 2015 Página 9 de 9
Referencias Bibliográficas
Adobe Systems. (n.d.). Scripting Developer Center | Adobe Developer Connection. Retrieved Enero 9, 2015,
from Adobe Developer Connection: http://www.adobe.com/devnet/scripting.html
Digital Mars. (2012, Octubre 8). ECMAScript - Digital Mars. Retrieved from Digital Mars :
http://www.digitalmars.com/dscript/
Ecma International. (2011, Junio). ECMAScript Language Specification - ECMA-262 Edition 5.1. Retrieved
Enero 09, 2015, from Ecma International: http://www.ecma-international.org/ecma-262/5.1/
Ecma International. (2014, Diciembre 24). harmony:specification_drafts [ES Wiki]. Retrieved Enero 9, 2015,
from Wiki - Ecma International:
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
EmbedThis. (n.d.). Ejscript Javascript Language. Retrieved Enero 9, 2015, from EmbedThis:
https://embedthis.com/ejscript/
Hirsch, L. (2015, Enero 3). JavaScript | MDN. Retrieved Enero 9, 2015, from Mozilla Developer Network:
https://developer.mozilla.org/es/docs/Web/JavaScript
Kangax. (n.d.). Kangax projects. Retrieved Enero 9, 2015, from Stuff by Kangax: http://kangax.github.io/
LibrosWeb.es. (n.d.). 1.2. Breve historia (Introducción a JavaScript). Retrieved Enero 9, 2015, from
LibrosWeb.es: http://librosweb.es/javascript/capitulo_1/breve_historia.html
Microsoft. (n.d.). JScript. Retrieved Enero 9, 2015, from MSDN: http://msdn.microsoft.com/es-
es/library/72bd815a.aspx
Microsoft. (n.d.). JScript (ECMAScript3). Retrieved Enero 9, 2015, from MSDN:
http://msdn.microsoft.com/en-us/library/hbxc2t98%28VS.85%29.aspx
Perrier, J.-Y. (2014, Julio 3). Acerca de JavaScript - JavaScript | MDN. Retrieved Enero 9, 2015, from
Mozilla Developer Network:
https://developer.mozilla.org/es/docs/Web/JavaScript/Acerca_de_JavaScript
Sikos, L. (2011). Web Standards: Mastering HTML5, CSS3, and XML. Apress.
Wikipedia. (2013, Marzo 12). Chakra (intérprete de JScript) - Wikipedia, la enciclopedia libre. Retrieved
Enero 9, 2015, from Wikipedia, la enciclopedia libre:
https://es.wikipedia.org/wiki/Chakra_%28int%C3%A9rprete_de_JScript%29
Wikipedia. (2014, Diciembre 6). JavaScript - Wikipedia, la enciclopedia libre. Retrieved Enero 9, 2015, from
Wikipedia, la enciclopedia libre: http://es.wikipedia.org/wiki/JavaScrip
Wikipedia. (2014, Diciembre 31). JScript - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from
Wikipedia, the free encyclopedia: https://en.wikipedia.org/wiki/JScript
Wikipedia. (2014, Julio 10). KJS (software) - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from
Wikipedia, the free encyclopedia: https://es.wikipedia.org/wiki/KJS
Wikipedia. (2014, Noviembre 19). Script - Wikipedia, la enciclopedia libre. Retrieved Enero 09, 2015, from
Wikipedia, la enciclopedia libre: http://es.wikipedia.org/wiki/Script
Wikipedia. (2014, Octubre 24). SpiderMonkey (software) - Wikipedia, the free encyclopedia. Retrieved Enero
9, 2015, from Wikipedia, the free encyclopedia:
https://en.wikipedia.org/wiki/SpiderMonkey_%28software%29
Wikipedia. (2014, Septiembre 14). V8 (JavaScript engine) - Wikipedia, the free encyclopedia. Retrieved
Enero 9, 2015, from Wikipedia, the free encyclopedia:
https://en.wikipedia.org/wiki/V8_%28JavaScript_engine%29
Wikipedia. (2014, Agosto 28). WebKit - Wikipedia, la enciclopedia libre. Retrieved Enero 9, 2015, from
Wikipedia, la enciclopedia libre: https://es.wikipedia.org/wiki/WebKit
Wikipedia. (2015, Enero 9). JavaScript engine - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015,
from Wikipedia, the free encyclopedia: https://en.wikipedia.org/wiki/JavaScript_engine

Contenu connexe

Tendances

JavaScript
JavaScriptJavaScript
JavaScriptJomicast
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
Entendiendo el .NET Framework
Entendiendo el .NET FrameworkEntendiendo el .NET Framework
Entendiendo el .NET FrameworkSorey García
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesHéctor Garduño Real
 
Arquitectura web 2
Arquitectura web 2Arquitectura web 2
Arquitectura web 2vekerly
 
El world wide web
El world wide webEl world wide web
El world wide webheli94
 
Yeison fabian
Yeison fabianYeison fabian
Yeison fabianJhohan Cx
 
Presentacion tecnica microsoft.net
Presentacion tecnica microsoft.netPresentacion tecnica microsoft.net
Presentacion tecnica microsoft.netRulo Rosaz
 
HTML5 - XHTML - XML
HTML5 - XHTML - XMLHTML5 - XHTML - XML
HTML5 - XHTML - XMLjosevaldez20
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHPJomicast
 

Tendances (19)

JavaScript
JavaScriptJavaScript
JavaScript
 
Aaron
AaronAaron
Aaron
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
0. Antecedentes Asp
0. Antecedentes Asp0. Antecedentes Asp
0. Antecedentes Asp
 
Marianapalacio katerinemarin
Marianapalacio katerinemarinMarianapalacio katerinemarin
Marianapalacio katerinemarin
 
Actividad #2
Actividad #2Actividad #2
Actividad #2
 
Entendiendo el .NET Framework
Entendiendo el .NET FrameworkEntendiendo el .NET Framework
Entendiendo el .NET Framework
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajes
 
Arquitectura web 2
Arquitectura web 2Arquitectura web 2
Arquitectura web 2
 
El world wide web
El world wide webEl world wide web
El world wide web
 
EQUIPO 2,2A PARTE DE LAS AGUILAS
EQUIPO 2,2A PARTE DE LAS AGUILASEQUIPO 2,2A PARTE DE LAS AGUILAS
EQUIPO 2,2A PARTE DE LAS AGUILAS
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 
Yeison fabian
Yeison fabianYeison fabian
Yeison fabian
 
Que es html
Que es htmlQue es html
Que es html
 
Presentacion tecnica microsoft.net
Presentacion tecnica microsoft.netPresentacion tecnica microsoft.net
Presentacion tecnica microsoft.net
 
Tecnologia ASP.net
Tecnologia ASP.netTecnologia ASP.net
Tecnologia ASP.net
 
Red coorporativa
Red coorporativaRed coorporativa
Red coorporativa
 
HTML5 - XHTML - XML
HTML5 - XHTML - XMLHTML5 - XHTML - XML
HTML5 - XHTML - XML
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHP
 

En vedette

16 Factores de la Personalidad
16 Factores de la Personalidad16 Factores de la Personalidad
16 Factores de la PersonalidadPaita71
 
Driving the Internet of Things with Mobile Apps at tiConf
Driving the Internet of Things with Mobile Apps at tiConfDriving the Internet of Things with Mobile Apps at tiConf
Driving the Internet of Things with Mobile Apps at tiConfHans Scharler
 
Como hacer un trabajo de investigación
Como hacer un trabajo de investigaciónComo hacer un trabajo de investigación
Como hacer un trabajo de investigaciónrtonarojas
 
Living in the Cloud: 
How Using Online Services Can Let You Soar
Living in the Cloud: 
How Using Online Services Can Let You SoarLiving in the Cloud: 
How Using Online Services Can Let You Soar
Living in the Cloud: 
How Using Online Services Can Let You SoarNortheast Kansas Library System
 
Doppl development iteration #6
Doppl development   iteration #6Doppl development   iteration #6
Doppl development iteration #6Diego Perini
 
Conversatorio de mujeres vip 2015
Conversatorio de mujeres  vip  2015Conversatorio de mujeres  vip  2015
Conversatorio de mujeres vip 2015Blanca Manaure
 
REVISTA JÓVENES Y VALORES Nº 5 BITACORA11
REVISTA JÓVENES Y VALORES Nº 5 BITACORA11REVISTA JÓVENES Y VALORES Nº 5 BITACORA11
REVISTA JÓVENES Y VALORES Nº 5 BITACORA11Mayka Montes
 
Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.
Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.
Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.Paltuna
 
Vision life-income-plan-08-01-13
Vision life-income-plan-08-01-13Vision life-income-plan-08-01-13
Vision life-income-plan-08-01-13Siddanna Balapgol
 
Infoblad Ardus Engels
Infoblad Ardus EngelsInfoblad Ardus Engels
Infoblad Ardus EngelsRaben1
 
09 2nd Quarter Industrial Review
09 2nd Quarter Industrial Review09 2nd Quarter Industrial Review
09 2nd Quarter Industrial ReviewJessica Parrish
 
Ley nº 30137 pago de sentencias judic
Ley nº 30137  pago de sentencias judicLey nº 30137  pago de sentencias judic
Ley nº 30137 pago de sentencias judicPedro Carita Condori
 

En vedette (20)

16 Factores de la Personalidad
16 Factores de la Personalidad16 Factores de la Personalidad
16 Factores de la Personalidad
 
Driving the Internet of Things with Mobile Apps at tiConf
Driving the Internet of Things with Mobile Apps at tiConfDriving the Internet of Things with Mobile Apps at tiConf
Driving the Internet of Things with Mobile Apps at tiConf
 
Cuerpo Alma
Cuerpo AlmaCuerpo Alma
Cuerpo Alma
 
Como hacer un trabajo de investigación
Como hacer un trabajo de investigaciónComo hacer un trabajo de investigación
Como hacer un trabajo de investigación
 
Living in the Cloud: 
How Using Online Services Can Let You Soar
Living in the Cloud: 
How Using Online Services Can Let You SoarLiving in the Cloud: 
How Using Online Services Can Let You Soar
Living in the Cloud: 
How Using Online Services Can Let You Soar
 
Guias nuevas
Guias nuevasGuias nuevas
Guias nuevas
 
Doppl development iteration #6
Doppl development   iteration #6Doppl development   iteration #6
Doppl development iteration #6
 
Conversatorio de mujeres vip 2015
Conversatorio de mujeres  vip  2015Conversatorio de mujeres  vip  2015
Conversatorio de mujeres vip 2015
 
REVISTA JÓVENES Y VALORES Nº 5 BITACORA11
REVISTA JÓVENES Y VALORES Nº 5 BITACORA11REVISTA JÓVENES Y VALORES Nº 5 BITACORA11
REVISTA JÓVENES Y VALORES Nº 5 BITACORA11
 
Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.
Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.
Parafarmacia Altuna, productos de salud, belleza y dietética. Catálogo.
 
Vision life-income-plan-08-01-13
Vision life-income-plan-08-01-13Vision life-income-plan-08-01-13
Vision life-income-plan-08-01-13
 
Tarea N°2
Tarea N°2Tarea N°2
Tarea N°2
 
Infoblad Ardus Engels
Infoblad Ardus EngelsInfoblad Ardus Engels
Infoblad Ardus Engels
 
Estadistica eivi
Estadistica eiviEstadistica eivi
Estadistica eivi
 
09 2nd Quarter Industrial Review
09 2nd Quarter Industrial Review09 2nd Quarter Industrial Review
09 2nd Quarter Industrial Review
 
NRK/Skole
NRK/SkoleNRK/Skole
NRK/Skole
 
Las vegas info
Las vegas infoLas vegas info
Las vegas info
 
Fantivir
FantivirFantivir
Fantivir
 
Ley nº 30137 pago de sentencias judic
Ley nº 30137  pago de sentencias judicLey nº 30137  pago de sentencias judic
Ley nº 30137 pago de sentencias judic
 
Diapo Option Vendeur[1]
Diapo Option Vendeur[1]Diapo Option Vendeur[1]
Diapo Option Vendeur[1]
 

Similaire à Los dialectos ECMAScript y su implementación en los navegadores

EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBUNIV DE CIENCIAS Y ARTES
 
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBUNIV DE CIENCIAS Y ARTES
 
Lenguaje-de-programacion-JavaScript-1.pdf
Lenguaje-de-programacion-JavaScript-1.pdfLenguaje-de-programacion-JavaScript-1.pdf
Lenguaje-de-programacion-JavaScript-1.pdfJaviMartin21
 
Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1giancarlos
 
Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1Oscar Correa
 
Desarrollo de página web dinámica
Desarrollo de página web dinámicaDesarrollo de página web dinámica
Desarrollo de página web dinámicaJuan Carlos Medrano
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptKarsarmi
 
Act1 tecnologiaweb uni1
Act1 tecnologiaweb uni1Act1 tecnologiaweb uni1
Act1 tecnologiaweb uni1fanyto
 
los-diferentes-lenguajes-de-programacion-para-la-web
 los-diferentes-lenguajes-de-programacion-para-la-web los-diferentes-lenguajes-de-programacion-para-la-web
los-diferentes-lenguajes-de-programacion-para-la-webolguisf
 
los diferentes lenguajes de programación para-la-web
 los diferentes lenguajes de programación para-la-web los diferentes lenguajes de programación para-la-web
los diferentes lenguajes de programación para-la-webolguisf
 
2009_asp.net_capitulo_1
2009_asp.net_capitulo_12009_asp.net_capitulo_1
2009_asp.net_capitulo_1zhylz Zevallos
 
Programacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorProgramacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorJose Felix Moran Agusto
 

Similaire à Los dialectos ECMAScript y su implementación en los navegadores (20)

EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
 
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
 
Lenguaje-de-programacion-JavaScript-1.pdf
Lenguaje-de-programacion-JavaScript-1.pdfLenguaje-de-programacion-JavaScript-1.pdf
Lenguaje-de-programacion-JavaScript-1.pdf
 
Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1
 
Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1Lenguaje de-programacion-java script-1
Lenguaje de-programacion-java script-1
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 
Desarrollo de página web dinámica
Desarrollo de página web dinámicaDesarrollo de página web dinámica
Desarrollo de página web dinámica
 
Web services
Web servicesWeb services
Web services
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
 
Javacript
JavacriptJavacript
Javacript
 
Java script
Java scriptJava script
Java script
 
Temas Relacionados Web 2
Temas Relacionados Web 2Temas Relacionados Web 2
Temas Relacionados Web 2
 
Act1 tecnologiaweb uni1
Act1 tecnologiaweb uni1Act1 tecnologiaweb uni1
Act1 tecnologiaweb uni1
 
los-diferentes-lenguajes-de-programacion-para-la-web
 los-diferentes-lenguajes-de-programacion-para-la-web los-diferentes-lenguajes-de-programacion-para-la-web
los-diferentes-lenguajes-de-programacion-para-la-web
 
los diferentes lenguajes de programación para-la-web
 los diferentes lenguajes de programación para-la-web los diferentes lenguajes de programación para-la-web
los diferentes lenguajes de programación para-la-web
 
2009_asp.net_capitulo_1
2009_asp.net_capitulo_12009_asp.net_capitulo_1
2009_asp.net_capitulo_1
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 
Investigacion de pagina web
Investigacion de pagina webInvestigacion de pagina web
Investigacion de pagina web
 
Programacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorProgramacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidor
 

Plus de Héctor Garduño Real

Sistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-LearningSistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-LearningHéctor Garduño Real
 
Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009Héctor Garduño Real
 
Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes Héctor Garduño Real
 
Asignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de ComputadorasAsignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de ComputadorasHéctor Garduño Real
 
Asignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computaciónAsignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computaciónHéctor Garduño Real
 
Principales CMS y Estadísticas de uso
Principales CMS y Estadísticas de usoPrincipales CMS y Estadísticas de uso
Principales CMS y Estadísticas de usoHéctor Garduño Real
 
Práctica de instalación y uso de Joomla
Práctica de instalación y uso de JoomlaPráctica de instalación y uso de Joomla
Práctica de instalación y uso de JoomlaHéctor Garduño Real
 
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web ServicesPráctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web ServicesHéctor Garduño Real
 
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...Héctor Garduño Real
 
Metodologías de Desarrollo de Aplicaciones Web Seguras
Metodologías de Desarrollo de Aplicaciones Web SegurasMetodologías de Desarrollo de Aplicaciones Web Seguras
Metodologías de Desarrollo de Aplicaciones Web SegurasHéctor Garduño Real
 
Análisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las CosasAnálisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las CosasHéctor Garduño Real
 
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0Héctor Garduño Real
 
Práctica de instalación y uso de Alfresco
Práctica de instalación y uso de AlfrescoPráctica de instalación y uso de Alfresco
Práctica de instalación y uso de AlfrescoHéctor Garduño Real
 
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)Héctor Garduño Real
 
Práctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audioPráctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audioHéctor Garduño Real
 

Plus de Héctor Garduño Real (20)

Sistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-LearningSistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-Learning
 
Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009
 
Asignatura: Informática 1
Asignatura: Informática 1Asignatura: Informática 1
Asignatura: Informática 1
 
Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes
 
Asignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de ComputadorasAsignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de Computadoras
 
Asignatura: Desarrollo Sustentable
Asignatura: Desarrollo SustentableAsignatura: Desarrollo Sustentable
Asignatura: Desarrollo Sustentable
 
Asignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computaciónAsignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computación
 
Principales CMS y Estadísticas de uso
Principales CMS y Estadísticas de usoPrincipales CMS y Estadísticas de uso
Principales CMS y Estadísticas de uso
 
Práctica de instalación y uso de Joomla
Práctica de instalación y uso de JoomlaPráctica de instalación y uso de Joomla
Práctica de instalación y uso de Joomla
 
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web ServicesPráctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
 
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
 
Metodologías de Desarrollo de Aplicaciones Web Seguras
Metodologías de Desarrollo de Aplicaciones Web SegurasMetodologías de Desarrollo de Aplicaciones Web Seguras
Metodologías de Desarrollo de Aplicaciones Web Seguras
 
Análisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las CosasAnálisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las Cosas
 
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
 
Análisis del Whitepaper DB4O
Análisis del Whitepaper DB4OAnálisis del Whitepaper DB4O
Análisis del Whitepaper DB4O
 
Práctica de instalación y uso de Alfresco
Práctica de instalación y uso de AlfrescoPráctica de instalación y uso de Alfresco
Práctica de instalación y uso de Alfresco
 
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
 
Más alla de la web 2.0
Más alla de la web 2.0Más alla de la web 2.0
Más alla de la web 2.0
 
Práctica de herramientas web 2.0
Práctica de herramientas web 2.0Práctica de herramientas web 2.0
Práctica de herramientas web 2.0
 
Práctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audioPráctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audio
 

Dernier

Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 

Dernier (10)

Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

Los dialectos ECMAScript y su implementación en los navegadores

  • 1. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 1 de 9 Los dialectos ECMAScript y su implementación en los navegadores INTRODUCCIÓN ECMAScript es al día de hoy uno de los principales y más importantes lenguaje de scipting que es multiplataforma e independiente de cualquier tecnología o empresa, lo que le brinda una considera- ble ventaja frente a otros lenguajes. Fue tomado como norma, por lo que se han creado otros len- guajes a partir de ECMAScript con diferentes fines, el caso más difundido es en el cliente a través de los navegadores web para crear contenido dinámico en las páginas web y dotarles la posibilidad de interactuar con el usuario. Este estudio brinda un panorama general sobre ECMAScript, sus diferentes dialectos y las principales implementaciones que se han hecho para poder interpretar y ejecutar este tipo de lengua- je del lado del cliente, es decir, en los navegadores web. 1. ECMAScript ECMAScript es una “especificación de lenguaje de scripting”, es decir, un estándar que define las características que debe cumplir un lenguaje de programación que sea capaz de interpretar y proce- sar scripts1 , es decir, un lenguaje de programación interpretado, el cual se caracteriza por ser impe- rativo, estructurado, dinámico, funcional y con orientación a objetos2 . Para entender un poco más sobre ECMAScript es necesario retornar en la historia y resaltar los hechos más relevantes. En aquel entonces, antes de que apareciera el primer lenguaje con estas ca- racterísticas, la potencia de las computadoras era poca y la velocidad de conexión de Internet muy limitada, de modo que cuando un cliente enviaba información (por ejemplo al rellenar un formula- rio) al servidor, este último tenía que hacer validaciones para comprobar si los datos eran correctos, sin embargo resultaba muy común que el usuario se equivocara, por lo cual se tenían que hacer múltiples intentos previos enviando datos incorrectos al servidor antes de lograr un envío exitoso, de manera tal que el servidor terminaba sobrecargándose y el usuario desesperado ante la lentitud de la velocidad y tener que repetir el proceso. Esta fue una de las razones por las que se ve la nece- sidad de implementar un lenguaje de programación en el cliente, el cual ayudara a disminuir la car- ga de trabajo en el servidor haciendo procesamiento de información en el mismo cliente y con ello disminuyendo también el tráfico de red. 1 Un script es un archivo almacenado en formato de texto plano que contiene un conjunto de órdenes para realizar diversas tareas como combinar componentes, interactuar con el Sistema Operativo o con el usuario. 2 Para entender los diferentes paradigmas de programación consulte el libro “Introducción a la programación. Teoría y práctica” de Jesús Javier Rodríguez en sus páginas 4-6, o la página web http://es.wikipedia.org/wiki/Paradigma_de_programación
  • 2. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 2 de 9 Así pues, el primer lenguaje en aparecer con las características de la especificación EC- MAScript fue un lenguaje inventado por Brendan Eich para el navegador web Netscape Navigator 2.002 en diciembre de 1995 que originalmente fue llamado Mocha y que posteriormente sería de- nominado LiveScript. Entonces este lenguaje comenzó a popularizarse y diversas empresas trataron de imitar y copiar el lenguaje, como el caso de Microsoft, que en 1996 lanza el lenguaje JScript para su navegador Internet Explorer 3.0, de pronto comenzó a darse una guerra de navegadores, cada uno ejecutando su propia versión de lenguaje scripting. Fue por esta razón que Netscape Communications decide aliarse con Sun Microsystem con la finalidad de desarrollar un nuevo y mejor lenguaje, el cual llamaron JavaScript y que continuaron mejorando hasta que en noviembre de 1996 proponen JavaScript 1.1 para que fuera adoptado como estándar. El organismo ECMA (European Computer Manufacturers Association) decide crear un comité para estandarizarlo (to- mando también como referencia JScript) y hacerlo independiente de toda plataforma y empresa, hasta que en junio de 1997 publican el estándar ECMA-262 definiéndolo como ECMAScript. A su vez, ECMA envía la especificación a ISO/IEC JTC 1 que bajo un procedimiento rápido de adopción es aprobado en abril de 1998 bajo la denominación ISO/IEC 16262. Para adecuarse al estándar internacional, ECMA vuelve a redactar las especificaciones y en junio del mismo año publica la segunda versión de ECMAScript (Ecma International, 2011) (Wikipedia, 2014). Es hasta diciembre de 1999 que se publica la tercera versión de la especificación, la cual fue es- tandarizada internacionalmente como ISO/IEC 16262:2002. Sin llegar a realizar la publicación de la cuarta versión, dan a conocer ECMA-262 5ta edición que es inmediatamente revisada y estanda- rizada internacionalmente como ISO/IEC 16262:2011, y para apegarse a ella, ECMA publica en junio de 2011 ECMA-262 versión 5.1, que es más estricta pues se apega completamente a la terce- ra versión de la norma internacional (Ecma International, 2011). La versión 5.1 es la más actual, sin embargo ya se está trabajando en la sexta versión bajo el nombre “Harmony” o “ES.next” 3 que está muy próxima a publicarse, de hecho, algunos navegado- res web ya incorporan características que tendrá esta versión4 . Además de la sexta versión que está próxima a publicarse, también se está comenzando a elaborar la séptima versión de ECMA-262 y además se propone un ciclo de lanzamiento de dos años (Ecma International, 2014). 2. Los dialectos ECMAScript Cada que una organización realiza una implementación del estándar ECMAScript se le conoce co- mo “dialecto”. Cada empresa suele adaptar ECMAScript a sus necesidades y con los fines que me- jor crea convenientes creando un dialecto nuevo, y aunque pueden parecerse bastante entre sí, tie- nen diferencias sustanciales, ya que las características que no se apegan al estándar tendrán proble- 3 Se pueden consultar las nuevas características y su nivel de adopción de las próximas versiones de EC- MAScript en la página http://kangax.github.io/compat-table/es5/ 4 En el siguiente enlace se puede observar el nivel de adopción de ECMAScript 6 en Firefox) https://developer.mozilla.org/en- US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla
  • 3. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 3 de 9 mas de compatibilidad con los motores de ejecución de las aplicaciones que intenten interpretarlos, por lo que una instrucción podría por ejemplo funcionar en un navegador web pero no en otro. Entre las tres implementaciones principales que se conocen de ECMAScript se encuentran los dialectos JavaScript, JScript y ActionScript. JavaScript es el dialecto más usado en las páginas web el cual sirve para añadir interacción y funcionalidad a las mismas. JScript por su parte es usado principalmente para la creación de páginas en ASP y que ha evolucionado a lo que hoy se conoce como JScript .NET. Y en cuanto a ActionScript, es una implementación hecha específicamente para Flash (Sikos, 2011, págs. 230-231). Hay otras implementaciones para usos específicos por lo que no se apegan enteramente al es- tándar ECMAScript o añaden más características, tal es el caso de ExtendScript que es un lenguaje que creó Adobe Systems para usar con los productos de su Creative Suite (Adobe Systems), o tam- bién DMDScript (conocido como DScript) que es una implementación especialmente adaptada para ser usada en el lenguaje de programación “D” y en “C++” (Digital Mars, 2012). De igual manera han surgido diferentes sub-implementaciones como es el caso de Ejscript que es una implementación basada en JavaScript para ser usado en aplicaciones embebidas como por ejemplo dispositivos móviles o incluso servidores web (EmbedThis). Así mismo, se han creado otro tipo de lenguajes que se escriben en su propia sintaxis pero que requieren compilarse, y al hacerlo se traducen a algún dialecto ECMAScript siendo el más usado JavaScript. Existen gran variedad de implementaciones de este tipo, entre ellos se pueden mencio- nar algunos como TypeScript, CoffeeScript, Dart, Brython, Objetive-J, o CRIScript, sin embargo este tipo de lenguajes no son tema de estudio de este trabajo por lo que no serán abordados. 2.1. Breve descripción de JavaScript El dialecto o lenguaje JavaScript (a veces abreviado como JS) es un lenguaje interpretado, muy conocido por ser usado en navegadores web para visualizar páginas web, aunque también se ha popularizado por su uso en otros entornos sin navegador como por ejemplo node.js o CoucchDB. JavaScript es un lenguaje multi-paradigma, dinámico, basado en prototipos, con soporte de estilos de programación funcional, orientado a objetos e imperativo (Hirsch, 2015). Su sintaxis es similar a los lenguajes Java y C, por lo que la mayoría de la sintaxis funciona de forma parecida, sin embargo difiere en que tiene objetos que se crean en tiempo de ejecución a los cuales se les añaden métodos y propiedades, y una vez construido un objeto, éste puede usarse co- mo modelo base o prototipo para crear objetos similares. Así pues, JavaScript puede funcionar tanto como lenguaje procedimental como lenguaje orientado a objetos (Perrier, 2014). El uso más común que se le da a JavaScript es incrustar instrucciones en páginas HTML para ampliar los usos de las páginas web, por ejemplo, entre otras cosas lo que se puede hacer es:  Enviar y recibir datos del servidor para cargar el nuevo contenido sin recargar la página.  Lograr efectos de animaciones con elementos de la página.  Crear contenido interactivo guiado por el usuario, por ejemplo un juego.
  • 4. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 4 de 9  Validar información antes de enviarla al servidor. La última versión es JavaScript 1.8.5 la cual se apega completamente a ECMAScript versión 5 y ya que es mantenido por Mozilla es la que se encuentra disponible para todos sus proyectos incluido Firefox desde su versión 4, que fue lanzada en 2011. JavaScript Engines Para interpretar y ejecutar JavaScript están disponibles diversos “motores JavaScript”, el primer y más antiguo motor fue el creado por Brendan Eich llamado SpiderMonkey que cumple con EC- MA-262 edición 5 y está desarrollado en C/C++ (del cual se han hecho versiones optimizadas tales como TraceMonkey, jägerMonkey e IonMonkey), de este motor se hizo otra versión llamada Rhino que fue desarrollado en Java pero que cumple hasta la tercera versión del estándar. También hay otros motores como V8 de Google escrito en C++ y que puede ejecutarse standalone o embebido en una aplicación. Por otro lado JavaScriptCore (también conocido como SquirrelFish o Nitro) es el motor que usan algunos navegadores basados en WebKit; y Carakan que es el motor usado en Ope- ra (Perrier, 2014). 2.2. Breve descripción de JScript JScript es el dialecto del estándar ECMAScript creado por Microsoft para su navegador Internet Explorer (IE) y que soporta active scripting (mejor conocido como ActiveX Scripting), es decir, soporta el uso de tecnologías creadas para Windows, por lo que permite ser usado en las páginas web ASP (Active Server Pages), también soporta una compilación condicional, con lo que se permi- te ejecutar código selectivamente en bloques de comentarios. Estás características adicionales al estándar es lo que lo hace incompatible en otros navegadores web (Wikipedia, 2014). En el mismo Microsoft Developer Network se indica que JScript no es una versión simplificada de otro lenguaje, pero sin embargo está limitado, y por ejemplo, no se pueden escribir aplicaciones standalone, es decir que funcionen independientemente, tampoco tiene soporte para la lectura o escritura de archivos, y los scripts no pueden ejecutarse sin la presencia de un intérprete específico como lo son Internet Explorer, ASP y Windows Script Host (Microsoft). La primera versión de JScript fue lanzada en 1996 para Internet Explorer 3.0 y la más reciente del 2011 que corresponde a JScript 9.0, la cual se basaba en ECMAScript 5.0 y fue incluida en IE 9. Aisladamente5 Microsoft estuvo trabajando en un nuevo dialecto, interrumpiendo el desarrollo de JScript 9.0 para dar continuidad al nuevo dialecto denominado JScript .NET, el cual también se le conoce como JScript 10.0 (aunque por las características dicho nombre sería incorrecto). La versión JScript .NET JScript .NET se caracteriza por compilar para .NET Framework y Common Language Runtime. Es un potente lenguaje pero que no tiene muchas de las características de JScript por lo que en mu- chos casos no se le podría considerar como un lenguaje de scripting, inclusive, es un auténtico len- 5 Fue a partir del lanzamiento de Visual Studio 2002 que JScript 7.0 fue incorporado, dos años antes de que pararan el desarrollo de JScript para pasar a JScript .NET.
  • 5. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 5 de 9 guaje orientado a objetos que además se utiliza para aplicaciones que se ejecutan en el servidor (Microsoft). JScript Engines Ya que JScript es mantenido únicamente por Microsoft, la cantidad de motores JScript es me- nor. De hecho el único6 intérprete que se puede encontrar en las referencias es Chakra, desarrollado para Internet Explorer 9 y posteriores versiones del navegador, desde su implementación Chakra tenía la característica de ser bastante eficiente (en su versión de 32 bits), pues compila los scripts en modo “just in time”, para ello usa un núcleo diferente en el que se ejecuta el navegador e inclusive, si hay disponible una unidad gráfica de procesamiento (GPU) también la aprovecha, hoy en día aún sigue haciendo aceleración por hardware (Wikipedia, 2013). Existen otros intérpretes, como fue mencionado anteriormente, por ejemplo Windows Script Host y ASP, sin embargo no están dirigidos a navegadores web, por lo que no serán considerados en este documento. 3. Motores ECMAScript Un motor ECMAScript es una aplicación que interpreta el código fuente y ejecuta el script acorde a las instrucciones dadas. Los programas más comunes que incorporan estos motores son los navega- dores web, los cuales implementan una API7 pública que permite crear objetos que se reflejan en el DOM de una página, esa manipulación se hace por las instrucciones de los script a través del motor. A continuación se hace un resumen de los principales intérpretes usados en navegadores web y pos- teriormente se detallan los más relevantes (Wikipedia, 2015): Proyectos Activos:  SpiderMonkey: Fue el primer motor, el cual fue desarrollado para Netscape Navigator y que ahora es mantenido por Mozilla y es usado principalmente en Firefox.  V8: Desarrollado por Google y forma parte del navegador Chrome.  JavaScriptCore: Mejor conocido como “Nitro”, es desarrollador por Apple para Safari.  KJS: Desarrollado para el navegador web Konqueror de Linux bajo entorno KDE.  Chakra: Creado por Microsoft para su navegador Internet Explorer. Proyectos Inactivos:  Tamarin: Desarrollado para la máquina virtual ActionScript usada en Flash, pero en 2006 Adobe donó el proyecto a Mozilla con el fin de mejorar las próximas generaciones de Ja- vaScript y ActionScript.  Carakan: Creado por Opera Software para el navegador Opera, sin embargo en 2013 Ope- ra comenzó a usar V8, dejando de lado el desarrollo de Carakan. 6 Algunos consideran a Trident como un intérprete JScript, sin embargo Trident es el motor de renderizado, es decir de diseño, el cual se encarga de interpretar principalmente HTML, CSS y XML. 7 Del inglés Application Programming Interface, es un conjunto de funciones y procedimientos que son ofre- cidos en una librería para que otra aplicación pueda utilizarlos.
  • 6. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 6 de 9  Futhark: Creado por Opera Software y antecesor de Carakan. Formaba parte del motor de diseño Presto que también fue desarrollado por Opera.  Narcissus: También creado por Brendan Eich (creador de SpiderMonkey), es un intérprete meta circular, ya que es un motor JavaScript escrito en lenguaje JavaScript. Puede usarse en Firefox con el plugin Zaphod.  Rhino: Es un motor escrito completamente en lenguaje Java, que se creó para Javagtor, una herramienta de Netscape, sin embargo en 1998 se canceló el proyecto y entonces fue dona- do a Mozilla quien ha continuado su desarrollo, aunque su última versión es del 2012. 3.1. SpiderMonkey Es el JavaScript Engine creado por Brendan Eich para el navegador Netscape Navigator, que poste- riormente pasaría a ser licenciado como open source y finalmente mantenido por Mozilla Founda- tion. SpiderMonkey está escrito en lenguaje C e incluye un compilador, intérprete, descompilador, recolector de basura y clases estandarizadas (Wikipedia, 2014). Usa el compilador TraceMonkey que permite una aceleración por hardware, el cual terminó siendo sustituido por JägerMonkey que ofrecí más mejoras, sin embargo, ante la imposibilidad de realizar ciertas optimizaciones, éste también fue remplazado por IonMonkey SpiderMonkey se apega a la versión 5.1 del estándar ECMAScript y a una gran cantidad de ca- racterísticas del ECMA-357 para interpretar XML (su soporte se interrumpió en 2013). La última versión de SpiderMonkey es la 31 aunque ya se está trabajando en la versión 38. 3.2. V8 Fue creado en Google por Lars Bak, el cual está escrito en lenguaje C++ para ser usado en el nave- gador Chrome y el navegador web de Android 2.2, y puede funcionar tanto standalone como inte- grado en una aplicación (Wikipedia, 2014). Este motor compila JavaScript a código máquina nativo, además tiene un recolector de basura que es incremental, un ensamblador que está basado en el ensamblador Strongtalk, al liberar su compilador Crankshaft logran mejoras de velocidad. V8 se apega a la versión 5.0 de ECMAScript y la última versión de V8 es la 3.29.59 de sep- tiembre de 2014. 3.3. KJS Es un motor escrito en lenguaje C++ que pertenece al proyecto KDE, siendo destinado para el na- vegador web Konqueror, del cual se basó JavaScriptCore para ser usado en Apple para el navega- dor Safari. La última versión de KJS es la 5.6.0 publicada en enero de 2015 (Wikipedia, 2014). 3.4. WebKit No es en sí mismo un motor, sino que es una completa plataforma que funciona como base para los navegadores Safari, Chrome, Opera, Epiphany, Maxthon, Midori, QupZilla, y otros más. Está basa- do en Konqueror del proyecto de KDE y es mantenido principalmente por Apple, Google y RIM.
  • 7. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 7 de 9 Webkit incluye algunos frameworks entre los que se encontraban JavaScriptCore, el intérprete para JavaScript que está basado en KJS, pero que sin embargo desde 2008 el intérprete paso a ser SquirrelFish (abreviado como SFX o conocido como Nitro) que compila JavaScript a código má- quina y que por lo tanto acelerando la velocidad (Wikipedia, 2014). El nacimiento de WebKit se debe a que Apple indicó que los motores de renderizado KHTML y de JavaScript KJS permitían un desarrollo más fácil que otras tecnologías al tener un código pe- queño, muy limpio y compatible con las normas; así que decidieron portarlos a MacOS X usando para ello WebCore y JavaScriptCore. En 2010 se anunció WebKit2, rediseñado desde cero para generar un modelo de procesos divi- didos, donde el contenido de la web (JavaScript, HTML, diseño, etc.) se ejecuta cada uno en un proceso separado. En 2013 Google dejó WebKit para hacer una adaptación de éste al que llamó Blink y que man- tiene junto con Opera, Blink ha resultado en motores muy veloces tanto para diseño como para in- terpretar JavaScript. 4. ECMAScript en los navegadores web A continuación se muestra a manera de resumen las implementaciones que han tenido los principa- les navegadores web en sus motores para interpretar algún dialecto ECMAScript, el resumen es de manera general sin especificar plataformas o características más técnicas8 : Tabla 1. Comparativa de uso de Motores ECMAScript en los principales navegadores web Navegador web Versión / Fecha Motor para ECMAScript Mozilla Firefox 34.0 / Dic-2014 SpiderMonkey Google Chrome 39.0 / Dic-2014 V8 Opera 26.0 / Dic-2014 V8 Safari 08.0 / Oct-2014 Nitro (WebKit) Internet Explorer 11.0 / Sep-2014 Chakra Konqueror 4.14 / Oct-2014 Nitro (WebKit) Maxthon 04.4 / Dic-2014 Nitro (WebKit) Fuente: Recopilación propia También en la siguiente tabla se muestra el nivel de cumplimiento que tienen los diferentes na- vegadores web (solo se consideran las más recientes versiones) para las el actual estándar EC- MAScript, así como las futuras versiones9 : 8 Para conocer la lista de navegadores web existentes puede consultar los siguientes enlaces tanto para las versiones de escritorio como móviles: https://en.wikipedia.org/wiki/Web_browser_history https://en.wikipedia.org/wiki/Mobile_browser 9 Basado en los resultados de la tabla de compatibilidad de http://kangax.github.io/compat-table/es5/ el día 9 de enero de 2015.
  • 8. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 8 de 9 Tabla 2. Nivel de apego a ECMAScript de los últimos y principales navegadores web FF21+ CH23+ IE10+ SF6+ OP15+ iOS8 KQ4.13 ECMAScript 5 100% 100% 100% 100% 100% 100% 92% FF36 CH40 IE11 SF8 OP27 iOS8 KQ4.14 ECMAScript 6 67% 35% 21% 22% 35% 22% 13% FF35 CH37 IE11 SF8 OP27 iOS8 KQ4.13 ECMAScript 7 63% 13% 0% 0% ND 0% 0% FF = Firefox CH = Chrome IE = Internet Explorer SF = Safari OP = Opera iOS = iOS KQ = Konqueror + = Y superiores FF35  Firefox versión 35 FF21+  Firefox versión 25 y superiores Fuente: Recopilación propia a partir de la tabla de Kangax (Kangax) Como se puede observar, al día de hoy los últimos navegadores se apegan al estándar EC- MA-262, sin embargo, para las futuras versiones, se puede notar que Mozilla es el que más trabaja en la adopción del estándar, seguido por Google. ACID3 es la tercera versión de la prueba de estándares para navegadores web, la cual se in- cluyó un grupo de pruebas para ECMAScript, el Bucket 6. Aunque los resultados tienen tiempo pues fue lanzada en 2008, pueden servir de referencia para analizar el nivel de compromiso de los navegadores. La siguiente tabla muestra los resultados de las pruebas ACID3 en el 2008, ya que actualmente todos los navegadores modernos aprueban el test y aún no han lanzado ACID4. Tabla 3.Resultados de ACID3 en 2008 Chrome Firefox Internet Explorer Opera 78/100 71/100 14/100 83/100 Fuente: http://www.cnet.com/news/chrome-tops-ie-firefox-in-acid3-test/ 5. Conclusión De acuerdo a las estadísticas globales de StatCounter, Chrome es el navegador con mayor adopción, seguido de Internet Explorer y Firefox, por lo cual los usuarios de la web no han tenido tan mala elección, por las siguientes razones:  Chrome es el segundo mejor calificado en compatibilidad con ECMAScript  Chrome usa el motor V8, que es bastante eficiente y compila JavaScript, el lenguaje más estandarizado que existe de ECMAScript. Ahora bien, la principal razón por la que se podría elegir uno y otro navegador sería:  Firefox una mayor compatibilidad con ECMAScript.  Opera es una alternativa a Chrome, ya que los desarrollos van de la mano.  Internet Explorer es el más rápido en procesar ECMAScript10 .  En cuanto a Safari, simplemente no es la mejor opción que existe. 10 Leer comparativa en http://www.muycomputer.com/2012/04/02/benchmark-navegadores-web-chrome-18- frente-al-resto
  • 9. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Computación en el Cliente Web 10 de enero de 2015 Página 9 de 9 Referencias Bibliográficas Adobe Systems. (n.d.). Scripting Developer Center | Adobe Developer Connection. Retrieved Enero 9, 2015, from Adobe Developer Connection: http://www.adobe.com/devnet/scripting.html Digital Mars. (2012, Octubre 8). ECMAScript - Digital Mars. Retrieved from Digital Mars : http://www.digitalmars.com/dscript/ Ecma International. (2011, Junio). ECMAScript Language Specification - ECMA-262 Edition 5.1. Retrieved Enero 09, 2015, from Ecma International: http://www.ecma-international.org/ecma-262/5.1/ Ecma International. (2014, Diciembre 24). harmony:specification_drafts [ES Wiki]. Retrieved Enero 9, 2015, from Wiki - Ecma International: http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts EmbedThis. (n.d.). Ejscript Javascript Language. Retrieved Enero 9, 2015, from EmbedThis: https://embedthis.com/ejscript/ Hirsch, L. (2015, Enero 3). JavaScript | MDN. Retrieved Enero 9, 2015, from Mozilla Developer Network: https://developer.mozilla.org/es/docs/Web/JavaScript Kangax. (n.d.). Kangax projects. Retrieved Enero 9, 2015, from Stuff by Kangax: http://kangax.github.io/ LibrosWeb.es. (n.d.). 1.2. Breve historia (Introducción a JavaScript). Retrieved Enero 9, 2015, from LibrosWeb.es: http://librosweb.es/javascript/capitulo_1/breve_historia.html Microsoft. (n.d.). JScript. Retrieved Enero 9, 2015, from MSDN: http://msdn.microsoft.com/es- es/library/72bd815a.aspx Microsoft. (n.d.). JScript (ECMAScript3). Retrieved Enero 9, 2015, from MSDN: http://msdn.microsoft.com/en-us/library/hbxc2t98%28VS.85%29.aspx Perrier, J.-Y. (2014, Julio 3). Acerca de JavaScript - JavaScript | MDN. Retrieved Enero 9, 2015, from Mozilla Developer Network: https://developer.mozilla.org/es/docs/Web/JavaScript/Acerca_de_JavaScript Sikos, L. (2011). Web Standards: Mastering HTML5, CSS3, and XML. Apress. Wikipedia. (2013, Marzo 12). Chakra (intérprete de JScript) - Wikipedia, la enciclopedia libre. Retrieved Enero 9, 2015, from Wikipedia, la enciclopedia libre: https://es.wikipedia.org/wiki/Chakra_%28int%C3%A9rprete_de_JScript%29 Wikipedia. (2014, Diciembre 6). JavaScript - Wikipedia, la enciclopedia libre. Retrieved Enero 9, 2015, from Wikipedia, la enciclopedia libre: http://es.wikipedia.org/wiki/JavaScrip Wikipedia. (2014, Diciembre 31). JScript - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from Wikipedia, the free encyclopedia: https://en.wikipedia.org/wiki/JScript Wikipedia. (2014, Julio 10). KJS (software) - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from Wikipedia, the free encyclopedia: https://es.wikipedia.org/wiki/KJS Wikipedia. (2014, Noviembre 19). Script - Wikipedia, la enciclopedia libre. Retrieved Enero 09, 2015, from Wikipedia, la enciclopedia libre: http://es.wikipedia.org/wiki/Script Wikipedia. (2014, Octubre 24). SpiderMonkey (software) - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from Wikipedia, the free encyclopedia: https://en.wikipedia.org/wiki/SpiderMonkey_%28software%29 Wikipedia. (2014, Septiembre 14). V8 (JavaScript engine) - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from Wikipedia, the free encyclopedia: https://en.wikipedia.org/wiki/V8_%28JavaScript_engine%29 Wikipedia. (2014, Agosto 28). WebKit - Wikipedia, la enciclopedia libre. Retrieved Enero 9, 2015, from Wikipedia, la enciclopedia libre: https://es.wikipedia.org/wiki/WebKit Wikipedia. (2015, Enero 9). JavaScript engine - Wikipedia, the free encyclopedia. Retrieved Enero 9, 2015, from Wikipedia, the free encyclopedia: https://en.wikipedia.org/wiki/JavaScript_engine