是JVM,VM的一种形式?

时间:2010-11-25 21:40:43

标签: java jvm

我主要是.NET开发人员,我使用ESX和Hyper-V等技术进行大量基础设施工作。我觉得奇怪的是JVM中有虚拟机(我一直在思考位于ESX服务器上的虚拟机)。

我是否正确地说JVM是一个真实的虚拟机,它位于操作系统和应用之间的某个环中(而不是硬件和操作系统之间)?

由于

5 个答案:

答案 0 :(得分:4)

它是一个虚拟机,其方式与CLR(.NET的一部分)是虚拟机的方式相同。它与Hyper-V类型的VM并不完全相同...... Hyper-V虚拟化了通用硬件来运行整个操作系统,因此大多数代码“认为”它实际上是直接在普通计算机上运行。

JVM或CLR略有不同:

  • 虚拟化的指令集专门设计为 虚拟化。虽然有一些“本机Java字节码”硬件,但这与运行Java的常规方式相去甚远。通常字节码和IL是JIT编译的 - 垃圾收集器是虚拟机的一部分,在Hyper-V等中肯定不是这样。
  • 虚拟机本身不运行操作系统 - 它在的上运行它直接知道的操作系统,并用于文件系统访问等。

两种“虚拟机”都在虚拟环境中运行代码,但两者的主要关注点却截然不同。

答案 1 :(得分:3)

Java(以及.NET,Python和Parrot ......)虚拟机是“模拟计算机”。它具有在VM运行的操作系统上相同的指令和行为,这使得“跨平台”方面起作用。当然,VM本身是特定于平台的,用于解决客户端代码的细节问题。

是的,回到Infocom Z-Machine和Knuth的MIX虚拟机的所有东西实际上都是“虚拟机”。

答案 2 :(得分:1)

错误virtual machine

答案 3 :(得分:1)

虽然ESX和Hyper-V模拟计算机系统,但JVM仅在支持的平台上提供Java字节代码的执行(和优化)。

答案 4 :(得分:0)

是的,JVM采用Bytecode并执行它,并且能够对应用程序强制实施安全限制。