Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript引擎 #56

Open
vvLavida opened this issue Oct 11, 2016 · 3 comments
Open

JavaScript引擎 #56

vvLavida opened this issue Oct 11, 2016 · 3 comments

Comments

@vvLavida
Copy link
Owner

vvLavida commented Oct 11, 2016

延伸: #57 浏览器内核

  • V8
  • JavaScriptCore
  • SpiderMonkey
  • Dart
@vvLavida
Copy link
Owner Author

vvLavida commented Oct 11, 2016

V8

V8是一个由美国Google开发的开源JavaScript引擎,用于Google Chrome中。[3]Lars Bak是这个项目的组长。[4]
V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。[5]
传统的Javascript是动态语言,又可称之为Prototype-based Language,JavaScript继承方法是使用prototype,通过指定prototype属性,便可以指定要继承的目标。属性可以在运行时添加到或从对象中删除,引擎会为运行中的对象创建一个属性字典,新的属性都要通过字典查找属性在内存中的位置。V8为object新增属性的时候,就以上次的hidden class为父类别,创建新属性的hidden class的子类别,如此一来属性访问不再需要动态字典查找了。
为了缩短由垃圾收集造成的停顿,V8使用stop-the-world, generational, accurate的垃圾收集器。[6]在执行回收之时会暂时中断程序的执行,而且只处理对象堆栈。还会收集内存内所有对象的指针,可以避免内存溢出的情况。V8汇编器是基于Strongtalk汇编器。[7]

延伸 Dart
Dart([KK] 英语发音:/dɑrt/, [DJ] 英语发音:/dɑ:t/)是一种使用于万维网的开放源代码编程语言,由Google主导开发,于2011年10月公开。它的开发团队由Google Chrome浏览器V8引擎团队的领导者拉尔斯·巴克(Lars Bak)所主持。它的目标在于成为下一代结构化Web开发语言。
类似于Javascript,Dart也是一种面向对象语言,但是它采用基于类的编程,与Javascript不同。它只允许单一继承,语法风格接近C语言。

目前Dart有两种方式运行:一是在本地的虚拟机上,二是将Dart代码转成Javascript,直接在Javascript引擎上运行。[5]

@vvLavida
Copy link
Owner Author

JavaScriptCore

JavaScriptCore是一个在WebKit中提供JavaScript引擎的框架,而且在OS X作为其他内容的脚本引擎[11][67]。JavaScriptCore最初是为KDE的JavaScript引擎(KJS)库及PCRE正则表达式库,JavaScriptCore从KJS及PCRE复刻之后,已比原先进步了许多,有了新的特色以及极大的性能改进[68]。
在2008年6月2日,WebKit项目宣布,将被重写为"SquirrelFish",它是一个字节码解释器[27][28],这个项目演变成SquirreFish Extreme(简称为SFX,市场称之为Nitro),首次公开于2008年9月18日,它会将Javascript编译为本地的机器语言,不再需要字节码解释器,同时加速了JavaScript的运行效率[29]。

@vvLavida
Copy link
Owner Author

SpiderMonkey

SpiderMonkey是第一款问世的JavaScript引擎,由前网景公司的布兰登·艾克设计,后期由Mozilla基金会维护,以开放源代码发布。目前为Mozilla Firefox网页浏览器所使用的JavaScript引擎,并且被嵌入于许多不同的环境,例如:GNOME 3桌面。

SpiderMonkey可被嵌入于应用程序中,并提供应用程序可运行Javascript的能力。一个不完整的名单如下:
Mozilla Firefox、Thunderbird、SeaMonkey
Adobe Acrobat、Adobe Reader、Adobe Flash Professional、Adobe Dreamweaver
GNOME桌面环境,第3版和​​更高版本
Yahoo! Widgets
UOX 3,网络创世纪私人服务器
FreeSWITCH,开放源代码通信软件
0_A.D.,即时战略游戏
ELinks,纯文字网页浏览器[20]
Synchronet,BBS、电子邮件和服务器软件
SpiderMonkey亦提供了JavaScript Shell,他是一个交互式开发环境,可让开发者使用命令行来运行JavaScript程序[21]。 许多大型组织使用SpiderMonkey来管理他们前端应用程序的JavaScript。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant