跳转到内容

JavaScript引擎:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
无编辑摘要
第10行: 第10行:
在2008年到2009年的第二次[[浏览器大战]]之前,JavaScript引擎仅简单地被当作能阅读执行[[JavaScript]][[源代码]]的[[直譯器]]。
在2008年到2009年的第二次[[浏览器大战]]之前,JavaScript引擎仅简单地被当作能阅读执行[[JavaScript]][[源代码]]的[[直譯器]]。


第一款JavaScript引擎由[[布蘭登·艾克]]在[[网景公司]]开发,用于[[网景导航者|Netscape Navigator]][[网页浏览器]]中。引擎的名字叫做[[SpiderMonkey]],由[[C语言|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]]。
第一款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]]。


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

2016年1月2日 (六) 06:47的版本

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

历史

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

第一款JavaScript引擎由布蘭登·艾克网景公司开发,用于Netscape Navigator网页浏览器中。引擎的名字叫做SpiderMonkey,由[[C++]实现。它自JavaScript 1.5升级以符合ECMA-262 版本3。Rhino引擎,由网景公司的Norris Boyd开发,由Java实现。像SpiderMonkey一样,Rhino符合ECMA-262 版本3。JavaScript引擎的應用例子還包括: Apple Safari 4的Nitro,Google ChromeV8Mozilla Firefox 3.5的TraceMonkey

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

網頁伺服器是另一种透過的应用程序引擎。一个JavaScript服务器能够处理HTTP请求并回应,这样JavaScript程序能动态生成页面。微软用于IIS中ASP技术允许服务器端代码以VBScript或JScript(微软的JavaScript实现)写成。Jaxer是以JavaScript编写成的網頁伺服器,这有利于在服务器端和客户端使用同样的代码。

性能演化

2008年5月11日,Mozilla採用PGO(Profile-guided Optimizations)特性指引最佳化,使Firefox 3.0的性能大幅提升。2009年6月30日发布的Firefox 3.5使用了Tracing和Nanojit技術,能“在某些情况下的速度提升20到40倍”,其中Nanojit的程式碼由Adobe貢獻。[1]

2008年6月2日,WebKit开发团队发布了SquirrelFish[2]——一个能极大地提升Safari解释脚本速度的新的JavaScript引擎。[3]该引擎是Safari 4其中一个新特性,在2008年6月11日发布给程序员使用;最终此JavaScript引擎被称为Nitro。

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

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

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

JavaScript引擎

主要的网页浏览器JavaScript引擎:

其它

  • KJS,KDE的ECMAScript/JavaScript引擎,最初由Harri Porten开发,用于KDE项目的Konqueror网页浏览器中。
  • Narcissus,开放源代码,由Brendan Eich编写(他也参与编写了第一个SpiderMonkey)。
  • Tamarin,由Adobe Labs编写,Flash Player 9所使用的引擎。
  • Nitro(原名SquirrelFish),为Safari 4编写。

实现

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

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

应用程序(实现) 方言和最后版本 ECMAScript版本
Google ChromeV8引擎 JavaScript ECMA-262,版本5.1
Mozilla FirefoxGecko排版引擎,SpiderMonkeyRhino JavaScript ECMA-262,版本5.1
Oper 一些JavaScript 1.5特性及一些JScript扩展[12] ECMA-262,版本5.1
KHTML排版引擎,KDE项目的Konqueror与苹果的Safari JavaScript 1.5 ECMA-262,版本3
Adobe Acrobat JavaScript 1.5 ECMA-262,版本3
OpenLaszlo Platform JavaScript 1.4 ECMA-262,版本3
Max/MSP JavaScript 1.5 ECMA-262,版本3
ANT Galio 3 JavaScript 1.5附带RMAI扩展 ECMA-262,版本3

参考来源

  1. ^ Ryan Paul. Firefox to get massive JavaScript performance boost. arstechnica.com. Ars Technica © 2010 Condé Nast Digital. 2008-08-22 [2010-06-28] (英语). 
  2. ^ Garen, Geoffrey. Announcing SquirrelFish. 2008-06-02 [2008-06-11] (英语). 
  3. ^ Lipskas, Vygantas. Apple Safari 4. 2008-06-11 [2008-06-11] (英语). 
  4. ^ Stephen Shankland. Speed test: Google Chrome beats Firefox, IE, Safari. cnet.com Business Tech. CNET 新闻. 2008-09-02 [2010-06-28] (英语). 
  5. ^ Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome. PC Games Hardware. Computec Media AG. [2010-06-28] (英语). 
  6. ^ Lifehacker Speed Tests: Safari 4, Chrome 2. Lifehacker. [2010-06-28] (英语). 
  7. ^ Stephen Shankland. Third Chrome beta another notch faster. cnet.com. CNET News. 2008-09-02 [2010-06-28] (英语). 
  8. ^ Stephen Shankland. Step aside, Chrome, for Squirrelfish Extreme. cnet.com. CNET News. 2008-09-19 [2010-06-29] (英语). 
  9. ^ SquirrelFish Extreme: Fastest JavaScript Engine Yet. satine.org. [2010-06-29] (英语). 
  10. ^ Stephen Shankland. Firefox counters Google's browser speed test. cnet.com Business Tech. CNET News. 2008-09-03 [2010-06-29] (英语). 
  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] (英语). 
  12. ^ Web specifications support in Opera Presto. Opera.com. Opera Software ASA. [2010-06-28] (英语). 

外部链接

效能測試