vvLavida / TechNotes

Issuses for coding summarize.
GNU General Public License v3.0
6 stars 3 forks source link

JavaScript引擎 #56

Open vvLavida opened 7 years ago

vvLavida commented 7 years ago

延伸: #57 浏览器内核

vvLavida commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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。