瀏覽器內核

-

要搞清楚瀏覽器內核是什麼,首先應該先搞清楚瀏覽器的構成。簡單來說瀏覽器可以分爲兩部分,shell+內核。其中shell的種類相對比較多,內核則比較少。Shell是指瀏覽器的外殼:例如菜單,工具欄等。主要是提供給用戶界面操作,參數設置等等。它是調用內核來實現各種功能的。內核纔是瀏覽器的核心。內核是基於標記語言顯示內容的程序或模塊。也有一些瀏覽器並不區分外殼和內核。從Mozilla將Gecko獨立出來後,纔有了外殼和內核的明確劃分。目前主流的瀏覽器有IE6、IE8、Mozilla、FireFox、Opera、Safari、Chrome、Netscape等。

什麼是瀏覽器內核

瀏覽器內核又可以分成兩部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎。它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計算網頁的顯示方式,然後會輸出至顯示器或打印機。瀏覽器的內核的不同對於網頁的語法解釋會有不同,所以渲染的效果也不相同。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網絡內容的應用程序都需要內核。(參見維基百科)JS引擎則是解析Javascript語言,執行javascript語言來實現網頁的動態效果。最開始渲染引擎和JS引擎並沒有區分的很明確,後來JS引擎越來越獨立,內核就傾向於只指渲染引擎。有一個網頁標準計劃小組製作了一個ACID來測試引擎的兼容性和性能。內核的種類很多,如加上沒什麼人使用的非商業的免費內核,可能會有10多種,但是常見的瀏覽器內核可以分這四種:Trident、Gecko、Presto、Webkit。

Trident又稱MSHTML,是微軟開發的渲染引擎(包含了Javascript引擎JScript),他已經深入了Windows操作系統的骨髓,例如Windows Media Play,Windows Explorer,Outlook Express等都使用了。目前很多瀏覽器都使用這個引擎,例如IE,Maxthon(最新版已經不使用)等。

Gecko是C++開發的,Open Source的渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有Firefox。

Webkit是蘋果公司基於KHTML開發的。他包括Webcore和JavaScriptCore(SquirrelFish,V8)兩個引擎。主要的使用者有Safari,Chrome。

Presto由Opera Software公司開始的,用於Opera的渲染引擎。Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了Presto的內核。

主流瀏覽器所使用的內核分類

Trident內核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等
Gecko內核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto內核:Opera7及以上
Webkit內核:Safari,Chrome等

Engine

Creator

Software license

Leading application

Gecko

Netscape/Mozilla Foundation

MPL/GNU GPL/GNU LGPL tri-license

Mozilla Firefox

KHTML

KDE

GNU LGPL

Konqueror

Presto

Opera Software

Proprietary

Opera

Tasman

Microsoft

Proprietary

Microsoft Entourage

Trident

Microsoft

Proprietary

Internet Explorer

WebKit (Based on KHTML)

WebKit Foundation

GNU LGPL, BSD-style

Safari, Google Chrome

JS引擎

JavaScript最初由網景公司的Brendan Eich設計,是一種動態、弱類型、基於原型的語言,內置支持類。以它爲基礎,制定了ECMAScript標準。他的起源並不是如《Javascript高級程序設計》書中所述,是Brendan Eich自主發明的。(參考aimingoo的考證文章)JavaScript在瀏覽器的實現中還必須含有DOM和BOM。Web瀏覽器一般使用公共API來創建主機對象來負責將DOM對象反射進JavaScript。

 

Trident

Gecko

WebKit

KHTML

Presto

Name of ECMAScript Engine

JScript

Spidermonkey

JavaScriptCore

KJS

linear b/futhark

ECMAScript Version

Edition 3

Yes

0.6

Yes

Yes

7.0

JavaScript 1.5 extensions

No

0.6

Yes

Yes

7.0

JavaScript 1.7 extensions

No

1.8.1

No

No

No

JavaScript 1.8 extensions

No

1.9

No

No

No

瀏覽器內核實現原理

渲染流程如下所示:

渲染引擎運作流程

Mozilla架構設計:界面和實現分離。採用標記語言,JavaScript,C++來開發。JSEngine就是指SpideMonkey,Layout就是指Gecko。Mozilla的一個關鍵部分是XPCOM和NSPR。

Mozilla架構設計

Webkit的處理流程:

Webkit的處理流程
瀏覽器內核的優缺點

Trident:這種瀏覽器內核是IE瀏覽器用的內核,因爲在早期IE佔有大量的市場份額,所以這種內核比較流行,以前有很多網頁也是根據這個內核的標準來編寫的,但是實際上這個內核對真正的網頁標準支持不是很好,甚至在2005年,與網頁標準制定組織(W3C理事會)所制定的標準發生了脫節,同時 Trident 內核本身的BUG比較多,對一些符合W3C標準的網頁代碼支持不是很好,這在早期的IE版本中比較明顯,比如IE5.5以前(包括IE5.5),其實IE6對W3C標準的支持也不是很好,而我們現在很多人都在使用IE6,事實上它也屬於一個比較早的版本。

但是由於IE的高市場佔有率,微軟也很長時間沒有更新Trident內核,這導致了二個結果
1,Trident內核和W3C標準脫節。
2,Trident內核的大量Bug等安全問題沒有得到解決,加上一些專家學者公開自己認爲IE瀏覽器不安全的觀點,使很多用戶開始轉向其他瀏覽器,FF,Opera就是這時期興起的。
Gecko:這是Firefox 和 Flock 所採用內核,這個內核的優點就是功能強大、豐富,可以支持很多複雜網頁效果和瀏覽器擴展接口,但是代價是也顯而易見就是要消耗很多的資源,比如內存。
Presto:Opera 採用的是 Presto內核,Presto內核被稱爲公認的瀏覽網頁速度最快的內核,這得益於它在開發時的天生優勢,在處理JS腳本等腳本語言時,會比其他的內核快3倍左右,缺點就是爲了達到很快的速度而丟掉了一部分網頁兼容性。

Webkit:Webkit 是 Safari 採用的內核,不過 Safari 是蘋果系統下的瀏覽器(雖然也有windows版,但是比較少),所以只簡單介紹一下這個內核的優點和缺點,優點就是網頁瀏覽速度較快,雖然不及 Presto 但是也勝於 Gecko 和 Trident,缺點是對於網頁代碼的容錯性不高,也就是說對網頁代碼的兼容性較低,會使一些編寫不標準的網頁無法正確顯示。

總結:就瀏覽器來說,互聯網經歷了十年的高速發展期,近幾年市場上也推出了很多新的瀏覽器,但是他們並非是採用自主開發的內核,所以瀏覽器內核本身實際沒有實質突破。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章