新闻

当前位置:手机版美高梅网站 > 新闻 > 历史在重演,浏览器内核历史

历史在重演,浏览器内核历史

来源:http://www.best-sclae.com 作者:手机版美高梅网站 时间:2019-12-31 05:09

关键字:浏览器内核,浏览器引擎,Browser,Webkit,Blink,Chromium。


上周四,Google宣布从WebKit 分支出自己的浏览器渲染引擎 Blink。很多人觉得这像是晴天霹雳,或者甚至是迟到的愚人节笑话,但是其实这件事情是难以避免的,而且是历史的重演。图片 1

 

内核

首先得搞懂浏览器内核指的是什么

浏览器内核又可以分成两部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎,它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。
所有网页浏览器、电子邮件客户端以及其他需要编辑、显示网络内容的应用程序都需要内核。JS引擎则是解析Javascript语言,执行JavaScript语言来实现网页的动态效果。

最开始渲染引擎和JS引擎没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。有一个网页标准计划小组只做了一个ACID来测试引擎的兼容性和性能。内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,段是常见的浏览器内核可以分这四种:Trident、Gecko、Blink、Webkit


上周四,Google宣布从WebKit分支出自己的浏览器渲染引擎Blink。很多人觉得这像是晴天霹雳,或者甚至是迟到的愚人节笑话,但是其实这件事情是难以避免的,而且是历史的重演。 

本文简单介绍一下各种浏览器内核。着种介绍一下Webkit。顾名思义,浏览器内核就是浏览器的核心部分,也可以说是浏览器所采用的渲染引擎,负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页。常见的浏览器内核有:Trident,Gecko,Presto,Webkit等。对于开发者来说,有了浏览器内核,你就可以开发一款你自己的浏览器。或者在你的应用中嵌入浏览器内核,你就可以在你的应用中显示网页并运行JaveScript。

Trident

什么是WebKit?它到底是谁的?

 

