ECMAScript引擎列表
外觀

ECMAScript引擎是執行用某個版本的ECMAScript語言標準比如JavaScript寫的原始碼的程式。
JIT編譯器引擎
[編輯]下列是用於網頁瀏覽器的新一代ECMAScript引擎,它們都實作了即時編譯(JIT)或這個想法的變體。即時編譯的效能利益使其更加適合於用JavaScript寫的網頁應用:
- V8:用在Google Chrome、Node.js和V8.NET的JavaScript引擎。
- SpiderMonkey:在Mozilla的Gecko應用包括Firefox中使用的JavaScript引擎。這個引擎目前包括IonMonkey編譯器和OdinMonkey最佳化模組,以前曾包括TraceMonkey編譯器(第一個javascript JIT)和JägerMonkey。
- JavaScriptCore:最初從KJS衍生出的JavaScript直譯器和JIT。它用在WebKit計劃和應用如Safari中。也叫作Nitro、SquirrelFish和SquirrelFish Extreme[1]。
- Chakra:用在Internet Explorer 11中的JScript引擎,它首次出現在Internet Explorer 9(32-bit)中[2]。
- ChakraCore:在Microsoft Edge中曾用過也叫做Chakra的JavaScript引擎,2015年12月,微軟將其核心構件開放原始碼並重新命名為ChakraCore[3][4]。
- Carakan:Opera Software ASA開發的JavaScript引擎[5],包含在Opera網頁瀏覽器10.50發行中[6],直到Opera 15(2013年發行)切換到V8[7][8]。
- Tamarin:用在Adobe Flash中的ActionScript和ECMAScript引擎。
- Nashorn:用在Oracle Java開發工具包(JDK)自從版本8的JavaScript引擎[9]。
- iv:用C++寫的ECMAScript詞法剖析器/語法解析器/直譯器/VM/方法JIT[10]。
- CL-JavaScript:在能編譯成機器語言的Common Lisp實作上可以編譯JavaScript至機器語言[11]。
直譯器引擎
[編輯]下列引擎使用執行時直譯器,它們不編譯成本地機械碼故而一般而言執行得更慢:
- Rhino:來自Mozilla的JavaScript引擎之一,使用Java平台。
- Jsish[12]:一個JavaScript直譯器,內建了SQLite、JSON、WebSocket和ZIP虛擬檔案系統支援。
- Duktape[13]:一個小體量易於嵌入的Ecmascript E5/E5.1引擎。
- MuJS[14]:一個輕量級的ECMAScript直譯器庫,設計用於嵌入其他軟件中來為其擴充上指令碼功能。最初為MuPDF開發[15]。
- njs[16]:為網頁伺服器指令碼和最快的VM上下文建立而最佳化的輕量級的JavaScript直譯器[17],用於nginx。
- Moddable SDK[18]:是為微控制器建造應用的開發工具和執行時軟件的組合,Kinoma平台的後繼者,目前是活躍計劃並致力於支援更新近版本的ECMAScript。
- Espruino[19]:特別用於微控制器的一個非常小體量的直譯器,通過執行原始碼(而非位元組碼),可以執行在小於8kB的RAM之下。
- mjs[20]:設計用於資源有限的微控制器的JavaScript引擎,它實作了ECMAScript 6的一個嚴格子集。
- JerryScript[21]:三星為小於64KB RAM的微控制器提供的一個輕量級的JavaScript引擎。
- V7[22]:嵌入式JavaScript引擎,實作了ECMAScript 5.1,聲稱是用C寫的最小的JavaScript引擎,現已經讓位給mjs[20]。
- Tiny-JS[23]:用C++寫成的極小化的JavaScript直譯器。
- JS-Interpreter[24],用JavaScript實作的輕量級的JavaScript直譯器,帶有step-by-step執行。
- GNU Guile:GNU Scheme實作,自版本1.9起提供ECMAScript 3.1直譯器[25]。
- Boa[26]:用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[27]:一個ECMAScript 6執行時環境和框架[28]。這是正確實作幾乎所有ECMAScript 6標準的首批執行時之一,目前無維護。
- YAJI[29]:基於Jean-Marc Lugin開始於1999年的FESI實作的一個ECMAScript引擎[30],使用Java平台,開發至支援ECMAScript 5.1[31]。
- Continuum[32]:支援ECMAScript 6規定的舊草案的自直譯器[28]。很特別的,這個引擎是用ECMAScript 3實作的,這使得有可能在像IE6這樣老的瀏覽器中執行ES6。
- Narcissus[33]:用JavaScript實作的JavaScript(自迴圈直譯器),意圖在另一個JavaScript引擎中執行,唯有理論和教育意義。
參見
[編輯]參照
[編輯]- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-05-16).
- ^ Hachamovitch, Dean, HTML5, Hardware Accelerated: First IE9 Platform Preview Available for Developers, 2010-03-16 [2019-05-23], (原始內容存檔於2011-08-05)
- ^ Microsoft Edge’s JavaScript engine to go open-source. Microsoft. [December 8, 2015]. (原始內容存檔於2015-12-07).
- ^ Microsoft open sources Edge web browser's JavaScript engine, plans port to Linux (頁面存檔備份,存於互聯網檔案館) on zdnet.com by Steven J. Vaughan-Nichols (on January 13, 2016)
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2009-05-31).
- ^ 存档副本. [2006-03-03]. (原始內容存檔於2006-03-03).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2013-02-14).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2014-03-01).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-07-25).
- ^ Constellation/iv. [2015-11-15]. (原始內容存檔於2016-02-08).
- ^ CL-JavaScript. [2018-09-14]. (原始內容存檔於2018-09-15).
- ^ JavaScript Interpreter SHell (頁面存檔備份,存於互聯網檔案館).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-04-17).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-04-17).
- ^ MuJS. [2014-09-22]. (原始內容存檔於2014-09-26).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-05-19).
- ^ NGINX JavaScript in Your Web Server Configuration. [2018-10-30]. (原始內容存檔於2019-03-04).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-10-16).
- ^ Espruino (頁面存檔備份,存於互聯網檔案館).
- ^ 20.0 20.1 存档副本. [2019-05-17]. (原始內容存檔於2019-04-17).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-05-16).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-04-17).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2018-06-11).
- ^ 存档副本. [2019-05-17]. (原始內容存檔於2019-02-22).
- ^ The goal was to support ECMAScript version 3.1 (頁面存檔備份,存於互聯網檔案館).
- ^ GitHub - boa-dev/boa: Boa is an embeddable and experimental Javascript engine written in Rust.. Boa. 2024-06-21 [2024-06-22]. (原始內容存檔於2025-01-17).
- ^ Kinomajs (頁面存檔備份,存於互聯網檔案館).
- ^ 28.0 28.1 存档副本. [2019-05-17]. (原始內容存檔於2019-05-05).
- ^ YAJI: Yet Another JavaScript Interpreter. [2019-05-18]. (原始內容存檔於2018-06-11).
- ^ FESI. September 2003 [2019-05-17]. (原始內容存檔於2012-09-06).
- ^ ECMAScript Language Specification ECMA-262 5.1 edition (PDF). Ecma International. June 2011 [2012-01-31]. (原始內容 (PDF)存檔於2015-04-12).
- ^ Continuum - A JavaScript Virtual Machine Built in JavaScript. [2019-05-17]. (原始內容存檔於2018-06-11).
- ^ The Narcissus source code repository (頁面存檔備份,存於互聯網檔案館).