[转帖]Runtime, Engine, VM 的区别是什么?

时间:2023-03-09 21:31:42
[转帖]Runtime, Engine, VM 的区别是什么?

这就是个WiFi和WLAN关系的问题嘛。
Runtime是指用于支持程序运行时的组件,它可以是个Engine和/或VM。
VM是一种系统抽象,它提供代码执行所需的API环境。Engine是一种处理抽象,它负责将代码变为底层可执行代码。
一个运行时,可以是VM和Engine中的一种,也可以同时是两者。当然也可以两者都不是。

以题主的例子而言,V8是JS的Engine,但同时它也提供了环境,所以它也是VM。
JVM是Java的VM,但它也负责代码的转换,所以它也是Engine。
之所以习惯上JS的称Engine,是因为JS最初并没有明确的VM概念,也就是说它并没有明确地定义一套环境。而Java的称VM,也是因为早期JVM要强调它提供了环境,而不光光用来解释代码。

至于其他的还有一些例子:
VC++ Runtime,它提供了API环境,但它并不抽象系统,也不翻译代码,所以它是另一种Runtime。类似的还有VB Runtime和MFC。
.Net Framework,它提供了API,抽象了系统,翻译代码,之所以叫它Framework大概是为了显得大气。

作者:沈万马
链接:https://www.zhihu.com/question/34634496/answer/59537636
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。