瀏覽器內(nèi)核可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。最開始渲染引擎和 JS 引擎并沒有區(qū)分的很明確,后來 JS 引擎越來越獨(dú)立,內(nèi)核就傾向于只指渲染引擎。所以現(xiàn)在講瀏覽器內(nèi)核主要說的就是渲染引擎。
那渲染引擎又是什么呢,簡單來說就是把html、css的代碼變成你現(xiàn)在看到的頁面的樣子。常見的瀏覽器內(nèi)核可以分這四種:Trident,Gecko,Webkit,Chromium/Bink。看著都很陌生,那么換個(gè)樣子:IE,Mozilla FireFox,Safari,Chrome 是不是一下子覺得熟悉多了。
1. Trident
說起Trident,很多人都會感到陌生,但提起IE(Internet Explorer)則無人不知無人不曉,由于其被包含在全世界使用率最高的操作系統(tǒng)Windows中,得到了極高的市場占有率,從而使得Trident內(nèi)核的長期一家獨(dú)大。微軟很長時(shí)間都并沒有更新Trident內(nèi)核,這導(dǎo)致了兩個(gè)后果:一是Trident內(nèi)核曾經(jīng)幾乎與W3C標(biāo)準(zhǔn)脫節(jié)(2005年),二是Trident內(nèi)核的大量 Bug等安全性問題沒有得到及時(shí)解決,然后加上一些致力于開源的開發(fā)者和一些學(xué)者們公開自己認(rèn)為IE瀏覽器不安全的觀點(diǎn),也有很多用戶轉(zhuǎn)向了其他瀏覽器。
Trident內(nèi)核的常見瀏覽器有:
(1)IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);
(2)獵豹安全瀏覽器:1.0-4.2版本為Trident+Webkit,4.3版本為Trident+Blink;
(3)360安全瀏覽器 :1.0-5.0為Trident,6.0為Trident+Webkit,7.0為Trident+Blink;
(4)360極速瀏覽器:7.5之前為Trident+Webkit,7.5為Trident+Blink;
(5)傲游瀏覽器 :傲游1.x、2.x為IE內(nèi)核,3.x為IE與Webkit雙核;
(6)搜狗高速瀏覽器:1.x為Trident,2.0及以后版本為Trident+Webkit;
2. Gecko
Netscape6開始采用的內(nèi)核,后來的Mozilla FireFox (火狐瀏覽器) 也采用了該內(nèi)核,現(xiàn)在主要由Mozilla基金會進(jìn)行維護(hù)。Gecko的特點(diǎn)是代碼完全公開,因此,其可開發(fā)程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因?yàn)檫@是個(gè)開源內(nèi)核,因此受到許多人的青睞。
事實(shí)上,Gecko引擎的由來跟IE不無關(guān)系,前面說過IE沒有使用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ā)出了Geckos。不過事實(shí)上,Gecko 內(nèi)核的瀏覽器仍然還是Firefox (火狐) 用戶最多,所以有時(shí)也會被稱為Firefox內(nèi)核。此外Gecko也是一個(gè)跨平臺內(nèi)核,可以在Windows、 BSD、Linux和Mac OS X中使用。
3.?Webkit
蘋果公司的內(nèi)核,也是蘋果的Safari瀏覽器使用的內(nèi)核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟件,在GPL條約下授權(quán),同時(shí)支持BSD系統(tǒng)的開發(fā)。所以Webkit也是自由軟件,同時(shí)開放源代碼。在安全方面不受IE、Firefox的制約,所以Safari瀏覽器在國內(nèi)還是很安全的。
常見的WebKit內(nèi)核的瀏覽器:Apple Safari(Win/Mac/iPhone/iPad)、Symbian手機(jī)瀏覽器、Android默認(rèn)瀏覽器,
4. Chromium/Bink
2008 年,谷歌公司發(fā)布了 chrome 瀏覽器,瀏覽器使用的內(nèi)核被命名為 chromium。
chromium fork 自開源引擎 webkit,卻把 WebKit 的代碼梳理得可讀性提高很多,所以以前可能需要一天進(jìn)行編譯的代碼,現(xiàn)在只要兩個(gè)小時(shí)就能搞定。因此 Chromium 引擎和其它基于 WebKit 的引擎所渲染頁面的效果也是有出入的。所以有些地方會把 chromium 引擎和 webkit 區(qū)分開來單獨(dú)介紹,而有的文章把 chromium 歸入 webkit 引擎中,都是有一定道理的。
谷歌公司還研發(fā)了自己的 Javascript 引擎,V8,極大地提高了 Javascript 的運(yùn)算速度。
chromium 問世后,帶動(dòng)了國產(chǎn)瀏覽器行業(yè)的發(fā)展。一些基于 chromium 的單核,雙核瀏覽器如雨后春筍般拔地而起,例如 搜狗、360、QQ瀏覽器等等,無一不是套著不同的外殼用著相同的內(nèi)核。
然而 2013 年 4 月 3 日,谷歌在 Chromium Blog 上發(fā)表 博客,稱將與蘋果的開源瀏覽器核心 Webkit 分道揚(yáng)鑣,在 Chromium 項(xiàng)目中研發(fā) Blink 渲染引擎(即瀏覽器核心),內(nèi)置于 Chrome 瀏覽器之中。
webkit 用的好好的,為何要投入到一個(gè)新的內(nèi)核中去呢?
Blink 其實(shí)是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 項(xiàng)目此前一直使用 WebKit(WebCore) 作為渲染引擎,但出于某種原因,并沒有將其多進(jìn)程架構(gòu)移植入Webkit。
后來,由于蘋果推出的 WebKit2 與 Chromium 的沙箱設(shè)計(jì)存在沖突,所以 Chromium 一直停留在 WebKit,并使用移植的方式來實(shí)現(xiàn)和主線 WebKit2 的對接。這增加了 Chromium 的復(fù)雜性,且在一定程度上影響了 Chromium 的架構(gòu)移植工作。
基于以上原因,Google 決定從 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研發(fā)),將在 WebKit 代碼的基礎(chǔ)上研發(fā)更加快速和簡約的渲染引擎,并逐步脫離 WebKit 的影響,創(chuàng)造一個(gè)完全獨(dú)立的 Blink 引擎。這樣以來,唯一一條維系 Google 和蘋果之間技術(shù)關(guān)系的紐帶就這樣被切斷了。
這里順便介紹下Chrome和Chromium兩個(gè)瀏覽器的區(qū)別——Chromium瀏覽器是谷歌為發(fā)展自家的瀏覽器Chrome而開啟的計(jì)劃,所以Chromium相當(dāng)于Chrome的工程版或稱實(shí)驗(yàn)版(盡管Chrome自身也有β版階段),新功能會率先在Chromium上實(shí)現(xiàn),待驗(yàn)證后才會應(yīng)用在Chrome上。Chromium一天最多可以更新十幾二十個(gè)版本,實(shí)驗(yàn)性的新特性都會現(xiàn)在這里放出,但是Chromium本身其實(shí)并不穩(wěn)定;而Chrome總共有四個(gè)更新分支:Canary、Dev、Beta、Stable,穩(wěn)定性依次增強(qiáng)。