欢迎光临散文网 会员登陆 & 注册

理解WebKit和Chromium: WebKit和Chromium组成与前世今生

2022-07-26 05:14 作者:神秘の豚鼠  | 我要投稿


WebKit是一个渲染引擎,而不是一个浏览器,它专注于网页内容展示,其中渲染是其中核心的部分之一。本章着重于对渲染部分的基础进行一定程度的了解和认识,主要理解基于DOM树来介绍Render树和RenderLayer树的构建由来和方式。

那么什么是DOM?简单来说,DOM是对HTML或者XML等文档的一种结构化表示方法,通过这种方式,用户可以通过提供标准的接口来访问HTML页面中的任何元素的相关属性,并可对DOM进行相应的添加、删除和更新操作等。相关信息可查阅W3C的文档,这里不再赘述。

基于DOM树的一些可视(visual)的节点,WebKit来根据需要来创建相应的RenderObject节点,这些节点也构成了一颗树,称之为Render树。基于Render树,WebKit也会根据需要来为它们中的某些节点创建新的RenderLayer节点,从而形成一棵RenderLayer树。

Render树和RenderLayer树是WebKit支持渲染所提供的基础但是却非常重要的设施。这是因为WebKit的布局计算依赖它们,浏览器的渲染和GPU硬件加速也都依赖于它们。幸运地是,得益于它们接口定义的灵活性,不同的浏览器可以很方便地来实现自己的渲染和加速机制。

Webkit

同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko(火狐) 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。


Chromium

Chromium虽然是属于WebKit的分支(程序员fork后改进的代码),但是把WebKit的代码梳理得可读性提高很多,平时使用chrome浏览器是就是一个Chromium引擎的稳定本,是基于webkit内核的,手机等移动端浏览器一般也都是基于webkit内核的浏览器,他们的根本都是源于webkit内核只是有所改进和开发而已,现在一般将苹果的浏览器、chrome浏览器、移动端的一些浏览器都成为webkit内核不做细分。


拓展

浏览器的内核引擎分类


Trident: 又称为MSHTML,IE 以Trident 作为内核引擎(已经被抛弃)

EdgeHTML:旧版本的edge浏览器

Gecko: Firefox 是基于 Gecko 开发

WebKit: Safari, Google Chrome,新版Edge

Presto: Opera的内核,但由于市场选择问题,主要应用在手机平台–Opera mini

注:2013年2月Opera宣布转向WebKit引擎

注:2013年4月Opera宣布放弃WEBKIT,跟随GOOGLE的新开发的blink引擎

————————————————

版权声明:本文部分内容

原文链接:https://blog.csdn.net/ljh101/article/details/110261636



~扩展阅读~


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


#概述


在介绍本系列各个专题之前,有必要先解释一下极其容易混淆的几个概念,它们是WebKit,WebKit2,Chromium和Chrome。


首先来了解WebKit。广义上来说,WebKit是一个开源的项目,其前身是来源于KDE的KHTML和KJS。该项目专注于网页内容的展示,开发出一流的网页渲染引擎。它不是浏览器,而且也不想成为浏览器。 该项目包含两个部分,第一是WebCore,其中包含了对HTML,CSS等很多W3C规范的实现;第二部分就是狭义上的WebKit,它主要是各个平台的的移植并提供相对应的Web接口,也就是WebView或者类似WebView,这些接口提供操作和显示网页的能力。目前使用WebKit的主流的浏览器或者WebView包括Chrome, Safari, QtWebKit, Android Browser以及众多的移动平台的浏览器。


WebKit2相对于狭义上的WebKit而言,它不是WebKit简单的第二个版本,它是一个新的API层,其最主要的变化在于将网页的渲染置于单独的进程,而接口层则在另外一个进程,它们之间通过IPC来通讯。对于接口的调用者来说,中间的IPC和底下的实现是透明的,这样做的好处有很多,一个很明显的好处是,当网页的渲染出现问题时,不会阻碍Web接口的调用者进程,这会在很大程度上解决或者帮助解决浏览器或者这些调用者的稳定性和安全性等问题。


Chromium是一个建立在WebKit之上的浏览器开源项目,由Google发起的。该项目被创建以来发展迅速,很多先进的技术被采用,如跨进程模型,沙箱模型等等。同时,很多新的规范被支持,例如WebGL,Canvas2D,CSS3以及其他很多的HTML5特性,基本上每天你都可以看到它的变化,它的版本升级很快。在性能方面,其也备受称赞,包括快速启动,网页加载迅速等。


Chrome是Google公司的浏览器产品,它基于chromium开源项目,一般选择稳定的版本作为它的基础,它和chromium的不同点在于chromium是开源试验场,会尝试很多新的东西,当这些东西稳定之后,chrome才会集成进来,这也就是说chrome的版本会落后于chromium。另外一个就是,chrome里面会加入一些私有的codec,这些仅在chrome中才会出现。再次,chrome还会整合Google的很多服务, 最后chrome还会有自动更新的功能,这也是chromium所没有的。


#参考文献

1.  http://www.webkit.org/

2. http://trac.webkit.org/wiki/WebKit2By yongsheng@chromium.org

-----------------------------------

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

https://blog.51cto.com/u_15469043/4896549





理解WebKit和Chromium: WebKit和Chromium组成

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


Byyongsheng@chromium.org

-----------------------------------

理解WebKit和Chromium: WebKit和Chromium组成

https://blog.51cto.com/u_15469043/4903241



//仅做笔记,感兴趣可以收藏 讨论~ 也可以指错

理解WebKit和Chromium: WebKit和Chromium组成与前世今生的评论 (共 条)

分享到微博请遵守国家法律