前言
今天在看JavaScript編譯原理相關(guān)知識(shí),接觸到一些常見的JavaScript引擎,其中提到最多的像Google的V8、Apple的JavaScriptCore 等。出于好奇想去了解JavaScript都有哪些引擎,網(wǎng)上查閱了一些文章,發(fā)現(xiàn)文章都比較陳舊,并且還有一個(gè)大問題,就是各個(gè)JavaScript引擎出現(xiàn)的時(shí)間線,也是我最想要的。一直沒檢索到,于是自己寫了這篇文章,用于梳理和匯總常見的JavaScript引擎
關(guān)于JavaScript引擎
在梳理之前,先來聊聊什么是JavaScript引擎,它有什么作用
引用百科的一句話
JavaScript引擎是一個(gè)專門處理JavaScript腳本的虛擬機(jī)
很多人可能還是不理解
其實(shí)說白了,JavaScript引擎本質(zhì)是一個(gè)程序。只不過這個(gè)程序可以將 JS 代碼編譯為不同 CPU對(duì)應(yīng)的匯編代碼,此外,還負(fù)責(zé)執(zhí)行代碼、分配內(nèi)存以及垃圾回收等
梳理常見的JavaScript引擎
- Mozilla的
SpiderMonkey引擎,是第一款JavaScript引擎,早期用于 Netscape Navigator,現(xiàn)時(shí)用于 Mozilla Firefox。是用C語言實(shí)現(xiàn)的,還有一個(gè)Java版本叫Rhino;Rhino引擎由Mozilla基金會(huì)管理,開放源代碼,完全以Java編寫,用于 HTMLUnit;而后TraceMonkey引擎是基于實(shí)時(shí)編譯的引擎,用于Mozilla Firefox 3.5~3.6版本;JaegerMonkey:結(jié)合追蹤和組合碼技術(shù)大幅提高性能,用于Mozilla Firefox 4.0以上版本 - Apple的
JavaScriptCore,簡稱JSC,開源,用于webkit內(nèi)核瀏覽器,如 Safari ,2008 年實(shí)現(xiàn)了編譯器和字節(jié)碼解釋器,升級(jí)為了SquirrelFish。蘋果內(nèi)部代號(hào)為Nitro的 JavaScript 引擎也是基于 JSC引擎的。至于具體時(shí)間,JSC是WebKit默認(rèn)內(nèi)嵌的JS引擎,而WebKit誕生于1998年,Nitro是為Safari 4編寫,Safari 4是2009年6月發(fā)布。 - Opera的
LinearA:用于Opera4.0~6.1,Opera4于2000年6月發(fā)布
LinearB:用于Opera7.0~9.2,Opera7于2003年6月發(fā)布
Futhark:用于Opera9.5~10.2,Opera9.5于2008年6月發(fā)布
Carakan:用于Opera10.5.及以上 2009年12月 -
Tamarin引擎,由Adobe Labs編寫,F(xiàn)lash Player 9所使用的引擎,大概時(shí)間2006年6月 - 2008年9月,Google的
V8引擎第一個(gè)版本隨著Chrome的第一個(gè)版本發(fā)布。V8引擎用 C++編寫,由 Google 丹麥開發(fā),開源。除了Chrome,還被運(yùn)用于Node.js以及運(yùn)用于Android操作系統(tǒng)等 - Microsoft 的
Chakra,譯名查克拉,用于IE9、10、11和Microsoft Edge,IE9發(fā)布時(shí)間2011年3月 -
JerryScript引擎 , 三星推出的適用于嵌入式設(shè)備的小型 JavaScript 引擎,2015年開源 -
Nashorn引擎,從 JDK 1.8 開始,Nashorn取代Rhino(JDK 1.6, JDK1.7) 成為 Java 的嵌入式 JavaScript 引擎,JDK1.8發(fā)布于2014年 -
QuickJS引擎, 2019 年 7 月發(fā)布 -
Hermes引擎,F(xiàn)acebook在Chain React 2019 大會(huì)上發(fā)布的一個(gè)嶄新JavaScript引擎,用于移動(dòng)端React Native應(yīng)用的集成,開源
以上就是自己簡單梳理的JavaScript引擎
注:
由于有些引擎找不到何時(shí)發(fā)布的具體時(shí)間,于是我把該引擎最早被應(yīng)用的時(shí)間表示其發(fā)布時(shí)間
參考:
- 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