JavaScript(JS)引擎是一個解析JavaScript腳本的虛拟機,實作網頁的動态效果,一般會附帶在網頁浏覽器之中。JavaScript引擎的核心特征它是一種程式虛拟機。其主要用途是與使用者互動,以及操作DOM,由于目前JS引擎沒有引入鎖機制,為了避免由于同步問題帶來的沖突,JS引擎目前隻支援單線程。
JS引擎是浏覽器的組成部分之一,浏覽器核心由一個渲染引擎和一個獨立的JS引擎組成。其中渲染引擎包括HTML 解釋器、CSS 解釋器、圖層布局計算子產品、視圖繪制子產品。JS引擎能夠被更友善的測試、重新生成或者在另一些項目中使用。JavaScript引擎能為程式員提供部分操作浏覽器的功能(網絡、DOM、外部事件、HTML5視訊、canvas和存儲)。
HTML 解釋器:将 HTML 文檔經過詞法分析輸出 DOM 樹;
CSS 解釋器:解析 CSS 文檔,生成樣式規則;
圖層布局計算子產品:布局計算每個對象的精确位置和大小;
視圖繪制子產品:進行具體節點的圖像繪制,将像素渲染到螢幕上。
每個JavaScript引擎都實作了ECMAScript的一個版本,其中JavaScript是一種解釋性動态腳本語言。随着ECMAScript的發展,JavaScript引擎也在不斷發展。目前主流的JS引擎有SpiderMonkey 、Rhino、V8、JavaScriptCore、Chakra (JScript引擎,一個由微軟為其Internet Explorer 9、Internet Explorer 10、Internet Explorer 11和Microsoft Edge等網頁浏覽器開發的JavaScript引擎)、KJS等等。不同的浏覽器采用了不同的JavaScript引擎。
SpiderMonkey 是Mozilla使用C/C++編寫的JavaScript 引擎。它被用于包括Firefox在内的多個Mozilla産品中。V8由Google在2008年開發,用C++編寫,是Google Chrome的一部分,它的性能相較于之前的JS引擎有很大的提升。Rhino引擎由網景公司的諾裡斯·博伊德(Norris Boyd) 開發,由Java實作。和SpiderMonkey一樣,Rhino符合ECMA-262版本3。KJS被用在KHTML中,是KDE的ECMAScript/JavaScript引擎,最初由哈裡·波頓開發,用于KDE項目的Konqueror網頁浏覽器中。
資料來源:
維基百科詞條: JavaScript引擎
[1] Looper,Jen (2015-09-21). "A Guide to JavaScript Engines for Idiots". Telerik Developer Network.
[2] Shankland,Stephen (2008-09-02). "Speed test: Google Chrome beats Firefox,IE,Safari". CNET Business Tech. CBS Interactive.
[3] "Big browser comparison test: Internet Explorer vs. Firefox,Opera,Safari and Chrome". PC Games Hardware. Computec Media AG.
[4] "Lifehacker Speed Tests: Safari 4,Chrome 2". Lifehacker.