JavaScript引擎

JavaScript引擎是能够将JavaScript代码处理并执行的运行环境,不要把它跟浏览器内核搞混了!内核(如Webkit、Trident、Gecko等)主要是将页面转变成可视化的图像结果,即渲染出来,所以通常也被称为渲染引擎。

渲染引擎和JavaScript引擎是浏览器处理网页过程的两个核心部分,它们是相互合作的关系。

一般来说,渲染引擎根据JavaScript提供的桥接接口提供给JavaScript访问DOM的能力,很多HTML5也是通过桥接接口实现的。

桥接接口复杂而不高效往往是一个性能瓶颈,所以才说DOM的频繁使用会导致性能问题。

常见的JavaScript引擎

排名不分先后。

v8

Google开源的使用C++编写的引擎,有其他语言(如Java)的封装,BSD协议,自体还有其他协议。

Github Wiki

ChromeChromium都是使用v8的,另外Android上的浏览器默认也是使用v8作为js引擎,当然还有Node.js

还有个有趣的: TrifleJS,一个使用 .NET WebBrowser Class 及 v8引擎的IE浏览器。

JavaScriptCore

是WebKit的默认JavaScript引擎,它其实是跟着 Webkit 一起发布的,源码在Source/JavaScript,东家是苹果,BSD/LGPL

它有不少别名: SquirrelFishSquirrelFish Extreme,在Safari中还有NitroNitro Extreme,但其实项目、库的名字始终都是JavaScriptCore。

Code Wiki

Safari使用JavaScriptCore,无论是PC还是M。PhantomJS是基于Webkit搞出来的,也是使用的JavaScriptCore。

iOS的开发能够直接用 JavaScriptCore 的,一家的。

Chakra

微软系的引擎,微软以ChakraCore为名在Github上开放了源代码,MIT协议。

IE9+浏览器及Edge都是使用Chakra,Win10的应用也是使用了它。

SpiderMonkey / OdinMonkey

Mozilla系的就是多,标题取了第一个和最新的一个……

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以上版本。

Carakan

自Opera10.50版本开始使用。

其他

JerryScript

三星搞出的一个用于物联网的引擎,可以运行在受限制的设备上,例如微控制器:

只有几 KB RAM 能运行引擎的设备(<64 KB RAM)

只能为代码引擎提供有限 ROM 空间的设备(<200 KB ROM)

该引擎支持设备上编译,提供从 JavaScript 到外设的访问