Unnamed Classes and Instance main Methods (Preview)

Changes to the Java® Virtual Machine Specification • Version 21.0.1+12-LTS-29

本文档描述了对Java虚拟机规范的更改,以支持Java SE 21的预览功能“未命名类和实例main方法”。有关该功能的概述,请参阅JEP 445

一份配套文档描述了对Java语言规范的更改,以支持未命名类和实例main方法。

更改是针对现有JLS部分描述的。新增的文本以这种方式表示,删除的文本以 这种方式表示。必要时,解释和讨论将放在灰色框中。

变更日志:

2023-05-15:首次发布初稿

第5章:加载、链接和初始化

5.2 Java虚拟机启动

Java虚拟机通过使用引导类加载器(5.3.1)或用户定义的类加载器(5.3.2)创建初始类或接口来启动。然后,Java虚拟机链接初始类或接口,初始化它,并调用一个main方法,如(JLS 12.1.4)中描述的。对该方法的调用驱动所有后续执行。执行构成main方法的Java虚拟机指令可能导致链接(因此创建)其他类和接口,以及调用其他方法。

初始类或接口的指定方式是与实现相关的。例如,初始类或接口可以作为命令行参数提供。另外,Java虚拟机的实现本身可以提供一个设置类加载器的初始类,该类进而加载一个应用程序。只要与前一段中给定的规范一致,初始类或接口的其他选择是可能的。

相比之下,初始类或接口的main方法的调用方式不是以与实现相关的方式指定的,而是根据(JLS 12.1.4)中给出的与实现无关的规则进行。