ECMAScript引擎是执行用某个版本的ECMAScript语言标准比如JavaScript写的源代码的程序。
JIT编译器引擎
下列是用于网页浏览器的新一代ECMAScript引擎,它们都实现了即时编译(JIT)或这个想法的变体。即时编译的性能利益使其更加适合于用JavaScript写的网页应用:
*V8:用在Google Chrome、Node.js和的JavaScript引擎。
*SpiderMonkey:在Mozilla的Gecko应用包括Firefox中使用的JavaScript引擎。这个引擎目前包括IonMonkey编译器和OdinMonkey优化模块,以前曾包括TraceMonkey编译器(第一个javascript JIT)和JägerMonkey。
*JavaScriptCore:最初从KJS派生出的JavaScript解释器和JIT。它用在WebKit计划和应用如Safari中。也叫作Nitro、SquirrelFish和SquirrelFish Extreme。
*Chakra:用在Internet Explorer 11中的JScript引擎,它首次出现在Internet Explorer 9(32-bit)中。
*ChakraCore:在Microsoft Edge中曾用过也叫做Chakra的JavaScript引擎,2015年12月,微软将其核心构件开放源代码并重命名为ChakraCore。
*Carakan:Opera Software ASA开发的JavaScript引擎,包含在Opera网页浏览器10.50发行中,直到Opera 15(2013年发行)切换到V8。
*Tamarin:用在Adobe Flash中的ActionScript和ECMAScript引擎。
*Nashorn:用在Oracle Java开发工具包(JDK)自从版本8的JavaScript引擎。
*iv:用C++写的ECMAScript词法分析器/语法解析器/解释器/VM/方法JIT。
*CL-JavaScript:在能编译成机器语言的Common Lisp实现上可以编译JavaScript至机器语言。
解释器引擎
下列引擎使用运行时解释器,它们不编译成本地机器代码故而一般而言运行得更慢:
*Rhino:来自Mozilla的JavaScript引擎之一,使用Java平台。
*:一个JavaScript解释器,内建了SQLite、JSON、WebSocket和ZIP虚拟文件系统支持。
*Duktape:一个小体量易于嵌入的Ecmascript E5/E5.1引擎。
*MuJS:一个轻量级的ECMAScript解释器库,设计用于嵌入其他软件中来为其扩展上脚本功能。最初为MuPDF开发。
*njs:为网页服务器脚本和最快的VM上下文创建而优化的轻量级的JavaScript解释器,用于nginx。
*Moddable SDK:是为微控制器建造应用的开发工具和运行时软件的组合,Kinoma平台的后继者,目前是活跃计划并致力于支持更新近版本的ECMAScript。
*:特别用于微控制器的一个非常小体量的解释器,通过执行源代码(而非字节码),可以运行在小于8kB的RAM之下。
*mjs:设计用于资源有限的微控制器的JavaScript引擎,它实现了ECMAScript 6的一个严格子集。
*JerryScript:三星为小于64KB RAM的微控制器提供的一个轻量级的JavaScript引擎。
*V7:嵌入式JavaScript引擎,实现了ECMAScript 5.1,声称是用C写的最小的JavaScript引擎,现已经让位给mjs:用C++写成的极小化的JavaScript解释器。
*JS-Interpreter,用JavaScript实现的轻量级的JavaScript解释器,带有step-by-step执行。
*GNU Guile:GNU Scheme实现,自版本1.9起提供ECMAScript 3.1解释器。
*Boa:用Rust编写的JavaScript引擎。
不活跃项目
*KJS:用于Konqueror的引擎,是KHTML的一个构件,是JavaScriptCore的前身。
*QtScript:由Trolltech最初开发,现在属于Qt公司,它提供QObject与JavaScriptCore的集成。
*JScript:用在Internet Explorer版本直到IE9(64-bit)的引擎,是Trident排版引擎的一个构件。
*Futhark: Opera网页浏览器版本9.50到10.10的ECMAScript引擎。
*Linear B:专门用在Opera网页浏览器版本7.0到9.50的ECMAScript引擎。
*InScript:用在iCab2和3的一个废弃了的专有库。
*Kinomajs:一个ECMAScript 6运行时环境和框架。这是正确实现几乎所有ECMAScript 6标准的首批运行时之一,目前无维护。
*YAJI:基于Jean-Marc Lugin开始于1999年的FESI实现的一个ECMAScript引擎,使用Java平台,开发至支持ECMAScript 5.1。
*Continuum:支持ECMAScript 6规定的旧草案的自解释器:用JavaScript实现的JavaScript(自循环解释器),意图在另一个JavaScript引擎中运行,唯有理论和教育意义。
参见
*JavaScript引擎比较
*JavaScript引擎
*应用虚拟化软件比较
引用
评论 (0)