前言
瀏覽器最重要或者說(shuō)核心的部分是“Rendering Engine”,可大概譯為“渲染引擎”,不過(guò)我們一般習(xí)慣將之稱為“瀏覽器內(nèi)核”。
webkit
webkit是一個(gè)開源的瀏覽器引擎,它的前身是KED小組的KHTML,webkit所包含的WebCore排版引擎和JSCore引擎來(lái)自于KED的KHTML和KJS,他的主要用戶有Safari、Chrome。
webkit-Blink
盡管上面一眾經(jīng)常被統(tǒng)稱為 WebKit,實(shí)際上各自都使用了自己的 WebKit 分支或者編譯時(shí)選項(xiàng),使得最終的渲染結(jié)果也是存在一定的差異的。不過(guò)大體上 WebKit 社區(qū)內(nèi)部還是比較和諧的,各個(gè)成員之間也為維持兼容性作出了努力,直到 2010 年隨著 OS X Lion 一起面世的 WebKit2。由于 WebKit2 在 WebCore 層面上實(shí)現(xiàn)的進(jìn)程隔離在一定程度上與 Google Chrome/Chromium 自己的沙箱設(shè)計(jì)存在沖突,故 Google Chrome/Chromium 一直停留在 WebKit,使用 Backport 的方式實(shí)現(xiàn)和主線 WebKit2 的兼容。顯而易見這增加了 WebKit 和 Chromium 的復(fù)雜性,且在一定程度上影響了 Chromium 的架構(gòu)移植工作。
基于以上原因,Google 決定從 WebKit fork 出自己的 Blink Web 引擎:
現(xiàn)階段以精簡(jiǎn)內(nèi)部結(jié)構(gòu)為主,將刪除大約 7000 個(gè)文件和 450 萬(wàn)行 WebKit2 兼容代碼。
未來(lái)將著重改善 DOM 架構(gòu),將使用 JavaScript 實(shí)現(xiàn) DOM。
提升安全性,實(shí)現(xiàn)進(jìn)程外 iframes 。
(ps:Blink內(nèi)核是由Google、Opera和Software共同開發(fā)的瀏覽器排版引擎)
Trident
Trident(IE內(nèi)核):該內(nèi)核程序在1997年的IE4中首次被采用,是微軟在Mosaic代碼的基礎(chǔ)之上修改而來(lái)的,并沿用到IE11,也被普遍稱作”IE內(nèi)核”。Trident實(shí)際上是一款開放的內(nèi)核,其接口內(nèi)核設(shè)計(jì)的相當(dāng)成熟,因此才有許多采用IE內(nèi)核而非IE的瀏覽器(殼瀏覽器)涌現(xiàn)。
(ps:由于IE本身的“壟斷性”(雖然名義上IE并非壟斷,但實(shí)際上,特別是從Windows 95年代一直到XP初期,就市場(chǎng)占有率來(lái)說(shuō)IE的確借助Windows的東風(fēng)處于“壟斷”的地位)而使得Trident內(nèi)核的長(zhǎng)期一家獨(dú)大,微軟很長(zhǎng)時(shí)間都并沒(méi)有更新Trident內(nèi)核,這導(dǎo)致了兩個(gè)后果——一是Trident內(nèi)核曾經(jīng)幾乎與W3C標(biāo)準(zhǔn)脫節(jié)(2005年),二是Trident內(nèi)核的大量 Bug等安全性問(wèn)題沒(méi)有得到及時(shí)解決)
Gecko
Gecko(Firefox內(nèi)核):Netscape6開始采用的內(nèi)核,后來(lái)的Mozilla FireFox(火狐瀏覽器) 也采用了該內(nèi)核,Gecko的特點(diǎn)是代碼完全公開,因此,其可開發(fā)程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因?yàn)檫@是個(gè)開源內(nèi)核,因此受到許多人的青睞,Gecko內(nèi)核的瀏覽器也很多,這也是Gecko內(nèi)核雖然年輕但市場(chǎng)占有率能夠迅速提高的重要原因。
(ps:Gecko引擎的由來(lái)跟IE不無(wú)關(guān)系,前面說(shuō)過(guò)IE沒(méi)有使用W3C的標(biāo)準(zhǔn),這導(dǎo)致了微軟內(nèi)部一些開發(fā)人員的不滿;他們與當(dāng)時(shí)已經(jīng)停止更新了的 Netscape的一些員工一起創(chuàng)辦了Mozilla,以當(dāng)時(shí)的Mosaic內(nèi)核為基礎(chǔ)重新編寫內(nèi)核,于是開發(fā)出了Gecko。不過(guò)事實(shí)上,Gecko 內(nèi)核的瀏覽器仍然還是Firefox (火狐) 用戶最多,所以有時(shí)也會(huì)被稱為Firefox內(nèi)核。此外Gecko也是一個(gè)跨平臺(tái)內(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中首次被使用,該款引擎的特點(diǎn)就是渲染速度的優(yōu)化達(dá)到了極致,然而代價(jià)是犧牲了網(wǎng)頁(yè)的兼容性。
(ps:Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核。)