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