理解WebKit和Chromium: WebKit和Chromium组成

时间:2021-12-26 22:24:24

 

浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)JS 引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。JS 引擎则是解析 Javascript 语言,执行 javascript 语言来实现网页的动态效果。

最开始渲染引擎和 JS 引擎并没有区分的很明确,后来 JS 引擎越来越独立,内核就倾向于只指渲染引擎

 

webkit 用的好好的,为何要投入到一个新的内核中去呢?

Blink 其实是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 项目此前一直使用 WebKit(WebCore) 作为渲染引擎,但出于某种原因,并没有将其多进程架构移植入Webkit。

后来,由于苹果推出的 WebKit2 与 Chromium 的沙箱设计存在冲突,所以 Chromium 一直停留在 WebKit,并使用移植的方式来实现和主线 WebKit2 的对接。这增加了 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。

基于以上原因,Google 决定从 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研发),将在 WebKit 代码的基础上研发更加快速和简约的渲染引擎,并逐步脱离 WebKit 的影响,创造一个完全独立的 Blink 引擎。这样以来,唯一一条维系 Google 和苹果之间技术关系的纽带就这样被切断了。

Google 和苹果在多个领域都是竞争对手,而唯独在浏览器引擎上有技术合作,利益一致。但为了各自的利益,谁都不会拿出 100% 的 "诚意" 来做好 WebKit,因为你做出来的成果竞争对手可以直接享用。移动互联网已经崛起,手机和平板设备端必将成为浏览器的另一个战场。这个时候,如果 Google 跟苹果仍然黏在一起,将会严重阻碍双方的进步,也会阻碍 WebKit 的进步。

据说 Blink 删除了 880w 行 webkit 代码。

在“WebKit,WebKit2,Chromium和Chrome介绍”中,大致了解了WebKit是一个渲染引擎,Chromium是一个浏览器,它们那么分别包含哪些不同的功能模块?它们是如何划分地?本章节来为大家详细解读一下。

WebKit:

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:

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编解码器在两者中都存在是因为它们都要使用到。