瀏覽器內(nèi)核可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎凝赛。最開(kāi)始渲染引擎和 JS 引擎并沒(méi)有區(qū)分的很明確邑闺,后來(lái) JS 引擎越來(lái)越獨(dú)立,內(nèi)核就傾向于只指渲染引擎前计。所以現(xiàn)在講瀏覽器內(nèi)核主要說(shuō)的就是渲染引擎潜秋。
那渲染引擎又是什么呢,簡(jiǎn)單來(lái)說(shuō)就是把html疾捍、css的代碼變成你現(xiàn)在看到的頁(yè)面的樣子奈辰。常見(jiàn)的瀏覽器內(nèi)核可以分這四種:Trident,Gecko乱豆,Webkit奖恰,Chromium/Bink⊥鹪#看著都很陌生瑟啃,那么換個(gè)樣子:IE,Mozilla FireFox续滋,Safari翰守,Chrome 是不是一下子覺(jué)得熟悉多了。
1. Trident
說(shuō)起Trident疲酌,很多人都會(huì)感到陌生蜡峰,但提起IE(Internet Explorer)則無(wú)人不知無(wú)人不曉,由于其被包含在全世界使用率最高的操作系統(tǒng)Windows中朗恳,得到了極高的市場(chǎ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í)解決,然后加上一些致力于開(kāi)源的開(kāi)發(fā)者和一些學(xué)者們公開(kāi)自己認(rèn)為IE瀏覽器不安全的觀點(diǎn)怀浆,也有很多用戶(hù)轉(zhuǎn)向了其他瀏覽器谊囚。
Trident內(nèi)核的常見(jiàn)瀏覽器有:
(1)IE6、IE7执赡、IE8(Trident 4.0)镰踏、IE9(Trident 5.0)、IE10(Trident 6.0)沙合;
(2)獵豹安全瀏覽器:1.0-4.2版本為T(mén)rident+Webkit奠伪,4.3版本為T(mén)rident+Blink;
(3)360安全瀏覽器 :1.0-5.0為T(mén)rident,6.0為T(mén)rident+Webkit绊率,7.0為T(mén)rident+Blink谨敛;
(4)360極速瀏覽器:7.5之前為T(mén)rident+Webkit,7.5為T(mén)rident+Blink;
(5)傲游瀏覽器 :傲游1.x滤否、2.x為IE內(nèi)核脸狸,3.x為IE與Webkit雙核;
(6)搜狗高速瀏覽器:1.x為T(mén)rident顽聂,2.0及以后版本為T(mén)rident+Webkit肥惭;
2. Gecko
Netscape6開(kāi)始采用的內(nèi)核,后來(lái)的Mozilla FireFox (火狐瀏覽器) 也采用了該內(nèi)核紊搪,現(xiàn)在主要由Mozilla基金會(huì)進(jìn)行維護(hù)。Gecko的特點(diǎn)是代碼完全公開(kāi)全景,因此耀石,其可開(kāi)發(fā)程度很高,全世界的程序員都可以為其編寫(xiě)代碼爸黄,增加功能滞伟。因?yàn)檫@是個(gè)開(kāi)源內(nèi)核,因此受到許多人的青睞炕贵。
事實(shí)上梆奈,Gecko引擎的由來(lái)跟IE不無(wú)關(guān)系,前面說(shuō)過(guò)IE沒(méi)有使用W3C的標(biāo)準(zhǔn)称开,這導(dǎo)致了微軟內(nèi)部一些開(kāi)發(fā)人員的不滿(mǎn)亩钟;他們與當(dāng)時(shí)已經(jīng)停止更新了的 Netscape的一些員工一起創(chuàng)辦了Mozilla,以當(dāng)時(shí)的Mosaic內(nèi)核為基礎(chǔ)重新編寫(xiě)內(nèi)核鳖轰,于是開(kāi)發(fā)出了Geckos清酥。不過(guò)事實(shí)上,Gecko 內(nèi)核的瀏覽器仍然還是Firefox (火狐) 用戶(hù)最多蕴侣,所以有時(shí)也會(huì)被稱(chēng)為Firefox內(nèi)核焰轻。此外Gecko也是一個(gè)跨平臺(tái)內(nèi)核,可以在Windows昆雀、 BSD辱志、Linux和Mac OS X中使用。
3.?Webkit
蘋(píng)果公司的內(nèi)核狞膘,也是蘋(píng)果的Safari瀏覽器使用的內(nèi)核揩懒。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來(lái)客冈,它們都是自由軟件旭从,在GPL條約下授權(quán),同時(shí)支持BSD系統(tǒng)的開(kāi)發(fā)。所以Webkit也是自由軟件和悦,同時(shí)開(kāi)放源代碼退疫。在安全方面不受IE、Firefox的制約鸽素,所以Safari瀏覽器在國(guó)內(nèi)還是很安全的褒繁。
常見(jiàn)的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 自開(kāi)源引擎 webkit,卻把 WebKit 的代碼梳理得可讀性提高很多瓦呼,所以以前可能需要一天進(jìn)行編譯的代碼喂窟,現(xiàn)在只要兩個(gè)小時(shí)就能搞定。因此 Chromium 引擎和其它基于 WebKit 的引擎所渲染頁(yè)面的效果也是有出入的央串。所以有些地方會(huì)把 chromium 引擎和 webkit 區(qū)分開(kāi)來(lái)單獨(dú)介紹磨澡,而有的文章把 chromium 歸入 webkit 引擎中,都是有一定道理的质和。
谷歌公司還研發(fā)了自己的 Javascript 引擎稳摄,V8,極大地提高了 Javascript 的運(yùn)算速度饲宿。
chromium 問(wèn)世后厦酬,帶動(dòng)了國(guó)產(chǎn)瀏覽器行業(yè)的發(fā)展。一些基于 chromium 的單核褒傅,雙核瀏覽器如雨后春筍般拔地而起弃锐,例如 搜狗、360殿托、QQ瀏覽器等等霹菊,無(wú)一不是套著不同的外殼用著相同的內(nèi)核。
然而 2013 年 4 月 3 日支竹,谷歌在 Chromium Blog 上發(fā)表 博客旋廷,稱(chēng)將與蘋(píng)果的開(kāi)源瀏覽器核心 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) 作為渲染引擎,但出于某種原因豪治,并沒(méi)有將其多進(jìn)程架構(gòu)移植入Webkit洞拨。
后來(lái),由于蘋(píng)果推出的 WebKit2 與 Chromium 的沙箱設(shè)計(jì)存在沖突负拟,所以 Chromium 一直停留在 WebKit烦衣,并使用移植的方式來(lái)實(shí)現(xiàn)和主線 WebKit2 的對(duì)接。這增加了 Chromium 的復(fù)雜性掩浙,且在一定程度上影響了 Chromium 的架構(gòu)移植工作花吟。
基于以上原因,Google 決定從 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研發(fā))厨姚,將在 WebKit 代碼的基礎(chǔ)上研發(fā)更加快速和簡(jiǎn)約的渲染引擎衅澈,并逐步脫離 WebKit 的影響,創(chuàng)造一個(gè)完全獨(dú)立的 Blink 引擎谬墙。這樣以來(lái)矾麻,唯一一條維系 Google 和蘋(píng)果之間技術(shù)關(guān)系的紐帶就這樣被切斷了。
這里順便介紹下Chrome和Chromium兩個(gè)瀏覽器的區(qū)別——Chromium瀏覽器是谷歌為發(fā)展自家的瀏覽器Chrome而開(kāi)啟的計(jì)劃芭梯,所以Chromium相當(dāng)于Chrome的工程版或稱(chēng)實(shí)驗(yàn)版(盡管Chrome自身也有β版階段),新功能會(huì)率先在Chromium上實(shí)現(xiàn)弄喘,待驗(yàn)證后才會(huì)應(yīng)用在Chrome上玖喘。Chromium一天最多可以更新十幾二十個(gè)版本,實(shí)驗(yàn)性的新特性都會(huì)現(xiàn)在這里放出蘑志,但是Chromium本身其實(shí)并不穩(wěn)定累奈;而Chrome總共有四個(gè)更新分支:Canary、Dev急但、Beta澎媒、Stable,穩(wěn)定性依次增強(qiáng)波桩。