转载请注明出处: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相关推荐

  1. Chrome内核解析 -- 绘制引擎基础篇:Command Buffer

    转载请注明出处:http://write.blog.csdn.net/postedit/41743463 本文讲解Chromium里集中处理GL操作的重要模块:command buffer. Grap ...

  2. 浏览器的四大内核:Trident,Gecko,Webkit,Blink

    浏览器的四大内核: Trident,Gecko,Webkit,Blink. 不同的内核对网页编写语法的解释也有不同,进而导致同一个页面在不同内核的浏览器下显示出来的效果也会有所出入,这也是作为一个前端 ...

  3. 理解WebKit和Chromium: WebKit, WebKit2, Chromium和Chrome介绍

    转载请注明原文地址:http://blog.csdn.net/milado_nju/article/details/7292164 ##概述 在介绍本系列各个专题之前,有必要先解释一下极其容易混淆的几 ...

  4. 理解WebKit和Chromium: WebKit和Blink

    转载请注明出处:http://blog.csdn.net/milado_nju/ 关注Web和HTML5领域的人最近应该都有了解WebKit项目的重磅消息,那就是Google退出WebKit项目,创建 ...

  5. html调用谷歌内核,360浏览器指定Webkit(chrome)内核

    起因 很多web开发者对360浏览器都没有什么好感,拥有着庞大的用户量,但又因为种种特性导致网页兼容问题,尤其是360安全浏览器提供的双内核功能,总是将网站用IE内核去解析,而自己的网站 http:/ ...

  6. python webkit内核_Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件

    在C#中,默认的WebBrowser控件默认使用的是IE的core,而IE的种种遭人吐槽的诟病使我不敢轻易使用WebBrowser,因此,打算使用Chrome的内核替换IE.Chrome的内核使用的是 ...

  7. 【读书笔记】【WebKit 技术内 幕(一)】浏览器架构与浏览器内核;chromium、webkit和blink的渲染过程;chromium、webkit的架构与代码结构;webkit2架构

    文章目录 前言 Something great 第1章 浏览器和浏览器内核 浏览器 用户代理和浏览器行为 内核特征 WebKit与blink 第2章 HTML网页和结构 网页构成与结构 WebKit的 ...

  8. rcp桌面程序嵌入chrome内核(JxBrowser)

    故事背景:最近公司给的任务,在桌面程序中嵌套jsp页面,因为之前都是做web项目,初次接触rcp,研究一下还是可以的,很容易的将jsp页面嵌套进桌面程序中,但是又一个难题来了,此jsp页面只是用于ch ...

  9. ie内核浏览器_[正式版下载] 微软全新 Chrome 内核 Edge 浏览器!原生支持 Chrome 插件扩展...

    尽管微软的 Office 和 Windows 10 势头不错,但像 WP 手机.XBox 等方面似乎并未获得预期的成功.而先前为了替代老旧的 IE 浏览器,微软倾力开发的 Edge 也未见起色. 不过 ...

  10. 使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署免费下载:https://docs.sh ...

最新文章

  1. 1024 程序员节重要议程曝光,开源技术英雄会聊开源“真心话”
  2. 解决set /p yn= 接受键盘输入导致ECHO 处于关闭状态的问题
  3. C++ 引用 Demo - Win32 版
  4. 微信小程序中用setData修改一个对象的属性值
  5. 建议收藏!近期值得读的 9 篇「对抗样本」最新论文
  6. 超完美截图工具snipaste的下载使用
  7. rabbitmq-通配符模式
  8. UML 10 种常见的域建模错误
  9. Git学习文档之一 学习文档-原理
  10. spring security系列一:架构概述
  11. OpenStack Compute(Nova)功能分析
  12. 深入浅出 MFC -WIN32基本概念
  13. 关于阿里云,有什么故事?
  14. java实现聊天室(GUI界面+私聊+群聊)
  15. wow 如何写dz 宏
  16. GCD栅栏函数和信号量
  17. 《哪吒》票房直指40亿,闯中国影史前三!导演饺子:最怕你的梦想只有一腔热血
  18. mac 锤子android助手,Mac+Android好帮手 锤子SmartFinder
  19. 我要有女朋友肯定带她吃完这上面所有的小吃(很便宜哥们儿们行动起来吧)
  20. 小米路由器同一wifi局域网下,各主机无法ping连

热门文章

  1. EXCEL工资条短信如何发送?
  2. 批量修改图片的后缀名格式
  3. matlab符号函数作图,matlab符号函数的作图
  4. Axure的使用---原型图
  5. 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开
  6. c语言void*指针,C语言void指针
  7. 移动终端WAPI证书快速下载并自动连接解决方案
  8. 机械类常用英语(一.组装、冲压、喷漆等专业词汇)
  9. 未检测任何音频设备,关机假死
  10. 安装IIS服务(Internet信息服务(Internet Information Services,简写IIS,互联网信息服务)