(['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引擎是Script,IE9开始用Chakra,这两个版本区别很大,Chakra无论是速度和标准化方面都很出色。

国内很多的双核浏览器的其中一核便是Trident,美其名曰“兼容模式”。

Windows10发布后,IE将其内置浏览器命名为Edge,Edge最显著的特点就是新内核EdgeHTML。关于Edge浏览器更多可以参考:https://www.zhihu.com/question/29985708


WebKit 是一个开源的浏览器引擎。它的前身是KDE在1998年开发的排版引擎KHTML,最初用于Linux和Unix等开源操作系统。当时苹果觉得需要开发自己的浏览器,所以在比较了Netscape(现在的Firefox)的Gecko引擎 和KHTML引擎后,选择了后者,因为KHTML拥有更清晰的架构,而且比Gecko更小巧。苹果工程师Don Melton在2001年六月25号正式从KHTML分支出来,在苹果内部开始了WebKit的研发。

Trident

 

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

 

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内核)、2345浏览器、腾讯TT、淘宝浏览器、采编读浏览器、搜狗高速浏览器(1.x为Trident,2.0及以后版本为Trident+Webkit)、阿云浏览器(早期版本)、瑞星安全浏览器、Slim Browser、 GreenBrowser、爱帆浏览器(12 之前版本)、115浏览器、155浏览器、闪游浏览器、N氧化碳浏览器、糖果浏览器、彩虹浏览器、瑞影浏览器、勇者无疆浏览器、114浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器、海豚浏览器(iPhone/iPad/Android)、UC浏览器(Blink内核+Trident内核)等。

 

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

 

Gecko

开始的时候,苹果和KHTML的关系还是不错的。苹果将KHTML发扬光大,在2003年推出了装备WebKit引擎的浏览器 Safari。但是随着时间的推进,WebKit和KHTML之间交换代码变得越来越困难。苹果会间隔很长时间之后,提交一大批更改,而且没有文案,很多功能可能只开发了一半。对于KDE而言,将这些更改整合回KHTML是相当困难的。此外,苹果要求KDE开发者阅览苹果代码之前必须签署保密条款,KDE也很难接受这一点。在2005年,KDE开发者开始公开攻击苹果的做法,并称两方的合作关系已经彻底瓦解了。

Gecko

 

Gecko(Firefox内核):Netscape6开始采用的内核,后来的Mozilla FireFox(火狐浏览器) 也采用了该内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko内核的浏览器也很多,这也是Gecko内核虽然年轻但市场占有率能够迅速提高的重要原因。

 

Gecko内核常见的浏览器: Mozilla Firefox、Mozilla SeaMonkey、waterfox(Firefox的64位开源版)、Iceweasel、Epiphany(早期版本)、Flock(早期版本)、K-Meleon。

 

补充:JavaScript引擎是SpiderMonkey。

 

(['gekəʊ])

Gecko(Firefox 内核):Netscape 6 开始采用的内核,后来的Mozilla Firefox (火狐浏览器)也采用了该内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko 内核的浏览器也很多,这也是Gecko 内核虽然年轻但市场占有率能够迅速提高的重要原因。

事实上,Gecko引擎的由来跟IE不无关系,前面说过IE没有使用W3C的标准,这导致微软内部一些开发人员的不满;他们与当时已经停止更新了的Netscape 的一些员工一起创办了 Mozilla,以当时的Mosaic 内核为基础重新编写内核,于是开发出了Gecko。不过事实上,Gecko内核的浏览器仍然还是Firefox(火狐)用户最多,所以有时也会被称为Firefox内核。此外Gecko也是一个跨平台内核,可以在Windows、BSD、Linux和Mac OS X 中使用。


事情被媒体报道之后,苹果做出了一系列的让步。在2005年,苹果宣布将WebKit完全开源(之前仅有从KHTML直接搬来的WebCore及JavaScriptCore是开源的)。KDE和苹果的关系也得到了一些改善,有一些KDE的开发者们开始为WebKit提交更改,苹果的团队也复原了很多为苹果特定的修正,并且实现了平台层的抽象化,使引擎的核心代码可以在其他平台上运作。但是KDE没有忘记苹果的背叛,他们没有完全加入WebKit的开发,而是在2010年底推出了KDE开发平台4.5,并列支持KHTML和WebKit。

Presto

 

Presto(Opera前内核) (已废弃): Opera12.17及更早版本曾经采用的内核,现已停止开发并废弃,该内核在2003年的Opera7中首次被使用,该款引擎的特点就是渲染速度的优化达到了极致,然而代价是牺牲了网页的兼容性。

 

Opera现已改用Google Chrome的Blink/Chromuim内核。

 

WebKit

一提到webkit,首先想到的便是 Chrome,可以说,Chrome 将WebKit内核深入人心,殊不知,WebKit的鼻祖其实是 Safari。现在很多人错误的把 WebKit 叫做 Chrome 内核(即使 Chrome 内核已经是Blink了),苹果都哭瞎了有木有。

*Safari 是苹果公司开发的浏览器,使用的KDE(Linux桌面系统)的 KHTML 作为浏览器的内核,Safari所用浏览器内核的名称是大名鼎鼎的 WebKit。Safari 在2003年1月7日首度发行测试版,并成为 Mac OS X v10.3 与之后版本的默认浏览器,也成为苹果其他系列产品的指定浏览器(也已支持 Windows 平台)。

如上述可知,WebKit 前身是KDE小组的KHTML引擎,可以说WebKit是KHTML的一个开源的分支。当年苹果在比较了Gecko和KHTML后,选择了后者来做引擎开发,是因为KHTML拥有清晰的源码结构和极快的渲染速度。

WebKit内核可以说是以硬件盈利为主的苹果公司给软件行业的最大贡献之一。随后,2008年谷歌公司发布Chrome 浏览器,采用chromium内核便fork 了WebKit。


图片 2

Webkit

 

Webkit亦使用于Apple iOS、BlackBerry Tablet OS、Tizen及Amazon Kindle的默认浏览器。WebKit的C++应用程序接口提供了一系列的Class)以在视窗上显示网页内容,并且实现了一些浏览器的特色,如用户链接点击、管理前后页面列表及近期历史页面等等。

WebKit的HTML及JavaScript代码源自KDE的KHTML及KJS库的一个分支,现已由KDE、Apple、Google、Nokia、Bitstream、BlackBerry及Igalia等独立开发。OS X、Windows、GNU/Linux以及其他类Unix系统操作系统,皆支持这个项目。2013年4月3日,Google宣布它创建了WebKit中WebCore组件的分支——Blink,Blink将用于新版Google Chrome与Opera。

WebKit的WebCore及JavaScriptCore组件使用GNU宽通用公共许可证,其他组件则采用BSD许可证。

截至2013年3月7日,Webkit商标已被苹果公司在美国专利及商标局注册为其商标。

 

Chromium/Bink

2008年,谷歌公司发布了 Chrome 浏览器,浏览器使用的内核被命名为Chromium。

Chromium fork 来自开源引擎 WebKit ,却把 WebKit 的代码梳理的可读性提高很多,所以以前可能需要一天进行编译的代码,现在只要两个小时就能搞定。因此 Chromium 引擎和其他基于 WebKit 的引擎渲染页面的效果也是有出入的。所以有些地方会把Chromium 引擎和 WebKit 区分开来单独介绍,而有文章把Chromium 归入 WebKit 引擎中,都是有一定道理的。

谷歌公司开研发了自己的JavaScript 引擎V8,极大地提高了 JavaScript 的运算速度。
Chromium问世后,带动了国产浏览器行业的发展。一些基于Chromium 的单核、双核浏览器如雨后春笋般拔地而起,例如:搜狗、360、QQ浏览器等等,无一不是套着不同的外壳用着相同的内核。

然而在2013年4月3日,谷歌在 Chromium Blog 上发表博客,称将与苹果的开源浏览器核心 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 代码。

至于为什么叫 Blink,有兴趣的可以看下这篇访谈http://alistapart.com/blog/post/paul-irish-on-chrome-moving-to-blink

Blink 问世后,国产各种 Chrome 系的浏览器也纷纷投入 Blink 的怀抱,可以在浏览器地址栏输入Chrome://version进行查看。


Google的介入

缘起

WebKit的代码源自1998年所开发的KDE的HTML排版引擎KHTML及KDE的JavaScript引擎KJS的代码。Apple的Don Melton于2001年6月25日开始了WebKit这个项目,当时WebKit仅为KHTML及KJS的复刻),Melton在电子邮件中向KDE开发者解释,KHTML及KJS比起其他技术有着更容易开发、更轻巧(少于140000行程序码)、更加干净的设计,以及更与标准兼容的优势,KHTML及KJS将会通过连接器库(adapter library)的帮忙被移植到OS X,并重命名为WebCore及JavaScriptCore。JavaScriptCore在2002年6月,于KDE的邮件列表(mailing list)中首度发表,包含着苹果电脑首次发布的部分。WebCore在2003年1月,首度发布于Macworld Expo中由苹果电脑CEO Steve Jobs发表的Safari浏览器。当WebCore首次使用在第一个Safari的测试版本的同时,JavaScriptCore首次并以私有framework的方式包进Mac OS X v10.2,苹果电脑将其使用在Sherlock)软件。Mac OS X v10.3是第一个Apple发布内置WebKit的操作系统,尽管它已经被内置在10.2内了。

