JavaScript引擎

JavaScript引擎是一個專門處理JavaScript指令碼的虛擬機器,一般會附帶在網頁瀏覽器之中。

歷史

在2008年到2009年的第二次瀏覽器大戰之前,JavaScript引擎僅簡單地被當作能閱讀執行JavaScript原始碼直譯器

目前為止,最通用的JavaScript宿主環境是網頁瀏覽器。網頁瀏覽器一般使用公共的API建立「宿主對象」以便於在JavaScript中支援DOM

效能演進

一個典型的瀏覽器有一個圖形引擎和一個獨立的JavaScript引擎。這樣JavaScript引擎能夠被更方便的測試、重新生成或者在另一些專案中使用。例如:Carakan被用在Presto中,Nitro被用在WebKit中,SpiderMonkey被用在Gecko中,KJS被用在KHTML中,Rhino預設不包含任何布局引擎。但還有其他組合,例如:V8與WebKit被用於Google Chrome中。JavaScript引擎能為程式設計師提供部分操作瀏覽器的功能(網路、DOM、外部事件、HTML5影片、canvas和儲存)。

Sunspider是一個JavaScript實用基準測試英語Browser speed test通過一系列關於JavaScript語言的指令碼測試JavaScript引擎的速度。Sunspider不測試無關於JavaScript的特性(不使用HTML、CSS和無網路情況下)。

近幾年來,在瀏覽器開發者之間展開了一場開發更快的JavaScript引擎的競賽。2008年,Google Chrome因它的JavaScript效能而倍受稱讚,但是其它瀏覽器馬上使用了更快的JavaScript引擎。之後,Google Chrome在效能上獲得領先,其長處在於它高速的效能和JavaScript的處理速度,這些都由許多網站在主要的瀏覽器之間的速度測試中得到驗證[1][2][3]。隨著WebKit的Squirrelfish Extreme和Mozilla的TraceMonkey JavaScript虛擬機器出現,Chrome的JavaScript執行速度就被超越了[4][5][6][7]。Google丹麥在Chrome 2中開發了更快速的V8引擎

2008年6月2日,WebKit開發團隊發布了SquirrelFish[8]——一個能極大地提升Safari解釋指令碼速度的新的JavaScript引擎[9]。該引擎是Safari 4其中一個新特性,在2008年6月11日發布給程式設計師使用;最終此JavaScript引擎被稱為Nitro。2009年6月30日,在Firefox 3.5發布的最新技術能「使某些情況下的速度提升20到40倍」[10]

著名的引擎

開發中

停止開發

實作

JavaScript是一種ECMAScript方言,在許多程式中得以實作,特別是在網頁瀏覽器。這些方言通常擴充了語言,或者標準庫和相關API,例如W3C定義的DOM。這意味著以一種方言實作的程式不相容於另一種方言的實作,除非程式使用了方言中的公共子集所具有的特性和API。

在實作和方言中存在著一些差別。一種語言的方言有一些與語言不同的地方。實作能夠執行該語言或方言編寫的程式。

應用程式(實作) 方言和最後版本 ECMAScript版本
Google ChromeV8引擎 JavaScript ECMA-262,版本6
Mozilla FirefoxGecko排版引擎,SpiderMonkeyRhino JavaScript 1.8.5 ECMA-262,版本6
SafariNitro引擎 JavaScript ECMA-262,版本6
Microsoft EdgeChakra引擎 JavaScript EMCA-262,版本6
Opera,Carakan引擎(改用V8之前) 一些JavaScript 1.5特性及一些JScript擴充[17] ECMA-262,版本5.1
KHTML排版引擎,KDE專案的Konqueror JavaScript 1.5 ECMA-262,版本3
Adobe Acrobat JavaScript 1.5 ECMA-262,版本3
OpenLaszlo英語OpenLaszlo JavaScript 1.4 ECMA-262,版本3
Max/MSP英語Max (software) JavaScript 1.5 ECMA-262,版本3
ANT Galio 3英語Fresco (web browser) JavaScript 1.5附帶RMAI擴充 ECMA-262,版本3

參考來源

  1. ^ Stephen Shankland. Speed test: Google Chrome beats Firefox, IE, Safari. cnet.com Business Tech. CNET. 2008-09-02 [2010-06-28]. (原始內容存檔於2012-05-01) (英語). 
  2. ^ Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome. PC Games Hardware. Computec Media AG. [2010-06-28]. (原始內容存檔於2012-05-01) (英語). 
  3. ^ Lifehacker Speed Tests: Safari 4, Chrome 2. Lifehacker. [2010-06-28]. (原始內容存檔於2012-05-01) (英語). 
  4. ^ Stephen Shankland. Third Chrome beta another notch faster. cnet.com. CNET. 2008-10-31 [2010-06-28]. (原始內容存檔於2012-09-25) (英語). 
  5. ^ Stephen Shankland. Step aside, Chrome, for Squirrelfish Extreme. cnet.com. CNET. 2008-09-19 [2010-06-29]. (原始內容存檔於2012-09-25) (英語). 
  6. ^ SquirrelFish Extreme: Fastest JavaScript Engine Yet. satine.org. [2010-06-29]. (原始內容存檔於2012-05-01) (英語). 
  7. ^ Stephen Shankland. Firefox counters Google's browser speed test. cnet.com Business Tech. CNET. 2008-09-03 [2010-06-29]. (原始內容存檔於2012-05-01) (英語). 
  8. ^ Garen, Geoffrey. Announcing SquirrelFish. 2008-06-02 [2008-06-11]. (原始內容存檔於2012-05-01) (英語). 
  9. ^ Lipskas, Vygantas. Apple Safari 4. 2008-06-11 [2008-06-11]. (原始內容存檔於2012-05-01) (英語). 
  10. ^ Ryan Paul. Firefox to get massive JavaScript performance boost. arstechnica.com. Ars Technica © 2010 Condé Nast Digital. 2008-08-22 [2010-06-28]. (原始內容存檔於2008-12-17) (英語). 
  11. ^ Marius Oiaga. Internet Explorer 9 Beta Next – New IE9 Builds Every 8 Weeks. softpedia.com. SoftNews NET SRL. 2010-03-20 [2010-06-28]. (原始內容存檔於2012-05-01) (英語). 
  12. ^ Laskey, James. Adventures in JSR-292 or How To Be A Duck Without Really Trying (PDF). Oracle Corporation. July 2011 [2011-07-24]. (原始內容 (PDF)存檔於2016-06-03). 
  13. ^ Proposed new schedule for Java 8. 2013-04-18 [2013-04-19]. (原始內容存檔於2013-04-22). 
  14. ^ JDK 8. OpenJDK. 2013-04-18 [2013-04-19]. (原始內容存檔於2013-09-07). 
  15. ^ JEP 335: Deprecate the Nashorn JavaScript Engine. 2017-07-17 [2018-09-25]. (原始內容存檔於2022-05-23). 
  16. ^ JEP 372: Remove the Nashorn JavaScript Engine. 2020-01-10 [2020-07-22]. (原始內容存檔於2022-06-09). 
  17. ^ Web specifications support in Opera Presto. Opera.com. Opera Software ASA. [2010-06-28]. (原始內容存檔於2012-06-04) (英語). 

外部連結