浏览器内核与JavaScript引擎

文/何其甚

上一篇文章,总结了JavaScript的历史。JavaScript发展到现在已经是一门独立的编程语言,它的解析器(引擎)伴随着浏览器的发展在不断发展。

JavaScript诞生之时就是在浏览器进程中运行,但是它也可以作为服务端脚本。最早用在服务端的是经典的微软Asp,服务脚本不仅可以声明为VBScript还可以声明为JScript、JavaScript,只是Asp只能运行在Windows平台。2009年发布的Node.js则是可以将JavaScript作为可以跨平台的服务端脚本。尽管JavaScript引擎可以独立封装成单独的服务器组件,但是其执行特征依旧和在浏览器进程中的执行特征相似。

因此我们还是从浏览器开始了解JavaScript引擎。

构成浏览器的主要组件有:
1、用户界面,地址栏、收藏夹等所有除了浏览窗口之外的部分
2、浏览引擎,用来查询以及操作渲染引擎的接口
3、渲染引擎,用来显示请求的内容,将请求的Html以及Css解析后显示出来
4、网络,用来完成网络请求,如Http请求
5、UI后端,用来绘制似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口
6、JavaScript引擎,用来解释执行JavaScript代码
7、数据存储,用来在硬盘中保存类似cookie的各种数据


浏览器的构成.png

各浏览器渲染引擎、浏览引擎和用户界面的差异造就了各种不同的浏览器。

浏览器与车标.jpg

五大浏览器五类渲染引擎对应各自的JavaScript引擎。国产浏览器内核引擎都是采用的这五类中的一种或者几种。

我们常说的浏览器内核,其实是指浏览器的渲染引擎(Rendering Engine)。渲染引擎包括有Html解释器、CSS解释器、布局Layout和JavaScript引擎。最开始渲染引擎和JavaScript引擎并没有很明确的区分,只是随着Web技术的发展,JavaScript引擎越来越独立。

浏览器内核渲染引擎.jpg

下面来看看五大浏览器的渲染引擎和对应JavaScript引擎
1、IE家族
IE家族浏览器内核为:Trident。该引擎从1997年IE4中首次采用,一直沿用到IE11,该内核曾与W3C标准脱节,导致Web应用在IE各版本和不同浏览器之间的代码兼容问题。
Trident中采用的JavaScript引擎,IE8及以下是JScript,IE9以上为Chakra。Chakra在速度和标准化方面比较出色。

2、Mozilla Firefox
Firefox的内核为:Gecko。2000年Netscape6 启用该内核,现在主要由Mozilla基金会进行维护,是开源的浏览器内核。
其中所采用的JavaScript引擎为Monkey系列
SpiderMonkey:第一款JavaScript引擎,由Brendan Eich在Netscape Communications时编写,用于Mozilla Firefox 1.0~3.0版本。
Rhino:由Mozilla基金会管理,开放源代码,完全以Java编写。
TraceMonkey:基于实时编译的引擎,其中部份代码取自Tamarin引擎,用于Mozilla Firefox 3.5~3.6版本。
JaegerMonkey:德文Jäger原意为猎人,结合追踪和组合码技术大幅提高性能,部分技术借鉴了V8、JavaScriptCore、WebKit:用于Mozilla Firefox 4.0以上版本。
IonMonkey:可以对JavaScript编译后的结果进行优化,用于Mozilla Firefox 18.0以上版本。
OdinMonkey:可以对asm.js进行优化,用于Mozilla Firefox 22.0以上版本。

3、Safari
Safari的内核为:WebKit。WebKit的前身是KDE小组的KHTML引擎,WebKit是KHTML的一个分支。WebKit有两部分组成,渲染引擎WebCore,JavaScript引擎JavaScriptCore。JavaScriptCore 被改写为 SquirrelFish,升级版本为 QuirrelFish Extreme,也叫做 Nitro。

4、Chrome
2008年谷歌公布Chrome的时候浏览器使用的内核被命名为Chromium。Chromium来自WebKit,但是对WebKit代码进行了梳理调整,有些地方将Chromium归为WebKit,也有地方将两者分开介绍。Chromium采用了WebKit中的WebCore渲染引擎,JavaScript引擎为V8。
谷歌研发小组在2006年开始研发V8,部分原因是对既有JavaScript引擎的执行速度不满意。
V8作者是丹麦的Lars Bak(拉斯巴克),巴克还是Java HotSpot性能引擎的主力开发。V8和Java HotSpot有很多相同的理念。
2013年4月,谷歌在Chromium Blog上称在 Chromium 项目中研发 Blink 渲染引擎,从13年发布的Chrome 28.0.1469.0版本开始,Chrome放弃Chromium引擎转而使用最新的Blink引擎。Blink引擎是WebKit中WebCore的一个分支。

5、Opera
Opera目前使用的内核引擎是Blink。
Opera 3.5-6.1版本使用的内核叫做Elektra。
Opera 7.0及以后版本到Opera12.17的内核叫Presto。Presto已经废弃,该引擎最大的特点就是渲染速度优化达到了极致,然后代价是牺牲了网页的兼容性。

采用的JavaScript引擎
Linear A,用于Opera 4.0~6.1版本;
Linear B,用于Opera 7.0~9.2版本;
Futhark,用于Opera 9.5~10.2版本;
Carakan,由Opera软件公司编写,自Opera10.50版本开始使用。

国产多核浏览器一般是一个内核采用Trident,然后再增加其他内核使用WebKit或者Blink。

其他词汇说明:
KDE是UNIX操作系统下的一个网络透明的现代桌面环境。
KHTML是KDE小组所开发的渲染引擎。
Tamarin,由Adobe Labs编写,Flash Player 9所使用的引擎。

参考文章:
http://taligarsiel.com/Projects/howbrowserswork1.htm
http://www.cnblogs.com/cnwebdeveloper/articles/2234423.html
https://www.cnblogs.com/Leo_wl/p/5119719.html
http://www.makaidong.com/object%20c/16151.shtml

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349