你能在没有操作系统的计算机上运行JVM吗?

6
我最近看到一篇文章说Java可以在任何地方运行,例如在烤面包机上。于是我想知道,能否在没有操作系统的全新计算机/笔记本电脑上从磁盘或USB驱动器中运行Java虚拟机和Java程序?如果可以,那么在Windows上编写的Java程序能否在无操作系统计算机上的JVM上运行呢?
我尝试在Google上搜索,但没有找到相关信息。
谢谢

"Toaster" 意味着 J2ME(用于嵌入式计算的 Java 微型版)。可能不是人们通常所说的 Java。(我认为还有一种更紧凑的版本可在智能卡上运行,例如 Apple Pay 芯片)。 - Thilo
1
或者Android(它是开源的)。J2ME在今天已经相当老了。 - markspace
4
可以想象你可以构建一个将虚拟机作为核心实现的操作系统,但是现在,你可能更有可能看到的是一个精简版的Linux内核,可能带有精简版的Java... - MadProgrammer
1
有一些处理器使用相同的指令集,我一直认为JOP是最酷的。 - Jason C
理论上说,是的,你可以设计一台计算机以JVM作为操作系统运行,这样JVM就可以直接与硬件交互。但通常情况下,除非你正在构建一个资源有限的专用嵌入式设备,否则这是不切实际的。 - CharlieS
2个回答

14

Java规范并不要求JVM在操作系统之上运行;这也是规范中小心措辞的原因之一。BEA的裸机项目是一个JVM的尝试,可以直接在硬件上运行而无需操作系统,而OSv则正在开发一种JVM,可以在虚拟机管理程序上运行,但不需要传统操作系统。

此外,嵌入式Java实现(如智能卡中的实现)通常不使用运行时JVM。相反,JVM是一个提前编译器,将字节码翻译成目标平台的机器代码。


裸机。现在我明白你的意思了。从来不知道那是可能的-实际上。谢谢 :) - TheLostMind

0
JMV在各种操作系统中都有很多实现。但它是一个使用操作系统的程序...所以你必须拥有一个才能在其上运行JVM。
之后,您编写的Java程序可以在任何操作系统上的任何JVM上运行...

2
事实上是错误的。JavaCard不需要主机操作系统,至少有几个供应商已经为旧式JEE应用服务器制作了裸机JVM。 - chrylis -cautiouslyoptimistic-
@chrylis - 看这个 - TheLostMind
@TheLostMind 从概念上讲,JCVM在卡片操作系统上运行。实际上,我只听说过AOT编译的JCVM。 - chrylis -cautiouslyoptimistic-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接