Chrome内核解析 -- 背景篇:Chrome, Chromium, WebKit, WebKit2, Blink
轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/yunchao_he/article/details/41577097
本文大部分內(nèi)容轉(zhuǎn)載于朱永盛的博客,原文地址:
http://blog.csdn.net/milado_nju/article/details/7292164
http://blog.csdn.net/milado_nju/article/details/7300074
本文將兩篇原文合并,略有刪改。并加入了一些新內(nèi)容,比如添加了Blink的介紹。
在介紹各個(gè)專題之前,有必要先解釋一下極其容易混淆的幾個(gè)概念,它們是WebKit和WebKit2,Chromium和Chrome, Blink。
首先來了解WebKit。廣義上來說,WebKit是一個(gè)開源項(xiàng)目,其前身來源于KDE的KHTML和KJS,由Apple發(fā)起并主導(dǎo)。該項(xiàng)目專注于網(wǎng)頁內(nèi)容的展示,并發(fā)展壯大為一流的網(wǎng)頁渲染引擎。它不是瀏覽器,而且也不想成為瀏覽器。 該項(xiàng)目包含兩個(gè)部分,第一部分是WebCore,其中包含了對(duì)HTML,CSS等很多W3C規(guī)范的實(shí)現(xiàn);第二部分就是狹義上的WebKit,它主要是各個(gè)平臺(tái)的的移植并提供相對(duì)應(yīng)的Web接口,也就是WebView或者類似WebView的組件,這些接口提供操作和顯示網(wǎng)頁的能力。目前使用WebKit的主流的瀏覽器或者WebView包括Chrome, Safari, QtWebKit, Android Browser, IOS平臺(tái)的WKWebView以及眾多的移動(dòng)平臺(tái)的瀏覽器和WebView。
WebKit2相對(duì)于狹義上的WebKit而言,它不是WebKit簡單的第二個(gè)版本,它是一個(gè)新的API層,其最主要的變化在于將網(wǎng)頁的渲染置于單獨(dú)的進(jìn)程,而接口層(API層)則在另外一個(gè)進(jìn)程,它們之間通過IPC來通訊。對(duì)于接口的調(diào)用者來說,中間的IPC和底下的實(shí)現(xiàn)是透明的,調(diào)用者感知不到它的存在,當(dāng)然也無法做定制。這樣做的好處有很多,一個(gè)很明顯的好處是,當(dāng)網(wǎng)頁的渲染出現(xiàn)問題時(shí),不會(huì)阻礙Web接口的調(diào)用者進(jìn)程,這會(huì)在很大程度上解決或者幫助解決瀏覽器或者這些調(diào)用者的穩(wěn)定性和安全性等問題。
Chromium是一個(gè)建立在WebKit之上的瀏覽器開源項(xiàng)目,由Google發(fā)起并主導(dǎo)。該項(xiàng)目被創(chuàng)建以來發(fā)展迅速,很多先進(jìn)的技術(shù)被采用,如跨進(jìn)程模型,沙箱模型等等。同時(shí),很多新的規(guī)范被支持,例如WebGL,Canvas2D,CSS3以及其他很多的HTML5特性,基本上每天你都可以看到它的變化,它的版本升級(jí)很快,現(xiàn)在沒6個(gè)月升級(jí)一個(gè)版本。在性能方面,它也備受稱贊,包括快速啟動(dòng),網(wǎng)頁加載迅速等。
Chrome是Google公司的瀏覽器產(chǎn)品,它基于chromium開源項(xiàng)目,一般選擇穩(wěn)定的版本作為它的基礎(chǔ),它和chromium的不同點(diǎn)在于chromium是開源試驗(yàn)場(chǎng),會(huì)嘗試很多新的東西,當(dāng)這些東西穩(wěn)定之后,chrome才會(huì)集成進(jìn)來,這也就是說chrome的版本會(huì)落后于chromium。另外,chrome會(huì)加入一些私有的codec,比如私有的音視頻編解碼器,這些僅在chrome中才會(huì)出現(xiàn),而Chromium里相應(yīng)的組件往往使用開源項(xiàng)目。再次,chrome還會(huì)整合Google的很多服務(wù)。 最后chrome還會(huì)有自動(dòng)更新的功能,這也是chromium所沒有的。
2013年5月,Google將WebKit從WebKit開源項(xiàng)目中克隆出來,稱為Blink。這樣,Google對(duì)Blink的改造將自由得多,不像對(duì)WebKit的改動(dòng)時(shí)刻受Apple掣肘。從此,Blink與WebKit并駕齊驅(qū),彼此不相關(guān)聯(lián)??傮w上,Blink的功能和WebKit相同,是Chromium的繪制引擎。當(dāng)然,時(shí)至今日,Google對(duì)Blink在構(gòu)架上做了一些改動(dòng),以更好的適應(yīng)于Chromium項(xiàng)目。另外,Blink并不是一個(gè)完全獨(dú)立的項(xiàng)目,而是作為Chromium項(xiàng)目的一部分。
簡單來講,WebKit/Blink是一個(gè)渲染引擎,Chromium是一個(gè)瀏覽器,它們那么分別包含哪些不同的功能模塊?它們是如何劃分地?下面為大家詳細(xì)解讀WebKit/Blink的功能。
WebKit/Blink:
1. HTML解析::負(fù)責(zé)HTML語言的解析
2. CSS解析:負(fù)責(zé)CSS的解析工作
3. 圖片解碼:支持不同編碼格式的圖片
4. JavaScript引擎:JavaScript語言的解析引擎,缺省的是JavaScriptCore,但是目前Google 的V8 JavaScript被廣泛使用
5. 正則表達(dá)式
6. 布局:負(fù)責(zé)布局(layout)的計(jì)算和更新工作
7. 文檔對(duì)象模型(DOM):DOM是W3C定義的對(duì)象模型,該部分負(fù)責(zé)DOM樹及其相應(yīng)的接口
8. 渲染:與渲染相關(guān)的基礎(chǔ)設(shè)施,例如渲染樹,渲染層次樹等等
9. SVG:對(duì)SVG的支持
10. XML解析:XML語言的解析
11. XSLT:XSLT語言的解析執(zhí)行
12. URL解析器:URL規(guī)范的解析
13. Unicode編解碼器:各種編碼解碼工作
14. 移植:WebKit中比較大的一部分,因?yàn)閃ebKit要工作需要不同平臺(tái)上有具體的實(shí)現(xiàn),因而不同的移植有不同的實(shí)現(xiàn)。chromium的移植很復(fù)雜,因?yàn)槠渲С挚缙脚_(tái),所以它的移植需要在windows,linux和mac上工作。
... ...
由上面的模塊大致可以看出,WebKit主要是跟網(wǎng)頁的解析和渲染相關(guān)的工作,其不涉及瀏覽器的歷史,書簽,下載,cookie管理等等方面的工作。實(shí)際上,這些和瀏覽器緊密相關(guān)的功能在Chromium中,Chromium的功能模塊包括:
Chromium:
1. Cookie管理器:cookie生命周期的管理
2. 歷史管理器:歷史記錄的管理
3. 密碼管理器:網(wǎng)頁中密碼登錄信息管理
4. 窗口管理:多個(gè)Tab窗口的管理和切換
5. 地址欄:地址欄功能,智能地址填充與書簽的協(xié)同工作
6. 安全瀏覽黑名單管理:安全瀏覽機(jī)制
7. 網(wǎng)絡(luò)棧:與網(wǎng)絡(luò)傳輸相關(guān)的工作,其有很多創(chuàng)新的東西
8. SSL/TLS:網(wǎng)絡(luò)傳輸安全
9. 磁盤緩存:磁盤緩存頁面及其替換策略等生命周期的管理
10. 下載管理器:管理下載相關(guān)
11. 粘帖板:clipboard的功能
12.書簽管理:書簽的組織和管理
13. URL解析器:同WebKit
14. Unicode編解碼器:同WebKit
... ...
Chromium主要是實(shí)現(xiàn)瀏覽器相關(guān)的功能,如上面中的網(wǎng)絡(luò)棧等等。其實(shí)以上只是一些瀏覽器基本功能,chromium實(shí)現(xiàn)的遠(yuǎn)不止這些,這其中包含沙箱模型,NaCl,擴(kuò)展機(jī)制,硬件加速架構(gòu)等等。這些我們將在之后的章節(jié)中逐一介紹它們。
URL解析器和Unicode編解碼器在兩者中都存在是因?yàn)樗鼈兌家褂玫健?/p>
總結(jié)
以上是生活随笔為你收集整理的Chrome内核解析 -- 背景篇:Chrome, Chromium, WebKit, WebKit2, Blink的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python-MongoDB可视化工具R
- 下一篇: 牛逼!用文言文来编程,97 年 CMU