大家上网都离不开浏览器浏览网页,而一个浏览器最重要的部分就是:
浏览器内核
英文名叫 “Rendering Engine”,直译过来叫做“渲染引擎”,不过我们也常称其为“排版引擎”。常见的浏览器内核有很多个,如 Gecko、Trident、WebKit、Blink 等等,待会下文都会提到。它的作用负责 HTML、CSS、图片等静态资源的渲染,正因为每家的内核对网页代码的解释有不同的地方,才会出现同一个页面在不同内核的浏览器下显示的不一样,这也是前端工程师需要去做的一项工作,去兼容各种浏览器达到一致的外观和功能。
比如同样的一段代码(这里是一个 <audio/> 标签,表示插入一段音频),chrome 跟 Safari 的展现的播放器长的完全不一样。
<audio src="//img.down10s.com//i/horse.ogg" controls="controls">
Your browser does not support the audio element.
</audio>
chrome
safari
网页中除了静态的排版,还有例如动效的展示,负责写这些动效的代码语言叫做 javascript,所以浏览器中还会包含JS 引擎专门负责解析 javascript。
早期的 javascript 并不复杂,所以浏览器内核 = 渲染引擎 JS 引擎。
后来网页越来越复杂,JS 引擎独立出来,遂:
浏览器内核 = 渲染引擎。
所以我们下文所提到的浏览器内核统统指的是渲染引擎。
二、常见的几种 PC 浏览器内核1、Trident —— IE
微软当年为了抵抗当时主流的网景浏览器(Netscape Navigator),立马收购另外一家浏览器公司 Mosaic,基于它的内核修改成了新的 Trident,开发出了 Internet Explorer,而且微软为了推销 IE,强制捆绑在了自家的操作系统中,从此网景浏览器日渐式微。
过了很多年,2015 年 3 月 17 日,当 Window10 发布时,微软的内置浏览器改为了 Edge,Edge 最显著的特点就是新内核 EdgeHTML。这使 Internet Explorer 11 成为最后一个版本。
这里还有个小插曲,当年微软还为「Internet Explorer for Mac」开发了一套新的排版引擎,叫 Tasman。但微软自 04 年就停止了对 Mac版 IE 的开发。
注1:IE 和 Edge 浏览器的渲染引擎不一样,但是 JS 引擎都一样,叫 Chakra
注2:国内的双核浏览器其中一核便是 Trident,美其名曰 “兼容模式”。
2、Gecko —— Firefox
Gecko浏览器引擎最早是网景开发的。但上面刚说到,微软的 IE 阻击网景浏览器的故事,最终以时代华纳解散了网景公司收场,大部分开发者被解雇。于是 Mozilla 基金会亦在当天成立,继续推动着 Gecko 的发展
而微软的 Trident 内核长期一家独大,很长时间都不更新,这导致了两个后果:
(1)遗留了大量的 BUG 和安全性的漏洞
(2)跟 W3C 标准的脱节【 W3C(万维网联盟)是负责制定网页标准的国际机构】
于是,针对 IE,Mozilla 基金会推出了自己的浏览器 Firefox,搭载的 Gecko 内核也祭出了自己的*手锏——开源,通过源代码的开放,鼓励全世界的开发者加入进来,解决了安全和速度问题。尤其是热代码加速这个全新思路,为 Firefox 打开了胜利之门。从刚开始被微软取笑为“臭狐狸” Firefox 卷头重来,到了跟 IE 形成分庭抗礼的局势。
不过,成也萧何败也萧何。Gecko 再次犯了当年的错误——贪大求全,将邮件组、新闻组、聊天等流行应用都打包进了 Firefox,导致内存占用问题。此外,Firefox 对 JavaScript 的支持并不好,反应迟钝也开始被频频抨击。这就给接下来上场的角色留下了超越的契机。
3、WebKit —— Safari
恕我无知,先前一直以为 WebKit 的谷歌开发的,没想到是苹果爸爸旗下的,即苹果电脑中自带的 Safari 浏览器,内核使用的就是大名鼎鼎的 WebKit
WebKit 内核是苹果基于 KDE(Linux 桌面系统)的 KHTML 引擎开发出来的,可以说 WebKit 是 KHTML 的一个开源的分支。当年苹果在比较了 Gecko 和 KHTML 后,选择了后者来做引擎开发,是因为相比 Gecko,KHTML 拥有清晰的源码结构和极快的渲染速度,也实现了 JavaScript 脚本的快速解释器调用。
WebKit 可以说是苹果公司给开源世界的一大贡献,基于此开源引擎,又衍生了多个 WebKit 分支,如下面要介绍的 Chrome 的浏览器引擎。
注:其实 WebKit 本身由两个引擎构成的,一个是渲染引擎WebCore,基于 KDE 的KHTML,另一个则是 JS 引擎JSCore,基于 KDE 的KJS
4、Chromium —— Chrome
谷歌 Chrome浏览器从08年创始至今一直使用苹果公司的WebKit 作为浏览器内核,隶属谷歌旗下的 Chromium 开源项目去做维护。Chromium 把 WebKit 的代码梳理得可读性和性能提高很多。
注意,Chromium 是灰色而 Chrome 是彩色
每次新功能会先在 Chromium 上实现,待验证后才会应用在 Chrome上。Chromium 一天最多可以更新十几二十个版本,实验性的新特性都会现在这里放出,但是 Chromium 本身其实并不稳定;而 Chrome 总共有四个更新分支:Canary、Dev、Beta、Stable,稳定性依次增强。
Chromium 问世后,带动了国产浏览器行业的发展。一些基于 chromium 的单核,双核浏览器如雨后春笋般拔地而起,例如:搜狗、360、QQ 浏览器等等,无一不是套着不同的外壳用着相同的内核。
2010年,由于苹果推出的新的 WebKit2, 与 Chromium 的沙箱设计存在冲突,所以 Chromium 一直停留在 WebKit,并使用移植的方式来实现和主线 WebKit2 的对接。这增加了 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。
基于以上原因,2013年4月3日,谷歌在 Chromium Blog 上发表博客,Google 决定从 WebKit 衍生出自己的引擎(后由 Google 和 Opera Software 共同研发)自立门户,即在 WebKit 代码的基础上研发更加快速和简约的渲染引擎,并逐步脱离 WebKit 的影响,创造一个完全独立的 Blink 内核,同样隶属于 Chromium开源项目下。这样以来,唯一一条维系 Google 和苹果之间技术关系的纽带就这样被切断了。
界面简洁、加载快速、数据安全等这些特点让 Chrome 越来越受喜欢,甚至好过于苹果。
所以现在 Chrome 是全世界市场占有率最高的浏览器。
注1:Chrome 的 JS 引擎叫 V8,也是大名鼎鼎
注2:国内的双核浏览器其中一核便是 Chromium(Blink),美其名曰 “极速模式”。
国产红芯就是基于 Chromium(Blink)的基础上,套了个壳,所以称为自主研发真的等于诈骗了。
不过凭心而论,研发浏览器的内核难度非常大,不亚于捣鼓出半个操作系统,所以上面提到的几大公司其实也没有完全从零开始,都是基于之前成熟的开源引擎修改而来。哪怕这样,据说 Google 公司 对 Chrome 的研发也投入了1000个工程师,持续 N 年,耗费了数百亿。
5、Presto —— Opera
Presto 也是 Opera 浏览器开发并服役近十年的老牌内核了。
但是前文提到,在 Chrome 于 2013 年推出 Blink 之后,Opera 也一同参与开发并牢牢跟进,于是 Opera 浏览器从 Presto 改为了 Blink。
二、常见的几种移动端浏览器内核由于智能移动端发展历史相对于 PC 很短,所以 IE、Opera 这些元老级浏览器内核很少见,移动端浏览器大都是从 Webkit 开始的
1、手机 OS 内置浏览器
(1)iPhone 和 iPad 等苹果 iOS 平台上是自家的 WebKit / WebKit2。
同时,IOS 提供了WKWebView组件给第三方 APP 使用,可以实现浏览器功能。
(2)Android 4.4 之前的 Android 系统浏览器内核是 WebKit,Android 4.4 系统浏览器切换到了Chromium / Blink。
同时,Android 提供了 Webview 组件给第三方 APP 使用,可以实现浏览器功能。
(3)Windows Phone 系统浏览器内核是 Trident。
2、微信内置浏览器
Android 的微信是腾讯基于 Webkit 开发的 X5 内核
IOS 中 的微信因为系统的限制,只能使用系统自带的 WKWebView 组件
3、第三方浏览器 App
大多都是基于 webkit 做了二次开发,如:
UC 是 U3内核
qq 浏览器是 X5内核
参考资料
[全面了解浏览器(内核)发展史] https://www.jianshu.com/p/db1b230e3415
[维基百科]
Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved