瀏覽器內核的解析和對比

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

什麼是瀏覽器內核java

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

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

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等app

Engineide

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 LGPLBSD-style

SafariGoogle 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。

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,缺點是對於網頁代碼的容錯性不高,也就是說對網頁代碼的兼容性較低,會使一些編寫不標準的網頁沒法正確顯示。

總結:就瀏覽器來講,互聯網經歷了十年的高速發展期,近幾年市場上也推出了不少新的瀏覽器,可是他們並不是是採用自主開發的內核,因此瀏覽器內核自己實際沒有實質突破。

相關文章
相關標籤/搜索