我主要是.NET开发人员,我使用ESX和Hyper-V等技术进行大量基础设施工作。我觉得奇怪的是JVM中有虚拟机(我一直在思考位于ESX服务器上的虚拟机)。
我是否正确地说JVM是一个真实的虚拟机,它位于操作系统和应用之间的某个环中(而不是硬件和操作系统之间)?
由于
答案 0 :(得分:4)
它是一个虚拟机,其方式与CLR(.NET的一部分)是虚拟机的方式相同。它与Hyper-V类型的VM并不完全相同...... Hyper-V虚拟化了通用硬件来运行整个操作系统,因此大多数代码“认为”它实际上是直接在普通计算机上运行。
JVM或CLR略有不同:
两种“虚拟机”都在虚拟环境中运行代码,但两者的主要关注点却截然不同。
答案 1 :(得分:3)
Java(以及.NET,Python和Parrot ......)虚拟机是“模拟计算机”。它具有在VM运行的操作系统上相同的指令和行为,这使得“跨平台”方面起作用。当然,VM本身是特定于平台的,用于解决客户端代码的细节问题。
是的,回到Infocom Z-Machine和Knuth的MIX虚拟机的所有东西实际上都是“虚拟机”。
答案 2 :(得分:1)
答案 3 :(得分:1)
虽然ESX和Hyper-V模拟计算机系统,但JVM仅在支持的平台上提供Java字节代码的执行(和优化)。
答案 4 :(得分:0)
是的,JVM采用Bytecode并执行它,并且能够对应用程序强制实施安全限制。