ECMAScript引擎列表
外观
ECMAScript引擎是执行用某个版本的ECMAScript语言标准比如JavaScript写的源代码的程序。
JIT编译器引擎
下列是用于网页浏览器的新一代ECMAScript引擎,它们都实现了即时编译(JIT)或这个想法的变体。即时编译的性能利益使其更加适合用JavaScript写的网页应用:
- Carakan:Opera Software ASA开发的JavaScript引擎[1],包含在Opera网页浏览器10.50发行中[2],直到Opera 15(2013年发行)切换到V8[3][4]。
- Chakra (JScript9):用在Internet Explorer中的JScript引擎[5]。
- Chakra:用在Microsoft Edge中的JavaScript引擎[6]。
- SpiderMonkey: 在MozillaGecko应用包括Firefox中使用的JavaScript引擎。这个引擎目前包括IonMonkey编译器和OdinMonkey优化模块。
- JavaScriptCore:最初从KJS派生出的JavaScript解释器和JIT。它用在WebKit计划和应用如Safari中。也叫 Nitro、SquirrelFish和SquirrelFish Extreme[7]。
- Tamarin:用在Adobe Flash中的ActionScript和ECMAScript引擎。
- V8:用在Google Chrome、Node.js和V8.NET的JavaScript引擎。
- Nashorn:用在Oracle Java开发工具包(JDK)自从版本8的JavaScript引擎[8]。
- iv:用C++写的ECMAScript词法分析器/语法解析器/解释器/VM/方法JIT[9]。
- CL-JavaScript:在能编译成机器语言的Common Lisp实现上可以编译JavaScript至机器语言[10]。
解释器引擎
下列引擎使用运行时解释器,它们不编译成本地机器代码故而一般而言运行得更慢:
- Continuum[11]: 支持 ECMAScript 2015规定的旧草案的自解释器[12]。这个引擎特别之处是用ECMAScript 3实现的,这使得有可能在像IE6这样老的浏览器中运行ES2015[13]。
- Futhark: Opera网页浏览器版本9.50到10.10的ECMAScript引擎。
- InScript:用在iCab2和3的一个废弃了的专有库。
- JScript:用在Internet Explorer版本直到IE9的引擎,是Trident排版引擎的一个构件。
- KJS:用于Konqueror的引擎,是KHTML的一个构件,是JavaScriptCore的先驱。
- Linear B:专门用在Opera网页浏览器版本7.0到9.50的ECMAScript引擎。
- Narcissus:用JavaScript实现的JavaScript(自循环解释器),意图在另一个JavaScript引擎中运行,唯有理论和教育意义。
- JS-Interpreter,用JavaScript通过step-by-step执行实现的轻量级JavaScript解释器。
- QtScript:由Trolltech最初开发,现在属于Qt公司,它提供QObject与JavaScriptCore的集成。
- Rhino:来自Mozilla的JavaScript引擎之一,使用Java平台。
- YAJI:一个ECMAScript引擎[14],由Jean-Marc Lugin在1999年基于FESI[15]实现,使用Java平台,目前开发至支持最新标准(ECMAScript spec. 262, v5.1)[16]。
- Duktape:一个小体量易于嵌入的Ecmascript E5/E5.1引擎[17]。
- Kinoma平台:一个ECMAScript 6[18]运行时环境和框架。这是正确实现几乎所有ECMAScript 6标准的首批运行时之一,目前无维护。
- Moddable,Kinoma平台的后继者,目前是活跃计划并致力于支持更新近版本的ECMAScript。
- Jsish:一个JavaScript解释器,内建了SQLite、JSON、WebSocket和ZVFS支持[19]。
- Websocket.js:一个嵌入式Javascript引擎,带有HTTP/Websocket支持[20]。
- Espruino:特别用微控制器的一个非常小体量解释器。可以运行在小于8kB的RAM之下,通过执行源代码(而非字节码)。
- MuJS:一个轻量级ECMAScript解释器库,设计用于嵌入其他软件中来与其扩展上脚本功能。最初为MuPDF开发[21]。
- V7:Smart.js平台的一部分;声称是世界上最小的JavaScript引擎[22]。
- Tiny-JS:用C++写成的极小化JavaScript解释器。
- JerryScript:三星为小于64KB RAM的微控制器提供的一个轻量级JavaScript引擎。
- GNU Guile:自版本1.9起以ECMAScript解释器为其特色。
- njs:为网页服务器脚本和最快的VM上下文创建而优化的轻量级JavaScript解释器[23],用于nginx。
参见
引用
- ^ http://labs.opera.com/news/2009/02/05/
- ^ 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
- ^ Frequently Asked Questions, Microsoft, 2010-03-13 [2010-03-18]
- ^ Targeting Edge vs. Legacy Engines in JsRT APIs. [10 September 2015].
- ^ http://trac.webkit.org/wiki/JavaScriptCore
- ^ http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
- ^ Constellation/iv. [2015-11-15].
- ^ CL-JavaScript. [2018-09-14].
- ^ An ES6 Virtual Machine Built in JavaScript. [2012-12-01].
- ^ http://www.ecma-international.org/ecma-262/6.0/
- ^ Continuum - A JavaScript Virtual Machine Built in JavaScript. Github. [2012-12-01].
- ^ YAJI: Yet Another JavaScript Interpreter. Google Code. Google. [2012-01-31].
- ^ FESI. September 2003.
- ^ ECMAScript Language Specification ECMA-262 5.1 edition (PDF). Ecma International. June 2011 [2012-01-31].
- ^ Duktape. [2013-09-21].
- ^ http://www.ecma-international.org/ecma-262/6.0/
- ^ Jsish. [2014-04-30].
- ^ Websocket.js. [2014-07-16].
- ^ MuJS. [2014-09-22].
- ^ Smart.js. [2015-08-06].
- ^ NGINX JavaScript in Your Web Server Configuration. [2018-10-30].