浏览器内核

一、浏览器内核负责对网页语法的解释(如HTML、JavaScript)并渲染显示网页。
二、浏览器内核又可以分成两部分:渲染引起(layout engineer或者Rendering Engine)和JS引擎。

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

    常见的浏览器内核

    一、浏览器内核引擎

  • Trident内核:IE以Trident作为内核引擎

  • Gecko:Firefox是基于Gecko开发
  • Webkit:Safari, Google chrome,傲游3,猎豹浏览器,百度浏览器 opera浏览器 基于 Webkit 开发。
  • Blink | 浏览器 | 统称 | 内核 | | | | —- | —- | —- | —- | —- | | IE | | Trindent内核
    (俗称 IE内核) | | | | Chrome | Chromium内核或Chrome内核 | Webkit内核 | Bkink内核 | | | Firefox | | Gecko内核
    (俗称Firefox内核) | | | | Safari | | Webkit内核 | | | | Opera | | Presto内核 | 2013.02 :Webkit内核 | 2013.04:blink内核 | | 360、猎豹 | | IE+Chrome双内核 | | | | 搜狗、遨游、QQ | | Trident(兼容模式)+Webkit(高速模式) | | | | 百度、世界之窗 | | IE内核 | | | | 2345 | | IE内核 | IE+Chrome双内核 | |
【示例】Presto是早期Opera的内核,但由于市场选择问题,主要应用在手机平台-opera mini
- 2013.02 , Opera宣布转向Webkit引擎
- 2013.04, Opera宣布放弃Webkit,跟随google的新开发的blink引擎

二、Blink是从Webkit复制出来的,Webkit是从KHTML复制出来的。

浏览器内核时间线

内核引擎 - 图1

移动端

内核引擎 - 图2

内核种类

KHTML

一、WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko(火狐) 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。

Webkit内核引擎/渲染引擎

一、狭义的Webkit是一套开源的网页渲染引擎,包括WebCore排版引擎、JavaScriptCore解析引擎。
1、广义的Webkit是浏览器内核、浏览器Web接口和WebView和类WebView,采用Webkit的浏览器包括Chrome, safari, QtWebkit、Android Browser
二、Webkit2是新的API,包含两个线程分别负责网页渲染和接口API,他们之间通过IPC进行通信。这样极大地提高了安全性和独立性、稳定性,这样当渲染进程阻塞的时候不会影响接口API的调用。

webkit架构

一、《webkit技术内幕》一书中给出的架构图
image.png

Blink

一、Blink最先开始是从Webkit直接复制一个版本出来,然后将与chromium无关的ports全部移除掉,将代码结构重新整理,以后两者将各自走不同的路

历史

一、时间节点

  • 2008年,谷歌公司发布了chrome浏览器,浏览器使用的内核被命名为chromium
  • 2013.04.03,谷歌在Chromium Blog上发表博客,称将与苹果的开源浏览器核心Webkit分道扬镳,在Chromium项目中研发Blink渲染引擎(即浏览器核心),内置于chrome浏览器之中。

二、webkit用得好好的,为什么要投入到一个新的内核中去呢?
1、Blink其实是Webkit的分支,如同Webkit是KHTML的分支。Google 的 Chromium 项目此前一直使用 WebKit(WebCore) 作为渲染引擎,但出于某种原因,并没有将其多进程架构移植入Webkit。
2、后来,由于苹果推出的 WebKit2 与 Chromium 的沙箱设计存在冲突,所以 Chromium 一直停留在 WebKit,并使用移植的方式来实现和主线 WebKit2 的对接。这增加了 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。
3、基于以上原因,Google 决定从 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研发),将在 WebKit 代码的基础上研发更加快速和简约的渲染引擎,并逐步脱离 WebKit 的影响,创造一个完全独立的 Blink 引擎。这样以来,唯一一条维系 Google 和苹果之间技术关系的纽带就这样被切断了。
4、Google 和苹果在多个领域都是竞争对手,而唯独在浏览器引擎上有技术合作,利益一致。但为了各自的利益,谁都不会拿出 100% 的 “诚意” 来做好 WebKit,因为你做出来的成果竞争对手可以直接享用。移动互联网已经崛起,手机和平板设备端必将成为浏览器的另一个战场。这个时候,如果 Google 跟苹果仍然黏在一起,将会严重阻碍双方的进步,也会阻碍 WebKit 的进步。