JavaScript引擎是能够将JavaScript代码处理并执行的运行环境,不要把它跟浏览器内核搞混了!内核(如Webkit、Trident、Gecko等)主要是将页面转变成可视化的图像结果,即渲染出来,所以通常也被称为渲染引擎。
渲染引擎和JavaScript引擎是浏览器处理网页过程的两个核心部分,它们是相互合作的关系。
一般来说,渲染引擎根据JavaScript提供的桥接接口提供给JavaScript访问DOM的能力,很多HTML5也是通过桥接接口实现的。
桥接接口复杂而不高效往往是一个性能瓶颈,所以才说DOM的频繁使用会导致性能问题。
常见的JavaScript引擎
排名不分先后。
v8
Google开源的使用C++编写的引擎,有其他语言(如Java)的封装,BSD
协议,自体还有其他协议。
Chrome
、Chromium
都是使用v8的,另外Android
上的浏览器默认也是使用v8作为js引擎,当然还有Node.js
。
还有个有趣的: TrifleJS,一个使用 .NET WebBrowser Class 及 v8引擎的IE浏览器。
JavaScriptCore
是WebKit的默认JavaScript引擎,它其实是跟着 Webkit 一起发布的,源码在Source/JavaScript,东家是苹果,BSD
/LGPL
。
它有不少别名: SquirrelFish
,SquirrelFish Extreme
,在Safari
中还有Nitro
,Nitro Extreme
,但其实项目、库的名字始终都是JavaScriptCore。
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 到外设的访问