Java虚拟机真的是一个与VMWare或Parallels文件同样意义上的虚拟机吗?

Aar*_* Fi 24 java jvm

Java虚拟机真的是一个与VMWare或Parallels文件同样意义上的虚拟机吗?

Edd*_*die 34

没有.

VMWare和其他实际上虚拟化了机器的硬件.在VMWare容器(或Parallels或Windows的虚拟化容器或Bochs或......)内运行的操作系统具有在虚拟化容器内运行的不同程度的意识.在VMWare中,操作系统不知道它在虚拟容器中运行.虽然通常安装专门的驱动程序(最重要的是视频)以防止出现性能问题,但操作系统根本没有修改.其他一些虚拟机不执行完全硬件虚拟化,而是要求容器内的操作系统对容器进行特殊调用,而不是常规硬件调用.

从根本上说,JVM不是虚拟机.除了处理器之外,没有其他硬件被虚拟化.JVM本质上是一个虚拟化的CPU加上与C++或任何其他面向对象语言一起包含的相同类型的运行时,以及垃圾收集和其他必需品.此外,当然,Java类文件(和JAR文件等)不是机器代码,而是中间字节代码.因此,JVM必须在运行时编译或解释类文件(无论是否包含在JAR文件中),并且能够在运行时动态加载和查找新代码.

JVM称为虚拟机,因为JVM定义定义了抽象机器.这包括寄存器,堆栈等,Java源代码编译的字节代码实际上是该虚拟机的机器代码.然后,JVM将此字节代码解释或编译为本机机器指令.

区别在于JVM是虚拟化处理器,而其他虚拟机是虚拟(包括视频卡,网络和其他外部设备和硬件寄存器).


Ade*_*ari 8

不可以.系统虚拟机和进程虚拟机之间存在差异.JVM是一个进程虚拟机,而VMWare和那种类型是系统虚拟机.有关更多信息,请参阅维基百科条目.

就并行虚拟机而言,上述条目表明,

PVM(并行虚拟机)不是严格的虚拟机,因为在顶部运行的应用程序仍然可以访问所有OS服务,因此不限于"VM"提供的系统模型.