浏览器内核趣闻

浏览器核心的部分是“Rendering Engine”- “渲染引擎”,称为“浏览器内核”。负责对网页语法的解释(HTML、CSS 的解析,页面布局)并渲染(显示)网页。
不过现在,我们提起的“浏览器内核”,大多包含了javascript引擎,如WebKit,它是WebCore排版引擎及JavaScriptCore解析引擎组合。

分类:

1、Trident(IE内核):

该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到IE11,也被普遍称作”IE内核”。Trident实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器(壳浏览器)涌现。

IE从版本11开始,初步支持WebGL技术。IE8的JavaScript引擎是Jscript,IE9开始用Chakra,这两个版本区别很大,Chakra无论是速度和标准化方面都很出色。

还要说一下,Window10 发布后,IE 将其内置浏览器命名为 Edge,Edge 最显著的特点就是新内核 EdgeHTML。据说,M$ 浏览器开发团队现在的态度是开放、进取、拥抱标准、与其他浏览器保持统一,听取开发者和用户的意见啦,快速迭代更新啦之类的。

Trident内核的迭代列表

版本图示

Trident内核的常见浏览器

IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)
360安全浏览器(1.0-5.0为Trident,6.0为Trident+Webkit,7.0为Trident+Blink)
360极速浏览器(7.5之前为Trident+Webkit,7.5为Trident+Blink)
猎豹安全浏览器(1.0-4.2版本为Trident+Webkit,4.3及以后版本为Trident+Blink)
傲游浏览器(傲游1.x、2.x为IE内核,3.x为IE与Webkit双核)
百度浏览器(早期版本)
世界之窗浏览器(最初为IE内核,2013年采用Chrome+IE内核)
搜狗高速浏览器(1.x为Trident,2.0及以后版本为Trident+Webkit)
UC浏览器(Blink内核+Trident内核)

部分浏览器的新版本是“双核”甚至是“多核”,其中一个内核是Trident,然后再增加一个其他内核。国内的厂商一般把其他内核叫做“高速浏览模式”,而Trident则是“兼容浏览模式”,用户可以来回切换。

2、Gecko(Firefox内核):

Netscape6开始采用的内核,后来的Mozilla FireFox(火狐浏览器) 也采用了该内核,Gecko的特点是代码完全公开,其JavaScript引擎是SpiderMonkey。

Gecko内核常见的浏览器:

Mozilla Firefox、Mozilla SeaMonkey、Flock(早期版本)、K-Meleon

3、Presto(Opera前内核) (已废弃):

Opera12.17及更早版本曾经采用的内核,现已停止开发并废弃。

Opera在2013年2月宣布放弃Presto,转而跟随Chrome使用WebKit分支的Chromium引擎作为其核心引擎。
在Chrome与2013年推出Blink引擎(也是基于WebKit的分支)之后,Opera也紧跟其脚步表示将转而使用Blink作为浏览器核心引擎。

4、Webkit(Safari内核,Chrome内核原型,开源):

它是苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生而来
Google Chrome、360极速浏览器以及搜狗高速浏览器高速模式也使用Webkit作为内核(在脚本理解方面,Chrome使用自己研发的V8引擎)。WebKit 内核在手机上的应用也十分广泛,例如 Google 的手机 Gphone、 Apple 的iPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit。

很多人错误的把Webkit叫做Chrome内核,其实Chrome浏览器的内核一开始叫Chromium,后来又变成了Blink了,苹果的Safari才是从一开始就叫Webkit,后来又升级为Webkit2的。

2008 年,谷歌公司发布了 Chrome 浏览器,浏览器使用的内核被命名为 Chromium。
Chromium fork 自开源引擎 Webkit,谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度。
Chromium 问世后,带动了国产浏览器行业的发展。前面提到的,一些基于 Chromium 的单核,双核浏览器如雨后春笋般拔地而起,例如 搜狗、360、QQ浏览器等等,无一不是套着不同的外壳用着相同的内核。

WebKit内核常见的浏览器:

Apple Safari (Win/Mac/iPhone/iPad)、Android 默认浏览器。

5、Blink

2013 年 4 月 3 日,谷歌在 Chromium Blog 上发表 博客,称将与苹果的开源浏览器核心 Webkit 分道扬镳,在 Chromium 项目中研发 Blink 渲染引擎(即浏览器核心),内置于 Chrome 浏览器之中。Blink是一个由Google和Opera Software开发的浏览器排版引擎,Google计划将这个渲染引擎作为Chromium计划的一部分。这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)和Yandex浏览器中使用
此外,Mozilla与三星也达成合作协议开发“下一代”浏览器渲染引擎Servo

顺便说一下,什么是Chromium计划?

Chromium是Google为发展自家的浏览器Google Chrome(以下简称Chrome)而开启的计划,所以Chromium相当于Chrome的工程版或称实验版(尽管Chrome自身也有β版阶段),新功能会率先在Chromium上实现,待验证后才会应用在Chrome上,故Chrome的功能会相对落后但较稳定。
所以,Chromium和Chrome都是浏览器,Chromium是开发版本,相比起Chrome更新速度快很多,有时数个小时就有一个新版本,不过普通人一般用Chrome就可以了。

再顺便说一下,为什么要新搞一个Blink内核?

Blink 其实是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 项目此前一直使用 WebKit(WebCore) 作为渲染引擎。

后来,由于苹果推出的 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 代码。啧啧啧……

最后

参考文章:
主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
各主流浏览器内核介绍

推荐阅读更多精彩内容