为什么可以';我们是否将JVM发展为一种硬件虚拟化技术,如VMWare、KVM、Docker等。?

为什么可以';我们是否将JVM发展为一种硬件虚拟化技术,如VMWare、KVM、Docker等。?,jvm,virtualization,Jvm,Virtualization,虚拟化已经伴随我们很长一段时间了。VMWare于1999年推出,随后出现了其他一些类似的软件,如KVM、VirtualBox等。后来,虚拟机监控程序演变为unikernels,出现了docker、kubernetes等下一代容器技术 我的问题是。(我知道这是一个愚蠢的问题,但这个问题困扰了我很长时间) Java虚拟机(JVM)从1995年开始出现 为什么Sun Microsystems(或后来的Oracle)没有费心使用JVM进入虚拟化市场?这是因为业务战略/营销决策,还是有严重的技术限制阻止J

虚拟化已经伴随我们很长一段时间了。VMWare于1999年推出,随后出现了其他一些类似的软件,如KVM、VirtualBox等。后来,虚拟机监控程序演变为unikernels,出现了docker、kubernetes等下一代容器技术

我的问题是。(我知道这是一个愚蠢的问题,但这个问题困扰了我很长时间)

Java虚拟机(JVM)从1995年开始出现

为什么Sun Microsystems(或后来的Oracle)没有费心使用JVM进入虚拟化市场?这是因为业务战略/营销决策,还是有严重的技术限制阻止JVM演变为虚拟化机制?如果有人试图增强JVM,使其成为VMWare ESXi/KVM/Docker这样的虚拟化方法,那么这将是一个非常愚蠢的尝试,就像试图将直升机转换为能够将我们带到月球的航天器一样


JVM还可以执行一个代码(它可能被称为字节码,但无论如何它都可以执行一个程序),并可以访问硬件资源(微处理器、内存、存储、网络)以产生输出。

这个问题可能会以基于意见的方式结束。然而,考虑到这一点,我的观点是:

你的问题没有真正意义。它融合了操作系统和运行时的用途。操作系统是虚拟化的,这允许多个操作系统相信它们运行在一个专用处理器上,而实际上有一个管理程序在下面的不同级别上运行

JVM不处理虚拟机监控程序,因为它不直接在处理器上运行;它在操作系统上运行。您可以在操作系统中并行运行应用程序,而不会出现任何问题,它们将共享一定数量的内容(主要是库,但不是JIT代码)。您不能共享JIT代码,因为JIT生成的代码具有供该程序使用的特定地址,并且您不能保证任何两个程序共享相同的地址映射

一个更有趣的问题是为什么不能有JVM处理器或操作系统。事实上,我们已经尝试过了——Sun开发的Java处理器能够在本地执行字节码(因此,如果成功的话,也许您可以使用虚拟化JVM)。然而,该处理器的开发耗时如此之长,以至于在完成时,运行为其编译的JVM的通用CPU比为此而构建的定制硬件要快,因此它是一个商业失败

这就是说,嵌入式JVM几乎无处不在——在SIM卡、芯片和pin上,在蓝光播放器中——嵌入式设备不需要虚拟化

请记住,JVM是为了让抽象代码以机顶盒的形式在未知处理器上运行而创建的,而且它在嵌入式领域已经获得了巨大的成功——尽管互联网和浏览器中的代码的出现使它成为一种通用编程语言和运行时环境。事实上,它已经持续了25年,而且没有人认为添加虚拟化是有意义的,这就引出了一个问题:为什么您认为这是一个有趣的问题?

Sun Microsystems(或后来的Oracle)是否考虑进入虚拟化市场,以及为什么,这是一个业务战略决策和历史问题。它与编程毫无关系。