为 Java 编写的引导加载程序

问题描述

是否有为在没有操作系统的情况下引导 Java 虚拟机而编写的引导加载程序?据我所知Java虚拟机可以在机器上独立运行,不需要操作系统的帮助。

解决方法

Java 定义了访客语言,而不是主机/JVM。

您需要编写一个 JVM,以便在您想要运行它的任何机器的裸机上运行。 (即成为操作系统内核以及 JVM、处理中断等)。因此,引导加载程序无法加载称为“Java”的通用内容。

像 OpenJDK / HotSpot 这样的主流 JVM 不是编写为作为内核工作,只能在一些现有的主流操作系统下运行。但正如您发现的,有一些:Can you run JVM on a computer with no operating system?

即使对于特定平台,内核需要引导加载程序执行的操作也可能取决于内核。有一些标准,比如 x86 的多重引导,定义了一种内核文件格式,像 GRUB 这样的引导加载程序知道如何识别和加载,否则你可能希望裸机 JVM 带有自己的自定义引导加载程序,尤其是在 x86 PC 以外的平台上。或者可以作为“EFI 应用程序”启动。