Apple表示,有些牵涉到OSX的特定功能(例如:Objective-C、KWQ及OS X特定函数)将会在KDE的KHTML中缺席,这行为被称为不同的发展策略。

 

Presto

Google加入WebKit的开发是在2008年Chrome浏览器推出前后的事情。Chrome浏览器使用WebKit引擎是Android团队的建议,而Chrome主要用的其实还是从KHTML那里来的WebCore,它不太用WebCore之外苹果开发的东西,而是使用自己开发的多进程浏览器架构等。

开发分裂

由于这两个分支(KHTML及WebCore)有着不同的目的而进行开发,所以他们代码互相补丁(patch)的难度越来越高。 KHTML的开发者认为,他们不喜欢接受苹果电脑对于KHTML的改变,并宣称两个组织的关系有些不好(a bitter failure,苹果提交他们相当大的补丁,其中包含相当大数目的改变,但是却缺少相关文件,并且经常包含着未来的扩充,然而这些补丁对于KDE的开发者而言,要集成回KHTML是相当困难的,此外,苹果电脑要求开发者阅览Apple的代码之前必须签署保密条款(non-disclosure agreements),甚至还不能访问苹果电脑的臭虫数据库[[来源请求]](https://zh.wikipedia.org/wiki/Wikipedia:%E5%88%97%E6%98%8E%E6%9D%A5%E6%BA%90)

在公布离婚的期间,KDE开发者Kurt Pfeifle(pipitas)贴出了一篇文章,宣称KHTML开发者已经设法从WebCore移植许多(但非全部)Safari所改进的项目回KHTML,而他们一直都希望这些改进是来自于苹果电脑。这篇文章让Apple开始联系KHTML的开发者,并讨论有关增进彼起关系的方法及未来的合作模式,事实上KDE项目确实有能力合并一些项目,来改进KHTML的渲染速度以及加入一些新的功能特色,包含Acid2渲染测试的改进。

自从新闻播报了fork事件之后,Apple在CVS发布了他们自己维护的WebKit版本,在他们发布代码后,Apple及KHTML开发者已经加深了合作关系,许多KHTML的开发者也成为了WebKitSVN&action=edit&redlink=1)代码库的审查(Reviewer)及提交者(Submitter)。

WebKit工作团队同时也逆转许多Webkit代码当中,专为苹果特定的修正,并且实现了一个平台特定的抽象层,可使渲染的代码于其他平台可以更顺利的运作。

在2007年7月,Ars Technica网站发布一篇文章,指出KDE开发团队将从KHTML转移到WebKit,再经由多年的集成,KDE开发平台4.5于2010年8月发布,它同时支持WebKit及KHTML,而KHTML的开发仍在继续。

 

(['prestəʊ])

Presto 是挪威产浏览器 Opera 的“前任”内核,之所以称之为“前任”,因为最新的Opera 浏览器早已将之抛弃而投入到了谷歌大本营。

Opera 的一个里程碑作品是 Opera 7.0 ,因为它使用了 Opera Software 自主开发的 Presto 渲染引擎。取代了旧版 Opera 4至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 。

说好的Presto Forever 呢?


但是Google毕竟资源和人力雄厚,在上周从WebKit分支之前,大约50%的WebKit更改来自于Google的开发者,剩下的一半大多数来自于苹果,其余来自于第三方开发者,比如KDE的开发者。虽然Google的开发者开始提交大部分的WebKit更改,但是WebKit的最终决策权还是苹果的。据一些第三方的WebKit开发者透露,苹果和Google的开发者在交流时没有一般开源开发者的那种相互支持,反而更像两头相互打量的狮子,气氛比较紧张。

分支

在2013年4月3日,Google宣布他将自行开发WebCore的分支,也就是Blink引擎。Chrome的开发者由于希望在浏览器的开发上拥有更大的自由度,同时避免与上游冲突,更可通过移除Chrome没有使用的组件而简化自己的程序库,所以决定开发WebKit的分支版本。同时Opera软件在同年稍早也宣布,他们将自有引擎转换到Chromium的程序库,在此时也同时转换到Blink的分支。根据这份声明,WebKit的开发者开始讨论移除Chrome相关代码的可能性,以精简整个WebKit程序库。

 

关于移动端

移动端的浏览器内核主要说的是系统内置浏览器的内核。
目前移动设备浏览器上常用的内核有 WebKit、Blink、Trident、Gecko等。

iPhone、ipad 等苹果IOS平台主要是 WebKit

Android 4.4 之前的Android 系统浏览器内核是 WebKit

Android 4.4 系统浏览器切换到了Chromium ,内核是 WebKit 的分支 Blink

Windows Phone 8 系统浏览器内核是 Trident


Blink引擎的新闻爆出之后, Hacker News上立刻开始有双方的开发者发表评论。多数评论认为苹果目前的WebKit更改提交政策对非苹果的开发者是有敌意的,尤其在WebKit 2这块。更有很多人认为WebKit 2完全是苹果单方推出的一个产品,而且根本就没有和Google以及其它参与WebKit开发的人进行协商。

组件

总结

浏览器内核主要指的是浏览器的渲染引擎,2013年以前,代表有 Trident(IE)、Gecko(Firefox)、WebKit (Safari Chrome 等)以及 Presto (Opera)。2013年,谷歌开始研发 Blink 引擎, Chrome 28 以后开始使用,而 Opera 则放弃了自主研发的 Presto 引擎,投入谷歌怀抱,和谷歌一起研发 Blink 引擎,国内各种 Chrome 系的浏览器也纷纷放弃 WebKit,纷纷投入Blink 的怀抱。

还有一点文章里没有说的很明白,就是WebKit 其实是KHTML的分支,这里的 KHTML指渲染引擎,WebKit 其实就泛指了 WebKit 的渲染引擎 WebCore ,而 WebKit 引擎的 JavaScript 引擎 JSCore 则是KJS 的分支。而 Chrome 则搭载了自己的 JavaScript 引擎 V8。

如果说chromium 还不足以脱离WebKit 的帽子,Blink 的出现,代表着 Chrome 将自主研发渲染引擎 (Blink)以及JavaScript 引擎(V8)。可以期待在不久的将来,人们谈起 Chrome 想到的不是 WebKit,二是 Blink。


来自:http://www.cnblogs.com/Leo_wl/p/5119719.html

苹果的开发者也对此给予了答复,苹果WebKit团队领头人Maciej Stachowiak说:

WebCore

WebCore是一个由WebKit项目所开发的布局(Layout)、渲染(Rendering)及HTML和SVG的DOM库,完整的代码皆由GNU宽通用公共许可证所授权,WebKit框架包装了WebCore及JavaScriptCore,并提供一个Objective-C应用程序接口来接介由C++所开发的WebCore渲染引擎及JavaScriptCore脚本引擎,通过Cocoa API就可以在应用程序中很简单的使用这些组件。之后的版本同时包含了一个跨平台的C++抽象平台,并且提供各种API使用。

WebKit通过Acid2及Acid3的测试,包含完美像素的渲染(pixel-perfect rendering)以及没有任何时间及不顺的问题。

如果我们要讨论历史的话,我们开发WebKit 2的最主要原因是因为Chromium(Chrome的开源版)从来没有将它的多进程架构整合到WebKit里。这些代码一直在Chromium自己的目录中。

我们在写任何WebKit2代码前就问了Google的人,他们愿不愿意将多进程架构的支持整合到WebKit中,他们的答案是否定的。在这种情况下,我们面临的选择是做一个怀有敌意的Chromium分支,或者写我们自己的多进程架构,或者继续使用单进程架构。我们选择了写自己的多进程架构。

如果当时Google同意整合他们的多进程架构,那么我们肯定是会接受的,事情的发展可能也会和现在不太一样。

JavaScriptCore

JavaScriptCore是一个在WebKit中提供JavaScript引擎的框架,而且在OS X作为其他内容的脚本引擎。JavaScriptCore最初是为KDE的JavaScript引擎(KJS)库及PCRE正则表达式库,JavaScriptCore从KJS及PCRE复刻之后,已比原先进步了许多,有了新的特色以及极大的性能改进。

在2008年6月2日,WebKit项目宣布,将被重写为"SquirrelFish",它是一个字节码解释器,这个项目演变成SquirreFish Extreme(简称为SFX,市场称之为Nitro),首次公开于2008年9月18日,它会将Javascript编译为本地的机器语言,不再需要字节码解释器,同时加速了JavaScript的运行效率。

无论谁是谁非,苹果和Google这两家在WebKit中明显已经各走各的路有一段时间了。KDE是一家完全开源,对苹果没有任何实质性威胁的开发团体。如果当年苹果和KDE都不能够维持良好的合作关系,它是不可能和Google,一家在多个领域与苹果有你死我活级别竞争关系的公司,有什么良好合作的。虽然之前有很多人认为WebKit项目有点像柏林墙上的一个缺口,但这明显有点天真了。

Drosera

Drosera是一个JavaScript调试工具,它被包含在每日编译的WebKit版本内。它被命名为茅膏菜属,这是一种食虫植物。Drosera目前已经被Web Inspector替换了。

 

谁将拥有未来

V8 (JavaScript引擎)

V8是一个由美国Google开发的开源JavaScript引擎,用于Google Chrome中。

V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。

传统的Javascript是动态语言,又可称之为Prototype-based Language,JavaScript继承方法是使用prototype,通过指定prototype属性,便可以指定要继承的目标。属性可以在运行时添加到或从对象中删除,引擎会为运行中的对象创建一个属性字典,新的属性都要通过字典查找属性在内存中的位置。V8为object新增属性的时候,就以上次的hidden class为父类别,创建新属性的hidden class的子类别,如此一来属性访问不再需要动态字典查找了。

为了缩短由垃圾收集造成的停顿,V8使用stop-the-world, generational, accurate的垃圾收集器。在执行回收之时会暂时中断程序的执行,而且只处理对象堆栈。还会收集内存内所有对象的指针,可以避免内存溢出的情况。V8汇编器是基于Strongtalk汇编器。

 

参考链接:

)

 

未来的事情我们谁也不知道,但是我们能够看到的有这几点:

  • WebKit会比以前少50%的新代码提交。
  • 绝大多数第三方WebKit开发者会加入Blink项目。
  • Google的平台是互联网本身,它会将所有资源倾注到Blink的开发之中,而苹果目前最重要的平台是iOS。
  • 当没有苹果这个“合作者”之后,Google可以用它自己的速度来推进浏览器科技。想在浏览器引擎中放一个Dart 虚拟器?没问题。Google Native Client?可以。所以Blink支持的网络科技很有可能很快超越WebKit。

如果我非要下赌注的话,我会赌Blink逐渐取代WebKit,因为Blink对于Google是有战略性意义的,而WebKit对于苹果来说只是它封闭性花园中一只开源的黑羊。

从WebKit的这段历史,我们还看到了什么?第一,大公司永远以自己的利益为导向。第二就是,最牛掰的工程师是开源项目的工程师,尤其是Unix这个生态系统里的开源项目;Chrome用的WebKit部分根本还是KDE写的WebCore。

本文由手机版美高梅网站发布于新闻,转载请注明出处:历史在重演,浏览器内核历史

关键词: