/
主流浏览器的内核介绍
内核
首先得搞懂浏览器内核究竟指的是什么。
浏览器内核又可以分成两部分:渲染引擎(layoutengineer或者RenderingEngine)和JS
引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以
及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语
法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需
要编辑、显示网络内容的应用程序都需要内核。JS引擎则是解析Javascript语言,执行
javascript语言来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于
只指渲染引擎。有一个网页标准计划小组制作了一个ACID来测试引擎的兼容性和性能。内
核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,但是常见的
浏览器内核可以分这四种:Trident、Gecko、Blink、Webkit。
Trident(['traɪd(ə)nt])
Trident(IE内核):该内核程序在1997年的IE4中首次被采用,是微软在Mosaic(”马
赛克”,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器,从此网页可以在
图形界面的窗口浏览)代码的基础之上修改而来的,并沿用到IE11,也被普遍称作“IE
内核”。
Trident实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内
核而非IE的浏览器(壳浏览器)涌现。由于IE本身的“垄断性”(虽然名义上IE并非垄
断,但实际上,特别是从Windows95年代一直到XP初期,就市场占有率来说IE的确借
助Windows的东风处于“垄断”的地位)而使得Trident内核的长期一家独大,微软很
长时间都并没有更新Trident内核,这导致了两个后果——一是Trident内核曾经几乎与
W3C标准脱节(2005年),二是Trident内核的大量Bug等安全性问题没有得到及时解决,
然后加上一些致力于开源的开发者和一些学者们公开自己认为IE浏览器不安全的观点,也
有很多用户转向了其他浏览器,Firefox和Opera就是这个时候兴起的。非Trident内核
浏览器的市场占有率大幅提高也致使许多网页开发人员开始注意网页标准和非IE浏览器
的浏览效果问题。
补充:IE从版本11开始,初步支持WebGL技术。IE8的JavaScript引擎是Jscript,
IE9开始用Chakra,这两个版本区别很大,Chakra无论是速度和标准化方面都很出色。
国内很多的双核浏览器的其中一核便是Trident。
Window10发布后,IE将其内置浏览器命名为Edge,Edge最显著的特点就是新内核
EdgeHTML。
Gecko(['gekəʊ])
Gecko(Firefox内核):Netscape6开始采用的内核,后来的MozillaFireFox(火狐浏览器)
也采用了该内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序
员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko内
核的浏览器也很多,这也是Gecko内核虽然年轻但市场占有率能够迅速提高的重要原因。
/
事实上,Gecko引擎的由来跟IE不无关系,前面说过IE没有使用W3C的标准,这导致
了微软内部一些开发人员的不满;他们与当时已经停止更新了的Netscape的一些员工一起
创办了Mozilla,以当时的Mosaic内核为基础重新编写内核,于是开发出了Gecko。不过
事实上,Gecko内核的浏览器仍然还是Firefox(火狐)用户最多,所以有时也会被称为
Firefox内核。此外Gecko也是一个跨平台内核,可以在Windows、BSD、Linux和MacOS
X中使用。
Webkit
一提到webkit,首先想到的便是chrome,可以说,chrome将Webkit内核深入人心,殊
不知,Webkit的鼻祖其实是Safari。现在很多人错误地把webkit叫做chrome内核(即
使chrome内核已经是blink了),苹果都哭瞎了有木有。
Safari是苹果公司开发的浏览器,使用了KDE(Linux桌面系统)的KHTML作为浏览器的
内核,Safari所用浏览器内核的名称是大名鼎鼎的WebKit。Safari在2003年1月7
日首度发行测试版,并成为MacOSXv10.3与之后版本的默认浏览器,也成为苹果其它系
列产品的指定浏览器(也已支持Windows平台)。
如上述可知,WebKit前身是KDE小组的KHTML引擎,可以说WebKit是KHTML的一个开
源的分支。当年苹果在比较了Gecko和KHTML后,选择了后者来做引擎开发,是因为KHTML
拥有清晰的源码结构和极快的渲染速度。
Webkit内核可以说是以硬件盈利为主的苹果公司给软件行业的最大贡献之一。随后,2008
年谷歌公司发布chrome浏览器,采用的chromium内核便fork了Webkit。
Chromium/Bink
2008年,谷歌公司发布了chrome浏览器,浏览器使用的内核被命名为chromium。
chromiumfork自开源引擎webkit,却把WebKit的代码梳理得可读性提高很多,所以以
前可能需要一天进行编译的代码,现在只要两个小时就能搞定。因此Chromium引擎和其它
基于WebKit的引擎所渲染页面的效果也是有出入的。所以有些地方会把chromium引擎和
webkit区分开来单独介绍,而有的文章把chromium归入webkit引擎中,都是有一定道
理的。
谷歌公司还研发了自己的Javascript引擎,V8,极大地提高了Javascript的运算速度。
chromium问世后,带动了国产浏览器行业的发展。一些基于chromium的单核,双核浏览
器如雨后春笋般拔地而起,例如搜狗、360、QQ浏览器等等,无一不是套着不同的外壳用
着相同的内核。
然而2013年4月3日,谷歌在ChromiumBlog上发表博客,称将与苹果的开源浏览器
核心Webkit分道扬镳,在Chromium项目中研发Blink渲染引擎(即浏览器核心),内置
于Chrome浏览器之中。
webkit用的好好的,为何要投入到一个新的内核中去呢?
Blink其实是WebKit的分支,如同WebKit是KHTML的分支。Google的Chromium项目
此前一直使用WebKit(WebCore)作为渲染引擎,但出于某种原因,并没有将其多进程架构
移植入Webkit。
/
后来,由于苹果推出的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代码。
Presto(['prestəʊ])
Presto是挪威产浏览器opera的“前任”内核,为何说是“前任”,因为最新的opera
浏览器早已将之抛弃从而投入到了谷歌大本营。
Opera的一个里程碑作品是Opera7.0,因为它使用了OperaSoftware自主开发的Presto
渲染引擎,取代了旧版Opera4至6版本使用的Elektra排版引擎。该款引擎的特点就
是渲染速度的优化达到了极致,然而代价是牺牲了网页的兼容性。
Presto加入了动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。
Presto在推出后不断有更新版本推出,使不少错误得以修正,以及阅读Javascript效能
得以最佳化,并成为当时速度最快的引擎。
然而为了减少研发成本,Opera在2013年2月宣布放弃Presto,转而跟随Chrome使用
WebKit分支的Chromium引擎作为自家浏览器核心引擎,Presto内核的Opera浏览器版
本永远的停留在了12.17。在Chrome于2013年推出Blink引擎之后,Opera也紧跟其
脚步表示将转而使用Blink作为浏览器核心引擎。
Presto与开源的WebKit和经过谷歌加持的Chromium系列相比毫无推广上的优势,这是
Opera转投WebKit的主要原因,并且使用WebKit内核的Opera浏览器可以兼容谷歌
Chrome浏览器海量的插件资源。但是换内核的代价对于Opera来说过于惨痛。使用谷歌的
WebKit内核之后,原本快速,轻量化,稳定的Opera浏览器变得异常的卡顿,而且表现不
稳定,Opera原本旧内核浏览器书签同步到新内核上的工作Opera花了整整两年时间,期
间很多Opera的用户纷纷转投谷歌浏览器和其他浏览器,造成了众多的用户流失。时至今
日现在还有上千万人在使用老版本的Opera。
很多人都认为Opera浏览器终止在了12.17,此后所更新的Opera版本号不再是原来那个
Opera。
关于移动端
移动端的浏览器内核主要说的是系统内置浏览器的内核。
/
目前移动设备浏览器上常用的内核有Webkit,Blink,Trident,Gecko等,其中iPhone和
总结
浏览器内核主要指的是浏览器的渲染引擎,2013年以前,代表有Trident(IE),Gecko
(firefox),Webkit(Safarichrome等)以及Presto(opera)。2013年,谷歌开始研发
blink引擎,chrome28以后开始使用,而opera则放弃了自主研发的Presto引擎,投
入谷歌怀抱,和谷歌一起研发blink引擎,国内各种chrome系的浏览器(360、UC、QQ、
2345等等)也纷纷放弃webkit,投入blink的怀抱。
还有一点文章里没有说的很明白,就是Webkit其实是KHTML的分支,这里的KHTML指渲
染引擎,Webkit其实就泛指了Webkit的渲染引擎WebCore,而Webkit引擎的
Javascript引擎JSCore则是KJS的分支。而chrome则搭载了自己的Javascript引擎
V8。引用各主流浏览器内核介绍里的一段话:
我们上面提到Chrome是基于WebKit的分支,而WebKit又由渲染引擎“WebCore”和JS
解释引擎“JSCore”组成,可能会让你搞不清V8和JSCore的关系。你可以这样理解—
—WebKit是一块主板,JSCore是一块可拆卸的内存条,谷歌实际上认为Webkit中的
JSCore不够好,才自己搞了一个V8JS引擎,这就是Chrome比Safari在某些JS测试
中效率更高的原因。
如果说chromium还不足以脱离Webkit的“帽子”,Blink的出现,代表着chrome将自
主研发渲染引擎(Blink)以及Javascript引擎(V8)。可以期待在不久的将来,人们谈起
chrome想到的不是Webkit而是Blink
本文发布于:2022-12-27 17:49:04,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/41769.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |