代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

JVM是VM的一种形式吗?

  •  3
  • GurdeepS  · 技术社区  · 15 年前

    我是一个主要的.NET开发人员,我和一些技术人员(如ESX和Hyper-V)一起做了很多基础设施工作。我发现JVM中有VM非常奇怪(我一直认为VM的形式是位于ESX服务器上的)。

    我说的JVM是一个实际的VM,它位于操作系统和应用程序(而不是硬件和操作系统)之间的某个环中,这是对的吗?

    谢谢

    5 回复  |  直到 15 年前
        1
  •  4
  •   Jon Skeet    15 年前

    它是一个虚拟机,就像CLR(.NET的一部分)是一个虚拟机一样。虽然它和超V型的虚拟机不太一样。。。Hyper-V虚拟化通用硬件来运行整个操作系统,因此大多数代码认为它实际上是直接在普通计算机上运行的。

    JVM或CLR在以下方面略有不同:

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

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

        2
  •  3
  •   asthasr    15 年前

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

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

        3
  •  1
  •   Ignacio Vazquez-Abrams    15 年前
        4
  •  1
  •   stacker    15 年前

    当ESX和Hyper-V模拟计算机系统时,JVM只在支持的平台上提供java字节码的执行(和优化)。

        5
  •  0
  •   thejh    15 年前

    是的,JVM接受字节码并执行它,它能够对应用程序实施安全限制。