Introducción
Cuando nos referimos a Javascript, solemos referirnos en realidad al estándar ECMAScript. Este lenguaje puede a su vez ser interpretado por diferentes motores dando como lugar a la funcionalidad programada en nuestros scripts.
De este modo, un motor ECMAScript es un programa que ejecuta código escrito en sus versiones estándares como, por ejemplo, Javascript. Así pues, hay que recalcar que Javascript es una implementación del primero utilizada principalmente en el lado cliente, como parte de un entorno/navegador web.
El hecho de que existan diferentes intérpretes o motores, puede ser crucial a la hora de afrontar un desarrollo ya que, teniendo en cuenta la plataforma final en la que se desea correr nuestro código, tendremos que asumir las características de cada uno de ello.
La siguiente tabla trata de ofrecer un resúmen de los principales motores disponibles a día de hoy junto a la versión ECMA que implementan, el sistema operativo o plataforma sobre la que se despliegan y una breve relación tanto de sus características más destacadas así como los principales fabricantes o productos que lo utilizan.
Para una relación más detallada puede consultarse el artículo «List of ECMAScript engines» de Wikipedia y los correspondientes enlaces a cada uno de los mencionados.
Tabla comparativa de los distintos motores ECMAScript
Nombre | ECMA | OS | Puntos fuertes | Quién lo usa |
---|---|---|---|---|
V8 | es5 | windows/unix, .NET | Mejora de rendimiento para cuellos de botella; eliminado de código basura, API propia, Debugg | Node.js, Google Chrome, akshell |
jscript | es3 | windows/unix, x86/sparc | Integración con ActiveX y VBScript. Buen msscript debugger | Windows Script Host, IE8- |
jscript.NET | es3 | .NET | Integración con ActiveX, .NET CLR, contruido según el paradigma de clases; tipado opcional; compilador estricto. | |
Chakra | es5 | windows 7, x86/x64/arm | Eliminado de código basura | Internet Exporer 9+ |
SpiderMonkey | es5 es6 | windows/unix | Extensiones propias. Manipulación directa de XML (E4X) | Mozilla/Netscape Adobe, CouchDB, MongoDb,… |
Rhino | es5 | java | Integración con la plataforma Java; E4X, debugger | ringojs, narwhaljs, Sun’s lively kernel |
Narcissus | es5 es6 | igual que servidor | ||
Nitro/JavaScriptCore/SquirrelFish/KJS | es5 | windows/unix | Apple’s Safari ,WebKit internal engine | |
Carakan/Futhark/Linear B/Linear A | es3 | windows/unix | Opera web browser | |
inscript | es3 | macos | iCab web browser, early WebKit | |
RemObjects Script | es3 | .NET | ||
IronJS | es3 | .NET | ||
jurassic | es5 | .NET | ||
tamarin | es4 | windows/unix | Buenas herramientas de desarrollo Adobe | Flash platform, Mozilla/Netscape products |
jint | es3 | .NET | ||
ecmascript-net | es3 | .NET | optimización de la cola de llamadas | |
dmdscript | es3 | windows/unix | Estamento Goto | |
besen | es5 | windows/unix | Eliminación de código basura; inferencia de tipos | Varios / Juegos |
simple script engine | es3 | windows/unix | Localización de memoria basado en regiones | hv3 web browser |
Consideraciones
Como curiosidad, cabe destacar que a día de hoy, la mayoría de motores aún continúan funcionando bajo la versión 3 del estándar. Aquellos que ya ofrecen la 5, suelen, además, adelantar algunas de las funcionalidades de la futura versión 6: patrones de módulos, proxies, etc. Es interesante observar como Tamarin implementa la malograda versión 4 defendida casi en exclusiva por Adobe y Mozilla.
Si atendemos a los casos de uso, encontramos con que la opción preferida por los desarrolladores es el SpiderMonkey mientras que el V8 de Google va ganando poco a poco terreno gracias fundamentalmente a Node.js y a la progresiva expansión del navegador Chrome.
En cuanto a modernidad e innovación, de entre los grandes fabricantes se descuelga Opera con un estándar aún anclado en la ya vieja versión 3 mientras que SpiderMonkey de nuevo se posiciona a la cabeza implementando ya funcionalidades de la sexta revisión (en este caso, el uso del Proxy).
Conclusión
Esta tabla, meramente informativa y de naturaleza cambiante, tiene que ser tenida únicamente como una referencia de lo que el panorama actual ofrece en cuanto al estado de los diferentes intérpretes. Una pequeña guía que no deja de ser interesante para saber con qué estándar debemos trabajar si nos dirigimos a una plataforma concreta.
Aún no tenemos debug!
Ningún marciano se ha comunicado.