名前のないクラスおよびインスタンスのmainメソッド(プレビュー)

Java®仮想マシン仕様バージョン Version 21.0.2+10-LTS-54への変更

このドキュメントでは、Java SE 21プレビュー機能である名前のないクラスおよびインスタンスのmainメソッドをサポートするためのJava仮想マシン仕様に対する変更について説明します。この機能の概要は、JEP 445を参照してください。

コンパニオン・ドキュメントでは、名前のないクラスおよびインタフェースのmainメソッドをサポートするためのJava言語仕様に必要な変更について説明します。

変更は、JLSの既存のセクションについて説明しています。新しいテキストはこのように示され、削除されたテキストはこのように示されます。必要に応じて、説明と考察が端の方にグレーのボックスで囲まれて記載されています。

変更ログ:

2023-05-15: 初稿リリース

第5章: ロード、リンクおよび初期化

5.2 Java仮想マシンの起動

Java仮想マシンは、ブートストラップ・クラス・ローダー(5.3.1)またはユーザー定義クラス・ローダー(5.3.2)を使用して初期クラスまたはインタフェースを作成して起動します。次に、Java仮想マシンは、初期クラスまたはインタフェースをリンクして初期化し、(JLS 12.1.4)で説明されているように、public staticメソッドvoid main(String[])mainメソッドを起動します。このメソッドを呼び出すと、それ以上の実行がすべて行われます。mainメソッドを構成するJava仮想マシンの命令を実行すると、追加のクラスおよびインタフェースがリンク(および最終的には作成)され、追加のメソッドが呼び出される可能性があります。

初期クラスまたはインタフェースは、実装に依存する方法で指定されます。たとえば、初期クラスまたはインタフェースはコマンドライン引数として指定できます。あるいは、Java仮想マシンの実装自体が、クラス・ローダーを設定し、その後にアプリケーションをロードする初期クラスを提供することもあります。初期クラスまたはインタフェースのその他の選択は、前の段落で示した指定と矛盾しないかぎり可能です。

一方、初期クラスまたはインタフェースのmainメソッドの呼出しは、実装に依存する方法では指定されませんが、(JLS 12.1.4)に示されている実装に依存しないルールに従って処理されます。