JavaScript引擎虚拟机运行时环境是一回事儿吗?

JavaScript013

JavaScript引擎虚拟机运行时环境是一回事儿吗?,第1张

js引擎通常被称作一种虚拟机(可能是js并没有明确的VM的概念吧),是专门用来解释和执行js脚本的。js虚拟机是一种进程虚拟机,就是能运行一个进程或程序。每个js引擎都实现了ECMAScript规范(当然,有的实现并不全或者未能实现最新规范)ActionScript也支持这种规范。早期的js脚本只包含很简单的逻辑,所以处理js脚本的引擎性能自然也好不到哪里去,非常早期的“Mocha”引擎只包含字节码解释器、引用计数方式的自动内存管理方式。js引擎从原始的遍历语法树,到字节码方式到引入JIT编译方式(即时编译),性能得到了质的飞跃  。现如今一些比较知名的js引擎有:SpiderMonkey, Mozilla的JavaScript 引擎,使用C/C++编写;V8(第一个用上JIT技术的虚拟机),chrome的js引擎,使用C++/汇编  编写,使用初级编译器 + 优化编译器。还有Safari的JavaScriptCore引擎,IE/Edge的Chakra引擎。当然,Node.js/IO.js也是使用V8引擎(虚拟机)。参考:game-server-development/node.js-V8引擎相关的性能优化.md at master · xiecc/game-server-development · GitHub runtime 翻译过来就是“运行时”,或者运行时环境,是说一个程序正在执行的状态,js runtime就是运行js的环境,也就是虚拟机(engine)。runtime它的底层可能是一些标准库函数。js引擎和虚拟机存在相似之处,但有足够的差异,因为JavaScript的动态特性。

1.脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间。

HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。

2.脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些.

3.与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。

注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。

4.脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在.

脚本语言不需要编译,可以直接用,由解释器来负责解释。

5.脚本语言一般都是以文本形式存在,类似于一种命令.

举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件.

你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言