java.exe程序是实际的VM吗?

Avi*_*ohn 10 java jvm

JDK附带了java.exe(用于Windows)程序.您可以使用它从命令行启动程序.

维基百科说它是'类加载器','是类文件的解释器'.

这是真正的全面JVM吗?它是一个"更小,更轻巧"的JVM吗?还有别的吗?

use*_*740 8

根据定义和要求,JVM执行这两项任务.

在包括HotSpot在内的成熟实现中,JVM做了更多工作,包括即时编译(视为有用) - 但它仍然必须加载和解释类文件和Java字节码.知道这一点可以减轻使用"翻译"对文章的困惑; 它解释了概念上的任务,应该不会被理解为小的或轻.

也就是说,在标准的Oracle/OpenJDK环境中java/javaw 启动 "完整JVM".


Kas*_*eda 7

java.exe只是一个虚拟机启动器.它创建一个VM并运行它.JVM位于jvm.dll(或Linux上的libjvm.so)中.

如果您有兴趣,我可以使用OpenJDK(不在OpenJDK团队中),可以告诉您更多详细信息.

  • We are interested. (6认同)

Gua*_*anX 0

java.exe将类文件提供给 JVM,以便它可以执行 JIT 并解释代码。java.exe其本身并不是虚拟机,不是。它启动一个并为其提供所有必要的数据。

为了编译您的代码,您应该使用javac.exe.

假设您有Test.java类代码,现在需要编译它:

javac Test.java
Run Code Online (Sandbox Code Playgroud)

编译器将输出Test.class编译后的文件,其中包含JVM字节码。

现在,为了在 JVM 上执行它,您运行

java Test
Run Code Online (Sandbox Code Playgroud)

它在可用文件中查找入口点.class并将其提供给 JVM。