没有.
VMWare和其他实际上虚拟化了机器的硬件.运行在VMWare容器(或Parallels或Windows的虚拟化容器或Bochs或…)内部的操作系统具有不同程度的在虚拟化容器中运行的意识.在VMWare中,操作系统不知道它在虚拟容器中运行.操作系统根本没有修改,尽管通常安装专门的驱动程序(最重要的是视频),以防止性能问题.一些其他虚拟机不执行完整的硬件虚拟化,而是要求容器内的操作系统对容器进行特殊调用以代替常规硬件调用.
在这个意义上,JVM不是虚拟机.没有处理器以外的硬件是虚拟化的. JVM本质上是一个虚拟化CPU,加上与C或任何其他面向对象语言,以及垃圾收集和其他必需品一起包含的相同类型的运行时.此外,当然,Java类文件(和JAR文件等)不是机器代码,而是中间字节代码.因此,JVM必须在运行时编译或解释类文件(无论是否包含在JAR文件中),并且能够在运行时动态加载和查找新代码.
JVM被称为虚拟机,因为JVM定义定义了一个抽象机器.这包括寄存器,堆栈等,Java源编译的字节码实际上是这个虚拟机的机器代码.然后,JVM将此字节码解释或编译成本机指令.
区别在于JVM是虚拟化处理器,其他虚拟机是虚拟化机器(包括视频卡,网络和其他外部设备和硬件寄存器).