一篇梳理常见的JavaScript引擎
2021-02-01 本文已影响0人
深度剖析JavaScript
前言
今天在看JavaScript编译原理相关知识,接触到一些常见的JavaScript引擎,其中提到最多的像Google的V8、Apple的JavaScriptCore 等。出于好奇想去了解JavaScript都有哪些引擎,网上查阅了一些文章,发现文章都比较陈旧,并且还有一个大问题,就是各个JavaScript引擎出现的时间线,也是我最想要的。一直没检索到,于是自己写了这篇文章,用于梳理和汇总常见的JavaScript引擎
关于JavaScript引擎
在梳理之前,先来聊聊什么是JavaScript引擎,它有什么作用
引用百科的一句话
JavaScript引擎是一个专门处理JavaScript脚本的虚拟机
很多人可能还是不理解
其实说白了,JavaScript引擎本质是一个程序。只不过这个程序可以将 JS 代码编译为不同 CPU对应的汇编代码,此外,还负责执行代码、分配内存以及垃圾回收等
梳理常见的JavaScript引擎
- Mozilla的
SpiderMonkey
引擎,是第一款JavaScript引擎,早期用于 Netscape Navigator,现时用于 Mozilla Firefox。是用C语言实现的,还有一个Java版本叫Rhino;Rhino
引擎由Mozilla基金会管理,开放源代码,完全以Java编写,用于 HTMLUnit;而后TraceMonkey
引擎是基于实时编译的引擎,用于Mozilla Firefox 3.5~3.6版本;JaegerMonkey
:结合追踪和组合码技术大幅提高性能,用于Mozilla Firefox 4.0以上版本 - Apple的
JavaScriptCore
,简称JSC,开源,用于webkit内核浏览器,如 Safari ,2008 年实现了编译器和字节码解释器,升级为了SquirrelFish
。苹果内部代号为Nitro
的 JavaScript 引擎也是基于 JSC引擎的。至于具体时间,JSC是WebKit默认内嵌的JS引擎,而WebKit诞生于1998年,Nitro
是为Safari 4编写,Safari 4是2009年6月发布。 - Opera的
LinearA
:用于Opera4.0~6.1,Opera4于2000年6月发布
LinearB
:用于Opera7.0~9.2,Opera7于2003年6月发布
Futhark
:用于Opera9.5~10.2,Opera9.5于2008年6月发布
Carakan
:用于Opera10.5.及以上 2009年12月 -
Tamarin
引擎,由Adobe Labs编写,Flash Player 9所使用的引擎,大概时间2006年6月 - 2008年9月,Google的
V8
引擎第一个版本随着Chrome的第一个版本发布。V8
引擎用 C++编写,由 Google 丹麦开发,开源。除了Chrome,还被运用于Node.js以及运用于Android操作系统等 - Microsoft 的
Chakra
,译名查克拉,用于IE9、10、11和Microsoft Edge,IE9发布时间2011年3月 -
JerryScript
引擎 , 三星推出的适用于嵌入式设备的小型 JavaScript 引擎,2015年开源 -
Nashorn
引擎,从 JDK 1.8 开始,Nashorn取代Rhino(JDK 1.6, JDK1.7) 成为 Java 的嵌入式 JavaScript 引擎,JDK1.8发布于2014年 -
QuickJS
引擎, 2019 年 7 月发布 -
Hermes
引擎,Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎,用于移动端React Native应用的集成,开源
以上就是自己简单梳理的JavaScript引擎
注:
由于有些引擎找不到何时发布的具体时间,于是我把该引擎最早被应用的时间表示其发布时间
参考:
- https://www.cnblogs.com/meituantech/p/9528285.html
- https://blog.csdn.net/liwenfei123/article/details/80677670
- https://zhuanlan.zhihu.com/p/65857442
- https://www.bilibili.com/video/BV1xT4y1L7ui
- https://baike.baidu.com/item/javascript%E5%BC%95%E6%93%8E/5356108?fr=aladdin
- https://www.douban.com/note/782727493/
- https://blog.csdn.net/innost/article/details/98491709
- https://blog.csdn.net/carson_ho/article/details/96267553
- https://www.cnblogs.com/s1nker/p/4414273.html
- https://zhidao.baidu.com/question/200406986.html
- https://www.cnblogs.com/feng9exe/p/11738372.html
- https://www.kancloud.cn/digest/liao-js/149467
- https://m.html.cn/qa/javascript/11312.html
- https://zhidao.baidu.com/question/1579209396278282860.html
- https://zhuanlan.zhihu.com/p/161722203