跳转到内容

JavaScript引擎:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
InternetArchiveBot留言 | 贡献
Reformat 1 URL (Wayback Medic 2.5)) #IABot (v2.0.9.5) (GreenC bot
 
(未显示10个用户的24个中间版本)
第1行: 第1行:
{{noteTA
{{noteTA
|G1=IT
|G1=IT
|1=zh-hans:实现;zh-hant:實作;
}}
}}
{{Distinguish|排版引擎}}
{{distinguish|Java虚拟机}}


'''JavaScript引擎'''是一个专门处理[[JavaScript]]脚本的[[虚拟机]],一般会附带在[[网页浏览器]]之中。
'''JavaScript引擎'''是一个专门处理[[JavaScript]]脚本的[[虚拟机]],一般会附带在[[网页浏览器]]之中。
第10行: 第11行:
在2008年到2009年的第二次[[浏览器大战]]之前,JavaScript引擎仅简单地被当作能阅读执行[[JavaScript]][[源代码]]的[[直譯器]]。
在2008年到2009年的第二次[[浏览器大战]]之前,JavaScript引擎仅简单地被当作能阅读执行[[JavaScript]][[源代码]]的[[直譯器]]。


第一個JavaScript引擎由[[布蘭登·艾克]]在[[网景公司]]开发,用于[[网景导航者|Netscape Navigator]][[网页浏览器]]中。引擎的名字叫做[[SpiderMonkey]],由[[C++]]实现。自JavaScript 1.5升级以符合ECMA-262版本3。[[Rhino (JavaScript引擎)|Rhino]]引擎,[[网景公司]]的諾里斯·博伊德(Norris Boyd)开发,由[[Java]]实现。像SpiderMonkey一样,Rhino符合ECMA-262版本3。JavaScript引擎的應用例子還包括:Apple [[Safari]] 4的Nitro,[[Google Chrome]]的[[V8 (JavaScript引擎)|V8]][[Mozilla Firefox]] 3.5的[[SpiderMonkey#TraceMonkey|TraceMonkey]]。
* [[SpiderMonkey]]:第一個JavaScript引擎由[[布蘭登·艾克]]在[[网景公司]]开发,用于[[网景导航者|Netscape Navigator]][[网页浏览器]]中,由[[C++]]实现。自JavaScript 1.5升级以符合ECMA-262版本3。
* [[Rhino (JavaScript引擎)|Rhino]]由网景公司的諾里斯·博伊德(Norris Boyd)开发,由[[Java]]实现。像SpiderMonkey一样,Rhino符合ECMA-262版本3。
* Nitro:Apple [[Safari]] 4開始支援
* [[V8 (JavaScript引擎)|V8]][[Google Chrome]]製作
* [[SpiderMonkey#TraceMonkey|TraceMonkey]]:Mozilla [[Firefox歷史#Firefox 3.5|Firefox 3.5]]開始支援


目前为止,最通用的JavaScript宿主环境是网页浏览器。网页浏览器一般使用公共的[[API]]创建“宿主对象”以便于在[[JavaScript]]中支持[[DOM]]。
目前为止,最通用的JavaScript宿主环境是网页浏览器。网页浏览器一般使用公共的[[API]]创建“宿主对象”以便于在[[JavaScript]]中支持[[DOM]]。
第19行: 第24行:
Sunspider是一个{{link-en|浏览器速度测试|Browser speed test|JavaScript实用基准测试}}通过一系列关于JavaScript语言的脚本测试JavaScript引擎的速度。Sunspider不测试无关于JavaScript的特性(不使用HTML、CSS和无网络情况下)。
Sunspider是一个{{link-en|浏览器速度测试|Browser speed test|JavaScript实用基准测试}}通过一系列关于JavaScript语言的脚本测试JavaScript引擎的速度。Sunspider不测试无关于JavaScript的特性(不使用HTML、CSS和无网络情况下)。


近幾年來,在浏览器开发者之间展开了一场开发更快的JavaScript引擎的竞赛。2008年,[[Google Chrome]]因它的JavaScript性能而受称赞,但是其它浏览器马上使用了更快的JavaScript引擎。之后,[[Google Chrome]]在性能上获得领先,其长处在于它高速的性能和[[JavaScript]]的处理速度,这些都由许多网站在主要的浏览器之间的速度测试中得到验证<ref>{{cite web|url=http://news.cnet.com/8301-1001_3-10030888-92.html|title=Speed test: Google Chrome beats Firefox, IE, Safari|author=Stephen Shankland|work=cnet.com Business Tech|date=2008-09-02|publisher=[[CNET]]|accessdate=2010-06-28|language=en}}</ref><ref>{{cite web|language=en|url=http://www.pcgameshardware.com/aid,687738/Big-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final/Practice/|title=Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome|work=PC Games Hardware|publisher=Computec Media AG|accessdate=2010-06-28}}</ref><ref>{{cite web|url=http://lifehacker.com/5286869/lifehacker-speed-tests-safari-4-chrome-2-and-more|title=Lifehacker Speed Tests: Safari 4, Chrome 2|publisher=Lifehacker|accessdate=2010-06-28|language=en}}</ref>。随着WebKit的[[WebKit#更進一步發展|Squirrelfish Extreme]]和Mozilla的[[SpiderMonkey|TraceMonkey]] JavaScript虚拟机出现,Chrome的JavaScript执行速度就被超越了<ref>{{cite web|url=http://news.cnet.com/third-chrome-beta-another-notch-faster/|title=Third Chrome beta another notch faster|author=Stephen Shankland|date=2008-10-31|work=cnet.com|publisher=[[CNET]]|accessdate=2010-06-28|language=en}}</ref><ref>{{cite web|url=http://news.cnet.com/8301-13579_3-10046637-37.html|title=Step aside, Chrome, for Squirrelfish Extreme|language=en|author=Stephen Shankland|work=cnet.com|date=2008-09-19|publisher=[[CNET]]|accessdate=2010-06-29}}</ref><ref>{{cite web|url=http://www.satine.org/archives/2008/09/19/squirrelfish-extreme-fastest-javascript-engine-yet/|title=SquirrelFish Extreme: Fastest JavaScript Engine Yet|work=satine.org|accessdate=2010-06-29|language=en}}</ref><ref>{{cite web|url=http://news.cnet.com/8301-1001_3-10031278-92.html|title=Firefox counters Google's browser speed test|author=Stephen Shankland|date=2008-09-03|accessdate=2010-06-29|language=en|work=cnet.com Business Tech|publisher=[[CNET]]}}</ref>。Google丹麦在Chrome 2中开发了更快速的[[V8 (JavaScript引擎)|V8引擎]]。
近幾年來,在浏览器开发者之间展开了一场开发更快的JavaScript引擎的竞赛。2008年,[[Google Chrome]]因它的JavaScript性能而受称赞,但是其它浏览器马上使用了更快的JavaScript引擎。之后,Google Chrome在性能上获得领先,其长处在于它高速的性能和JavaScript的处理速度,这些都由许多网站在主要的浏览器之间的速度测试中得到验证<ref>{{cite web|url=http://news.cnet.com/8301-1001_3-10030888-92.html|title=Speed test: Google Chrome beats Firefox, IE, Safari|author=Stephen Shankland|work=cnet.com Business Tech|date=2008-09-02|publisher=[[CNET]]|accessdate=2010-06-28|language=en|archive-date=2012-05-01|archive-url=https://www.webcitation.org/67KMHWqXu?url=http://news.cnet.com/8301-1001_3-10030888-92.html|dead-url=no}}</ref><ref>{{cite web|language=en|url=http://www.pcgameshardware.com/aid,687738/Big-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final/Practice/|title=Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome|work=PC Games Hardware|publisher=Computec Media AG|accessdate=2010-06-28|archive-date=2012-05-01|archive-url=https://www.webcitation.org/67KMIRyMC?url=http://www.pcgameshardware.com/aid,687738/Big-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final/Practice/|dead-url=no}}</ref><ref>{{cite web|url=http://lifehacker.com/5286869/lifehacker-speed-tests-safari-4-chrome-2-and-more|title=Lifehacker Speed Tests: Safari 4, Chrome 2|publisher=Lifehacker|accessdate=2010-06-28|language=en|archive-date=2012-05-01|archive-url=https://www.webcitation.org/67KML6P01?url=http://lifehacker.com/5286869/lifehacker-speed-tests-safari-4-chrome-2-and-more|dead-url=no}}</ref>。随着WebKit的[[WebKit#更進一步發展|Squirrelfish Extreme]]和Mozilla的[[SpiderMonkey|TraceMonkey]] JavaScript虚拟机出现,Chrome的JavaScript执行速度就被超越了<ref>{{cite web|url=http://news.cnet.com/third-chrome-beta-another-notch-faster/|title=Third Chrome beta another notch faster|author=Stephen Shankland|date=2008-10-31|work=cnet.com|publisher=[[CNET]]|accessdate=2010-06-28|language=en|archive-date=2012-09-25|archive-url=https://web.archive.org/web/20120925065647/http://news.cnet.com/third-chrome-beta-another-notch-faster/|dead-url=no}}</ref><ref>{{cite web|url=http://news.cnet.com/8301-13579_3-10046637-37.html|title=Step aside, Chrome, for Squirrelfish Extreme|language=en|author=Stephen Shankland|work=cnet.com|date=2008-09-19|publisher=[[CNET]]|accessdate=2010-06-29|archive-date=2012-09-25|archive-url=https://web.archive.org/web/20120925065716/http://news.cnet.com/8301-13579_3-10046637-37.html|dead-url=no}}</ref><ref>{{cite web|url=http://www.satine.org/archives/2008/09/19/squirrelfish-extreme-fastest-javascript-engine-yet/|title=SquirrelFish Extreme: Fastest JavaScript Engine Yet|work=satine.org|accessdate=2010-06-29|language=en|archive-date=2012-05-01|archive-url=https://www.webcitation.org/67KMMhbGA?url=http://www.satine.org/archives/2008/09/19/squirrelfish-extreme-fastest-javascript-engine-yet/|dead-url=no}}</ref><ref>{{cite web|url=http://news.cnet.com/8301-1001_3-10031278-92.html|title=Firefox counters Google's browser speed test|author=Stephen Shankland|date=2008-09-03|accessdate=2010-06-29|language=en|work=cnet.com Business Tech|publisher=[[CNET]]|archive-date=2012-05-01|archive-url=https://www.webcitation.org/67KMNJo0Z?url=http://news.cnet.com/8301-1001_3-10031278-92.html|dead-url=no}}</ref>。Google丹麦在Chrome 2中开发了更快速的[[V8 (JavaScript引擎)|V8引擎]]。


2008年6月2日,WebKit开发团队发布了SquirrelFish<ref>{{cite web |first=Geoffrey |last=Garen |title=Announcing SquirrelFish |url=http://webkit.org/blog/189/announcing-squirrelfish/ |date=2008-06-02 |accessdate=2008-06-11|language=en}}</ref>——一个能极大地提升Safari解释脚本速度的新的JavaScript引擎<ref>{{cite web |first=Vygantas |last=Lipskas |title=Apple Safari 4 |url=http://www.favbrowser.com/apple-safari-4/ |date=2008-06-11 |accessdate=2008-06-11|language=en}}</ref>。该引擎是Safari 4其中一个新特性,在2008年6月11日发布给程序员使用;最终此JavaScript引擎被称为Nitro。2009年6月30日,在Firefox 3.5發布的最新技術能“使某些情況下的速度提升20到40倍”<ref>{{cite web|url=http://arstechnica.com/news.ars/post/20080822-firefox-to-get-massive-javascript-performance-boost.html|title=Firefox to get massive JavaScript performance boost|author=Ryan Paul|date=2008-08-22|work=arstechnica.com|publisher=Ars Technica © 2010 Condé Nast Digital|language=en|accessdate=2010-06-28}}</ref>。
2008年6月2日,WebKit开发团队发布了SquirrelFish<ref>{{cite web |first=Geoffrey |last=Garen |title=Announcing SquirrelFish |url=http://webkit.org/blog/189/announcing-squirrelfish/ |date=2008-06-02 |accessdate=2008-06-11 |language=en |archive-date=2012-05-01 |archive-url=https://www.webcitation.org/67KMGLp7V?url=http://www.webkit.org/blog/189/announcing-squirrelfish/ |dead-url=no }}</ref>——一个能极大地提升Safari解释脚本速度的新的JavaScript引擎<ref>{{cite web |first=Vygantas |last=Lipskas |title=Apple Safari 4 |url=http://www.favbrowser.com/apple-safari-4/ |date=2008-06-11 |accessdate=2008-06-11 |language=en |archive-url=https://www.webcitation.org/67KMGw5ko?url=http://www.favbrowser.com/apple-safari-4/ |archive-date=2012-05-01 |dead-url=yes }}</ref>。该引擎是Safari 4其中一个新特性,在2008年6月11日发布给程序员使用;最终此JavaScript引擎被称为Nitro。2009年6月30日,在Firefox 3.5發布的最新技術能“使某些情況下的速度提升20到40倍”<ref>{{cite web|url=http://arstechnica.com/news.ars/post/20080822-firefox-to-get-massive-javascript-performance-boost.html|title=Firefox to get massive JavaScript performance boost|author=Ryan Paul|date=2008-08-22|work=arstechnica.com|publisher=Ars Technica © 2010 Condé Nast Digital|language=en|accessdate=2010-06-28|archive-date=2008-12-17|archive-url=https://web.archive.org/web/20081217025009/http://arstechnica.com/news.ars/post/20080822-firefox-to-get-massive-javascript-performance-boost.html|dead-url=no}}</ref>。


== JavaScript引擎 ==
== 著名的引擎 ==
=== 開發中 ===
=== 開發中 ===
* [[Rhino (JavaScript引擎)|Rhino]],由Mozilla基金会管理,开放源代码,完全以Java编写。
* [[Rhino (JavaScript引擎)|Rhino]],由Mozilla基金会管理,开放源代码,完全以Java编写。
第29行: 第34行:
* [[V8 (JavaScript引擎)|V8]],开放源代码,由Google丹麦开发,是Google Chrome的一部分。
* [[V8 (JavaScript引擎)|V8]],开放源代码,由Google丹麦开发,是Google Chrome的一部分。
* [[WebKit#JavaScriptCore|JavaScriptCore]],开放源代码,用於[[Safari]]。
* [[WebKit#JavaScriptCore|JavaScriptCore]],开放源代码,用於[[Safari]]。
* [[Chakra (JScript引擎)]],用於[[Internet Explorer]]<ref>{{cite web|url=http://news.softpedia.com/news/Internet-Explorer-9-Beta-Next-New-IE9-Builds-Every-8-Weeks-138013.shtml|title=Internet Explorer 9 Beta Next – New IE9 Builds Every 8 Weeks|date=2010-03-20|accessdate=2010-06-28|author=Marius Oiaga|work=softpedia.com|publisher=SoftNews NET SRL|language=en}}</ref>。
* [[Chakra (JScript引擎)]],用於[[Internet Explorer]]<ref>{{cite web|url=http://news.softpedia.com/news/Internet-Explorer-9-Beta-Next-New-IE9-Builds-Every-8-Weeks-138013.shtml|title=Internet Explorer 9 Beta Next – New IE9 Builds Every 8 Weeks|date=2010-03-20|accessdate=2010-06-28|author=Marius Oiaga|work=softpedia.com|publisher=SoftNews NET SRL|language=en|archive-date=2012-05-01|archive-url=https://www.webcitation.org/67KMEkgUi?url=http://news.softpedia.com/news/Internet-Explorer-9-Beta-Next-New-IE9-Builds-Every-8-Weeks-138013.shtml|dead-url=yes}}</ref>。
* {{link-en|Chakra (JavaScript引擎)|Chakra (JavaScript engine)}},用於[[Microsoft Edge]]。
* [[Chakra (JavaScript引擎)]],用於[[Microsoft Edge]]。
* [[KJS]],KDE的ECMAScript/JavaScript引擎,最初由{{link-en|哈里·波頓|Harri Porten}}开发,用于KDE项目的Konqueror网页浏览器中。
* [[KJS]],KDE的ECMAScript/JavaScript引擎,最初由{{link-en|哈里·波頓|Harri Porten}}开发,用于KDE项目的Konqueror网页浏览器中。


第38行: 第43行:
* [[Futhark]],用于Opera 9.5至10.2版本。
* [[Futhark]],用于Opera 9.5至10.2版本。
* [[Carakan]],用于Opera 10.5至12.1版本。
* [[Carakan]],用于Opera 10.5至12.1版本。
* {{tsl|en|Nashorn}},Oracle於JDK 1.8<ref>{{Cite web|url=http://www.wiki.jvmlangsummit.com/images/c/ce/Nashorn.pdf|title=Adventures in JSR-292 or How To Be A Duck Without Really Trying|date=July 2011|author=Laskey|first=James|publisher=[[Oracle Corporation]]|accessdate=2011-07-24|archiveurl=https://web.archive.org/web/20160603132421/http://wiki.jvmlangsummit.com/images/c/ce/Nashorn.pdf|archivedate=2016-06-03}}</ref><ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/jdk8-dev/2013-April/002336.html|title=Proposed new schedule for Java 8|date=2013-04-18|accessdate=2013-04-19|archive-date=2013-04-22|archive-url=https://web.archive.org/web/20130422125458/http://mail.openjdk.java.net/pipermail/jdk8-dev/2013-April/002336.html|dead-url=no}}</ref><ref>{{Cite web|url=http://openjdk.java.net/projects/jdk8/|title=JDK 8|publisher=OpenJDK|date=2013-04-18|accessdate=2013-04-19|archive-date=2013-09-07|archive-url=https://web.archive.org/web/20130907095833/http://openjdk.java.net/projects/jdk8/|dead-url=no}}</ref>發布,內嵌於 Java 的 javascript 引擎。於Java 11改為棄用<ref>{{Cite web|url=http://openjdk.java.net/jeps/335|title=JEP 335: Deprecate the Nashorn JavaScript Engine|date=2017-07-17|accessdate=2018-09-25|archive-date=2022-05-23|archive-url=https://web.archive.org/web/20220523022312/http://openjdk.java.net/jeps/335|dead-url=no}}</ref>並於Java 15<ref>{{Cite web|url=https://openjdk.java.net/jeps/372|title=JEP 372: Remove the Nashorn JavaScript Engine|date=2020-01-10|accessdate=2020-07-22|archive-date=2022-06-09|archive-url=https://web.archive.org/web/20220609122417/https://openjdk.java.net/jeps/372|dead-url=no}}</ref>正式移除。
* {{link-en|Narcissus (JavaScript引擎)|Narcissus (JavaScript engine)}},开放源代码,由[[布蘭登·艾克]]编写(他也编写了SpiderMonkey)。
* {{link-en|Narcissus (JavaScript引擎)|Narcissus (JavaScript engine)|Narcissus}},开放源代码,由[[布蘭登·艾克]]编写(他也编写了SpiderMonkey)。
* [[Tamarin (軟體)|Tamarin]],由[[Adobe Systems|Adobe Labs]]编写。
* [[Tamarin (軟體)|Tamarin]],由[[Adobe Systems|Adobe Labs]]编写。


== 实现 ==
== 实现 ==


{{See also|{{link-en|ECMAScript引擎列表|List of ECMAScript engines}}}}
{{See also|ECMAScript引擎列表}}


JavaScript是一种[[ECMAScript]]方言,在许多程序中得以实现,特别是在[[网页浏览器]]。这些方言通常扩展了语言,或者[[标准库]]和相关[[应用程序接口|API]],例如[[万维网联盟|W3C]]定义的[[文档对象模型|DOM]]。这意味着以一种方言实现的程序不兼容于另一种方言的实现,除非程序使用了方言中的公共子集所具有的特性和API。
JavaScript是一种[[ECMAScript]]方言,在许多程序中得以实现,特别是在[[网页浏览器]]。这些方言通常扩展了语言,或者[[标准库]]和相关[[应用程序接口|API]],例如[[万维网联盟|W3C]]定义的[[文档对象模型|DOM]]。这意味着以一种方言实现的程序不兼容于另一种方言的实现,除非程序使用了方言中的公共子集所具有的特性和API。
第61行: 第67行:
| [[Mozilla Firefox]],[[Gecko]]排版引擎,[[SpiderMonkey]]和[[Rhino (JavaScript引擎)|Rhino]]
| [[Mozilla Firefox]],[[Gecko]]排版引擎,[[SpiderMonkey]]和[[Rhino (JavaScript引擎)|Rhino]]
| [[JavaScript]] 1.8.5
| [[JavaScript]] 1.8.5
| ECMA-262,版本5</sup>
| ECMA-262,版本6
|-
|-
| [[Safari]],[[WebKit#JavaScriptCore|Nitro]]引擎
| [[Safari]],[[WebKit#JavaScriptCore|Nitro]]引擎
| [[JavaScript]]
| [[JavaScript]]
| ECMA-262,版本5.1</sup>
| ECMA-262,版本6
|-
| [[Microsoft Edge]],[[Chakra (JavaScript引擎)|Chakra]]引擎
| [[JavaScript]]
| EMCA-262,版本6
|-
|-
| [[Opera電腦瀏覽器|Opera]],Carakan引擎(改用V8之前)
| [[Opera]]
| 一些[[JavaScript]] 1.5特性及一些[[JScript]]扩展<ref>{{cite web|url=http://www.opera.com/docs/specs/#ecmascript|title=Web specifications support in Opera Presto|work=Opera.com|publisher=Opera Software ASA|accessdate=2010-06-28|language=en}}</ref>
| 一些[[JavaScript]] 1.5特性及一些[[JScript]]扩展<ref>{{cite web|url=http://www.opera.com/docs/specs/#ecmascript|title=Web specifications support in Opera Presto|work=Opera.com|publisher=Opera Software ASA|accessdate=2010-06-28|language=en|archive-url=https://archive.today/20120604/http://www.opera.com/docs/specs/#ecmascript|archive-date=2012-06-04|dead-url=yes}}</ref>
| ECMA-262,版本5.1
| ECMA-262,版本5.1
|-
|-
第96行: 第106行:


== 外部链接 ==
== 外部链接 ==
* [http://krakenbenchmark.mozilla.com/index.html Kraken JavaScript Benchmark] - 瀏覽器效能測試
* [http://krakenbenchmark.mozilla.com/index.html Kraken JavaScript Benchmark] {{Wayback|url=http://krakenbenchmark.mozilla.com/index.html |date=20100918002553 }} - 瀏覽器效能測試
* [http://peacekeeper.futuremark.com/ Peacekeeper] - 瀏覽器效能測試
* [http://peacekeeper.futuremark.com/ Peacekeeper] {{Wayback|url=http://peacekeeper.futuremark.com/ |date=20180228012916 }} - 瀏覽器效能測試
* [http://www.speed-battle.com Speed-Battle] - 瀏覽器效能測試
* [http://www.speed-battle.com Speed-Battle] {{Wayback|url=http://www.speed-battle.com/ |date=20210105130009 }} - 瀏覽器效能測試
* [https://www2.webkit.org/perf/sunspider/sunspider.html SunSpide] - 瀏覽器效能測試
* [https://www2.webkit.org/perf/sunspider/sunspider.html SunSpide] {{Wayback|url=https://www2.webkit.org/perf/sunspider/sunspider.html |date=20210126143341 }} - 瀏覽器效能測試


{{ECMAScript}}
{{ECMAScript}}

{{DEFAULTSORT:Javascript引擎}}
{{JavaScript}}
{{JavaScript}}


{{DEFAULTSORT:Javascript引擎}}
[[Category:JavaScript|Category:JavaScript]]
[[Category:JavaScript]]

2023年9月16日 (六) 07:59的最新版本

JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中。

历史

[编辑]

在2008年到2009年的第二次浏览器大战之前,JavaScript引擎仅简单地被当作能阅读执行JavaScript源代码直譯器

目前为止,最通用的JavaScript宿主环境是网页浏览器。网页浏览器一般使用公共的API创建“宿主对象”以便于在JavaScript中支持DOM

性能演進

[编辑]

一个典型的浏览器有一个图形引擎和一个独立的JavaScript引擎。这样JavaScript引擎能够被更方便的测试、重新生成或者在另一些项目中使用。例如:Carakan被用在Presto中,Nitro被用在WebKit中,SpiderMonkey被用在Gecko中,KJS被用在KHTML中,Rhino默认不包含任何布局引擎。但还有其他组合,例如:V8与WebKit被用于Google Chrome中。JavaScript引擎能为程序员提供部分操作浏览器的功能(网络、DOM、外部事件、HTML5视频、canvas和存储)。

Sunspider是一个JavaScript实用基准测试英语Browser speed test通过一系列关于JavaScript语言的脚本测试JavaScript引擎的速度。Sunspider不测试无关于JavaScript的特性(不使用HTML、CSS和无网络情况下)。

近幾年來,在浏览器开发者之间展开了一场开发更快的JavaScript引擎的竞赛。2008年,Google Chrome因它的JavaScript性能而倍受称赞,但是其它浏览器马上使用了更快的JavaScript引擎。之后,Google Chrome在性能上获得领先,其长处在于它高速的性能和JavaScript的处理速度,这些都由许多网站在主要的浏览器之间的速度测试中得到验证[1][2][3]。随着WebKit的Squirrelfish Extreme和Mozilla的TraceMonkey JavaScript虚拟机出现,Chrome的JavaScript执行速度就被超越了[4][5][6][7]。Google丹麦在Chrome 2中开发了更快速的V8引擎

2008年6月2日,WebKit开发团队发布了SquirrelFish[8]——一个能极大地提升Safari解释脚本速度的新的JavaScript引擎[9]。该引擎是Safari 4其中一个新特性,在2008年6月11日发布给程序员使用;最终此JavaScript引擎被称为Nitro。2009年6月30日,在Firefox 3.5發布的最新技術能“使某些情況下的速度提升20到40倍”[10]

著名的引擎

[编辑]

開發中

[编辑]

停止開發

[编辑]

实现

[编辑]

JavaScript是一种ECMAScript方言,在许多程序中得以实现,特别是在网页浏览器。这些方言通常扩展了语言,或者标准库和相关API,例如W3C定义的DOM。这意味着以一种方言实现的程序不兼容于另一种方言的实现,除非程序使用了方言中的公共子集所具有的特性和API。

在实现和方言中存在着一些差别。一种语言的方言有一些与语言不同的地方。实现能够执行该语言或方言编写的程序。

应用程序(实现) 方言和最后版本 ECMAScript版本
Google ChromeV8引擎 JavaScript ECMA-262,版本6
Mozilla FirefoxGecko排版引擎,SpiderMonkeyRhino JavaScript 1.8.5 ECMA-262,版本6
SafariNitro引擎 JavaScript ECMA-262,版本6
Microsoft EdgeChakra引擎 JavaScript EMCA-262,版本6
Opera,Carakan引擎(改用V8之前) 一些JavaScript 1.5特性及一些JScript扩展[17] ECMA-262,版本5.1
KHTML排版引擎,KDE项目的Konqueror JavaScript 1.5 ECMA-262,版本3
Adobe Acrobat JavaScript 1.5 ECMA-262,版本3
OpenLaszlo英语OpenLaszlo JavaScript 1.4 ECMA-262,版本3
Max/MSP英语Max (software) JavaScript 1.5 ECMA-262,版本3
ANT Galio 3英语Fresco (web browser) JavaScript 1.5附带RMAI扩展 ECMA-262,版本3

参考来源

[编辑]
  1. ^ Stephen Shankland. Speed test: Google Chrome beats Firefox, IE, Safari. cnet.com Business Tech. CNET. 2008-09-02 [2010-06-28]. (原始内容存档于2012-05-01) (英语). 
  2. ^ Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome. PC Games Hardware. Computec Media AG. [2010-06-28]. (原始内容存档于2012-05-01) (英语). 
  3. ^ Lifehacker Speed Tests: Safari 4, Chrome 2. Lifehacker. [2010-06-28]. (原始内容存档于2012-05-01) (英语). 
  4. ^ Stephen Shankland. Third Chrome beta another notch faster. cnet.com. CNET. 2008-10-31 [2010-06-28]. (原始内容存档于2012-09-25) (英语). 
  5. ^ Stephen Shankland. Step aside, Chrome, for Squirrelfish Extreme. cnet.com. CNET. 2008-09-19 [2010-06-29]. (原始内容存档于2012-09-25) (英语). 
  6. ^ SquirrelFish Extreme: Fastest JavaScript Engine Yet. satine.org. [2010-06-29]. (原始内容存档于2012-05-01) (英语). 
  7. ^ Stephen Shankland. Firefox counters Google's browser speed test. cnet.com Business Tech. CNET. 2008-09-03 [2010-06-29]. (原始内容存档于2012-05-01) (英语). 
  8. ^ Garen, Geoffrey. Announcing SquirrelFish. 2008-06-02 [2008-06-11]. (原始内容存档于2012-05-01) (英语). 
  9. ^ Lipskas, Vygantas. Apple Safari 4. 2008-06-11 [2008-06-11]. (原始内容存档于2012-05-01) (英语). 
  10. ^ Ryan Paul. Firefox to get massive JavaScript performance boost. arstechnica.com. Ars Technica © 2010 Condé Nast Digital. 2008-08-22 [2010-06-28]. (原始内容存档于2008-12-17) (英语). 
  11. ^ Marius Oiaga. Internet Explorer 9 Beta Next – New IE9 Builds Every 8 Weeks. softpedia.com. SoftNews NET SRL. 2010-03-20 [2010-06-28]. (原始内容存档于2012-05-01) (英语). 
  12. ^ Laskey, James. Adventures in JSR-292 or How To Be A Duck Without Really Trying (PDF). Oracle Corporation. July 2011 [2011-07-24]. (原始内容 (PDF)存档于2016-06-03). 
  13. ^ Proposed new schedule for Java 8. 2013-04-18 [2013-04-19]. (原始内容存档于2013-04-22). 
  14. ^ JDK 8. OpenJDK. 2013-04-18 [2013-04-19]. (原始内容存档于2013-09-07). 
  15. ^ JEP 335: Deprecate the Nashorn JavaScript Engine. 2017-07-17 [2018-09-25]. (原始内容存档于2022-05-23). 
  16. ^ JEP 372: Remove the Nashorn JavaScript Engine. 2020-01-10 [2020-07-22]. (原始内容存档于2022-06-09). 
  17. ^ Web specifications support in Opera Presto. Opera.com. Opera Software ASA. [2010-06-28]. (原始内容存档于2012-06-04) (英语). 

外部链接

[编辑]