Un motor ECMAScript es un programa que ejecuta código fuente escrito en una versión del estándar del lenguaje ECMAScript , por ejemplo, JavaScript .
Estos son motores ECMAScript de nueva generación para navegadores web, todos implementando compilación justo a tiempo (JIT) o variaciones de esa idea. Los beneficios de rendimiento de la compilación justo a tiempo la hacen mucho más adecuada para aplicaciones web escritas en JavaScript .
- Carakan : Un motor JavaScript desarrollado por Opera Software ASA , [1] incluido en la versión 10.50 [2] del navegador web Opera , hasta que se cambia a V8 con Opera 15 (lanzado en 2013). [3] [4]
- Chakra (JScript9) : un motor JScript utilizado en Internet Explorer . Se mostró por primera vez en MIX 10 como parte de la versión preliminar de la plataforma Internet Explorer 9. [5]
- Chakra : un motor de JavaScript utilizado en Microsoft Edge . [6]
- SpiderMonkey : un motor JavaScript en aplicaciones Mozilla Gecko , incluido Firefox . El motor incluye actualmente el compilador IonMonkey y el módulo de optimización OdinMonkey, anteriormente ha incluido el compilador TraceMonkey (primer JIT javascript) y JägerMonkey.
- JavaScriptCore : un intérprete de JavaScript y JIT derivado originalmente de KJS . Se utiliza en el proyecto WebKit y en aplicaciones como Safari . También conocido como Nitro, SquirrelFish y SquirrelFish Extreme. [7]
- JScript .NET : Un motor JScript de .NET Framework utilizado en ASP.NET basado en Common Language Runtime e interoperabilidad COM . Desafortunadamente, el soporte se eliminó con .NET Core y CoreCLR, por lo que su futuro parece cuestionable para ASP.NET Core .
- Tamarin : motor ActionScript y ECMAScript utilizado en Adobe Flash .
- V8 : un motor de JavaScript utilizado en Google Chrome , Node.js , Deno y V8.NET.
- Nashorn : un motor de JavaScript utilizado en Oracle Java Development Kit (JDK) desde la versión 8. [8]
- iv, ECMAScript Lexer / Analizador / Intérprete / VM / método JIT escrito en C ++ [9]
- CL-JavaScript: Puede compilar JavaScript en lenguaje de máquina en implementaciones de Common Lisp que compilan en lenguaje de máquina [10]
- BESEN: Una implementación completa de compilación JIT de ECMAScript Quinta edición escrita en Object Pascal. [11]
- Hermes: desarrollado por Facebook para aplicaciones móviles React Native [12]
Los siguientes motores utilizan intérpretes en tiempo de ejecución, que no se compilan en código de máquina nativo y, por lo general, se ejecutan más lentamente:
- Continuum: [13] Un auto-intérprete que admite borradores más antiguos de la especificación ECMAScript 2015. [14] Excepcionalmente, el motor está implementado en ECMAScript 3, lo que hizo posible ejecutar ES2015 en navegadores tan antiguos como IE6. [15]
- Futhark : el motor ECMAScript de las versiones 9.50 a 10.10 del navegador web Opera .
- InScript : una biblioteca patentada obsoleta utilizada para iCab 2 y 3.
- JScript : el motor que se utiliza en Internet Explorer para versiones hasta IE9 y un componente del motor de diseño Trident .
- KJS : el motor utilizado en Konqueror y un componente de KHTML , un predecesor de JavaScriptCore.
- Lineal B : El motor ECMAScript de las versiones 7.0 a 9.50 del navegador web Opera , exclusivo.
- Narcissus : JavaScript implementado en JavaScript (un evaluador meta-circular ), destinado a ejecutarse en otro motor de JavaScript, solo de naturaleza teórica y educativa.
- JS-Interpreter Un intérprete de JavaScript ligero implementado en JavaScript con ejecución paso a paso.
- QtScript : desarrollado originalmente por Trolltech, ahora propiedad de The Qt Company . Proporciona integración de QObject con JavaScriptCore.
- V4 (QJSEngine): el motor ECMAScript más nuevo de Qt, que alimenta QML y QtQuick. Compatible con ES6 y en desarrollo activo en The Qt Company . V4 está compilado con JIT. [dieciséis]
- Rhino : uno de varios motores JavaScript de Mozilla , que utiliza la plataforma Java .
- YAJI: Un motor ECMAScript [17] basado en la implementación FESI [18] de Jean-Marc Lugrin en 1999, utilizando la plataforma Java , actualmente en desarrollo para soportar los últimos estándares (ECMAScript spec. 262, v5.1). [19]
- Duktape : un motor Ecmascript E5 / E5.1 de tamaño reducido y fácilmente integrable. [20]
- XS JavaScript Engine: un motor compatible con ECMAScript 2020 [21] para microcontroladores con recursos limitados. [22] XS es mantenido por Moddable como parte del Moddable SDK y anteriormente era parte de la Plataforma Kinoma . [23]
- Jsish : un intérprete de subconjunto ES5.1 con compatibilidad integrada con SQLite, JSON, WebSocket y ZVFS. [24]
- Websocket.js: un motor Javascript incrustable con soporte HTTP / Websocket. [25]
- Espruino : un intérprete de tamaño muy reducido específicamente para microcontroladores . Puede ejecutarse en menos de 8 kB de RAM si se ejecuta desde la fuente (en lugar del código de bytes ).
- MuJS: una biblioteca de intérpretes ECMAScript liviana, diseñada para integrarse en otro software para ampliarlos con capacidades de scripting. Desarrollado originalmente para MuPDF . [26]
- mJS: motor JavaScript restringido. Se utiliza para Internet de las cosas (IoT).
- Tiny-JS: un intérprete de JavaScript mínimo escrito en C ++.
- JerryScript: un motor JavaScript ligero de Samsung para microcontroladores con menos de 64 KB de RAM.
- GNU Guile cuenta con un intérprete ECMAScript a partir de la versión 1.9
- njs: un intérprete de JavaScript ligero optimizado para secuencias de comandos de servidor web y la creación de contexto de VM más rápida; utilizado en nginx . [27]
- QuickJS : un intérprete ligero de ECMAScript 6 de Fabrice Bellard y Charlie Gordon.
- engine262: un motor JavaScript escrito en JavaScript para desarrollo y exploración. Se utiliza principalmente para validar la especificación ECMAScript.
- graaljs: un motor de JavaScript compatible con ECMAScript para GraalVM que admite la interoperabilidad de idiomas que también puede ejecutar aplicaciones Node.js.
Ver también
- Comparación de motores ECMAScript
- Motor de JavaScript
- Comparación de software de virtualización de aplicaciones
Referencias
- ^ "Copia archivada" . Archivado desde el original el 31 de mayo de 2009 . Consultado el 9 de julio de 2009 .CS1 maint: copia archivada como título ( enlace )
- ^ https://web.archive.org/web/20060303160759/http://my.opera.com/desktopteam/blog/
- ^ http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit
- ^ http://my.opera.com/ODIN/blog/opera-14-for-android-is-out
- ^ Preguntas frecuentes , Microsoft , 2010-03-13, archivado desde el original el 2010-03-22 , consultado 2010-03-18
- ^ "Orientación a Edge vs. Motores heredados en las API de JsRT" . Consultado el 10 de septiembre de 2015 .
- ^ http://trac.webkit.org/wiki/JavaScriptCore
- ^ http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
- ^ "Constelación / iv" . Consultado el 15 de noviembre de 2015 .
- ^ "CL-JavaScript" . Consultado el 14 de septiembre de 2018 .
- ^ https://github.com/BeRo1985/besen
- ^ "Usando Hermes" . Facebook . Consultado el 9 de abril de 2021 .
- ^ "Una máquina virtual ES6 construida en JavaScript" . Archivado desde el original el 3 de diciembre de 2012 . Consultado el 1 de diciembre de 2012 .
- ^ http://www.ecma-international.org/ecma-262/6.0/
- ^ "Continuum - Una máquina virtual JavaScript construida en JavaScript" . Github . Consultado el 1 de diciembre de 2012 .
- ^ "V4 - Qt Wiki" . wiki.qt.io . Consultado el 24 de abril de 2021 .
- ^ "YAJI: otro intérprete de JavaScript" . Código de Google . Google . Consultado el 31 de enero de 2012 .
- ^ "FESI" . Septiembre de 2003. Archivado desde el original el 6 de septiembre de 2012 . Consultado el 6 de agosto de 2012 .
- ^ "ECMAScript Language Specification ECMA-262 edición 5.1" (PDF) . Ecma International. Junio de 2011. Archivado desde el original (PDF) el 12 de abril de 2015 . Consultado el 31 de enero de 2012 .
- ^ "Duktape" . Consultado el 21 de septiembre de 2013 .
- ^ https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/xs/XS%20Conformance.md#results
- ^ https://www.moddable.com/faq.php#what-is-xs
- ^ https://www.moddable.com/XS7-TC-39
- ^ "Jsish" . Consultado el 30 de abril de 2014 .
- ^ "Websocket.js" . Consultado el 16 de julio de 2014 .
- ^ "MuJS" . Consultado el 22 de septiembre de 2014 .
- ^ "JavaScript NGINX en la configuración de su servidor web" . Consultado el 30 de octubre de 2018 .