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

JavaScript011

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的动态特性。

可以的。

使用javascript构建本地程序一般需要如下环境:一个js引擎,一个界面工具。

js引擎:目前都是用nodejs,nodejs是基于chromev8封装的一个本地js解析器。

界面工具:既然是本地程序,一般都需要界面,这里界面工具都是选择某种浏览器封装。比较流行的是基于chromium进行封装。

-----------------------------------------------------------

好消息是目前已经有比较完美的封装了,比如electron封装了本地化的引擎和界面工具。

微软的Visual Studio Code就是基于electron开发的。