前言
瀏覽器最重要或者說核心的部分是“Rendering Engine”炭懊,可大概譯為“渲染引擎”置媳,不過我們一般習慣將之稱為“瀏覽器內(nèi)核”惜傲。
webkit
webkit是一個開源的瀏覽器引擎屡贺,它的前身是KED小組的KHTML妥凳,webkit所包含的WebCore排版引擎和JSCore引擎來自于KED的KHTML和KJS竟贯,他的主要用戶有Safari、Chrome逝钥。
webkit-Blink
盡管上面一眾經(jīng)常被統(tǒng)稱為 WebKit屑那,實際上各自都使用了自己的 WebKit 分支或者編譯時選項,使得最終的渲染結(jié)果也是存在一定的差異的艘款。不過大體上 WebKit 社區(qū)內(nèi)部還是比較和諧的持际,各個成員之間也為維持兼容性作出了努力,直到 2010 年隨著 OS X Lion 一起面世的 WebKit2哗咆。由于 WebKit2 在 WebCore 層面上實現(xiàn)的進程隔離在一定程度上與 Google Chrome/Chromium 自己的沙箱設(shè)計存在沖突蜘欲,故 Google Chrome/Chromium 一直停留在 WebKit,使用 Backport 的方式實現(xiàn)和主線 WebKit2 的兼容晌柬。顯而易見這增加了 WebKit 和 Chromium 的復雜性姥份,且在一定程度上影響了 Chromium 的架構(gòu)移植工作郭脂。
基于以上原因,Google 決定從 WebKit fork 出自己的 Blink Web 引擎:
現(xiàn)階段以精簡內(nèi)部結(jié)構(gòu)為主澈歉,將刪除大約 7000 個文件和 450 萬行 WebKit2 兼容代碼展鸡。
未來將著重改善 DOM 架構(gòu),將使用 JavaScript 實現(xiàn) DOM闷祥。
提升安全性娱颊,實現(xiàn)進程外 iframes 。
(ps:Blink內(nèi)核是由Google凯砍、Opera和Software共同開發(fā)的瀏覽器排版引擎)
Trident
Trident(IE內(nèi)核):該內(nèi)核程序在1997年的IE4中首次被采用箱硕,是微軟在Mosaic代碼的基礎(chǔ)之上修改而來的,并沿用到IE11悟衩,也被普遍稱作”IE內(nèi)核”剧罩。Trident實際上是一款開放的內(nèi)核,其接口內(nèi)核設(shè)計的相當成熟座泳,因此才有許多采用IE內(nèi)核而非IE的瀏覽器(殼瀏覽器)涌現(xiàn)惠昔。
(ps:由于IE本身的“壟斷性”(雖然名義上IE并非壟斷,但實際上挑势,特別是從Windows 95年代一直到XP初期镇防,就市場占有率來說IE的確借助Windows的東風處于“壟斷”的地位)而使得Trident內(nèi)核的長期一家獨大,微軟很長時間都并沒有更新Trident內(nèi)核潮饱,這導致了兩個后果——一是Trident內(nèi)核曾經(jīng)幾乎與W3C標準脫節(jié)(2005年)来氧,二是Trident內(nèi)核的大量 Bug等安全性問題沒有得到及時解決)
Gecko
Gecko(Firefox內(nèi)核):Netscape6開始采用的內(nèi)核,后來的Mozilla FireFox(火狐瀏覽器) 也采用了該內(nèi)核香拉,Gecko的特點是代碼完全公開啦扬,因此,其可開發(fā)程度很高凫碌,全世界的程序員都可以為其編寫代碼扑毡,增加功能。因為這是個開源內(nèi)核盛险,因此受到許多人的青睞瞄摊,Gecko內(nèi)核的瀏覽器也很多,這也是Gecko內(nèi)核雖然年輕但市場占有率能夠迅速提高的重要原因苦掘。
(ps:Gecko引擎的由來跟IE不無關(guān)系泉褐,前面說過IE沒有使用W3C的標準,這導致了微軟內(nèi)部一些開發(fā)人員的不滿鸟蜡;他們與當時已經(jīng)停止更新了的 Netscape的一些員工一起創(chuàng)辦了Mozilla膜赃,以當時的Mosaic內(nèi)核為基礎(chǔ)重新編寫內(nèi)核,于是開發(fā)出了Gecko揉忘。不過事實上跳座,Gecko 內(nèi)核的瀏覽器仍然還是Firefox (火狐) 用戶最多端铛,所以有時也會被稱為Firefox內(nèi)核。此外Gecko也是一個跨平臺內(nèi)核疲眷,可以在Windows禾蚕、 BSD、Linux和Mac OS X中使用狂丝。 )
Presto
Presto(Opera前內(nèi)核) (已廢棄): Opera12.17及更早版本曾經(jīng)采用的內(nèi)核换淆,現(xiàn)已停止開發(fā)并廢棄,該內(nèi)核在2003年的Opera7中首次被使用几颜,該款引擎的特點就是渲染速度的優(yōu)化達到了極致倍试,然而代價是犧牲了網(wǎng)頁的兼容性。
(ps:Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核蛋哭。)