谷歌V8和Java虚拟机的工作方式是否相似?

16

我知道V8是一个JavaScript引擎,但它的工作方式是否类似于Java虚拟机?

如果它的工作方式不同,那么有哪些区别呢?V8是否直接将JavaScript编译成机器语言?


8
没有人真正回答你的问题。答案是肯定的:它们都是虚拟机,一个用于Java,另一个用于JavaScript(这两种语言非常不同)。在JVM的情况下,这个虚拟机会在运行时将Java bytecode翻译成您CPU的机器代码(即解释或JIT - 即时编译)。在V8的情况下,它直接将JavaScript解释为机器代码。它们进行这些转换的方式可能有所不同,但总体思路是相同的。 - André Rosa
谢谢@AndréRosa!为什么不在下面添加一个适当的答案呢? - hipokito
3个回答

22

虽然Lars Bak在这两个项目中都发挥了关键作用,但它们之间没有关联。

V8 是一个JavaScript引擎,将JavaScript编译成本地机器码,最著名的应用是在Google Chrome和Node.js中。

JVM 是一个虚拟机,运行由Java编译器生成的字节码。

其中一个是JavaScript引擎,另一个是Java虚拟机。需要注意的是,Java和JavaScript就像汽车和地毯一样不太相似。此外,一个是编译器,另一个是执行的媒介。


1
是的,我知道那个。我想问的是:这些语言是通过VM解析和解释的,还是V8引擎直接将代码编译为机器语言? - Haldir87
1
V8将JavaScript编译为机器码。 - Peter Olson
6
答案与问题无关,对于“汽车和地毯”也无所谓。 - Fareed Alnamrouti

1

它们是两种非常不同的技术,用于两种不同的编程语言 - Java虚拟机是用于运行Java程序的虚拟机,而V8是一个JavaScript引擎。它们在名称中都有“Java”这个词只是相似之处。


11
他问的是它是否以类似的方式工作,而不是它们是否实现了相同的语言。他甚至在问题中特别提到,他知道V8是用于“Javascript”,而不是Java。 - Hejazzman

0

Google的V8与Java无关。它是用C++编写的JavaScript引擎。您可以在这里阅读更多相关信息。


3
他并没有询问它是否与Java有任何关联,他是在询问它是否以类似的方式工作。它确实是这样的(包括JIT等)。 - Hejazzman
@foljs - 你错了:OP确实问过这是否与Java有关。在我发表回答之后,问题被修改了,完全改变了它的意思。问题最初的版本(你可以通过在问题下面的“编辑”注释旁边单击日期查看编辑历史记录)的标题是“V 8与Java虚拟机不同吗?”并询问:“如果它们的工作方式不同,哪些是差异?”那就是我回答的问题。 - Ted Hopp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接