これは完全なリストではない可能性が高く、私の知る限り最終決定されたものはありませんが、いくつか見つけました。
module
、exports
、provides
、uses
、with
、to
およびrequires
;もあります。ここで説明:
モジュール システムは、ServiceLoader::load メソッドの呼び出しについてモジュール アーティファクトのクラス ファイルをスキャンすることで、サービスの使用を識別できますが、これは遅く、信頼性が低くなります。モジュールが特定のサービスを使用することは、そのモジュールの定義の基本的な側面であるため、効率と明確さの両方のために、モジュールの宣言で uses 句を使用してそれを表現します。
module java.sql {
requires public java.logging;
requires public java.xml;
exports java.sql;
exports javax.sql;
exports javax.transaction.xa;
uses java.sql.Driver;
}
モジュール システムは、現在 ServiceLoader クラスが行っているように、META-INF/services リソース エントリのモジュール アーティファクトをスキャンすることにより、サービス プロバイダーを識別できます。ただし、モジュールが特定のサービスの実装を提供することは同様に基本的であるため、モジュールの宣言で provides 句を使用してそれを表現します。
module com.mysql.jdbc {
requires java.sql;
requires org.slf4j;
exports com.mysql.jdbc;
provides java.sql.Driver with com.mysql.jdbc.Driver;
}
...
module java.base {
...
exports sun.reflect to
java.corba,
java.logging,
java.sql,
java.sql.rowset,
jdk.scripting.nashorn;
}
またview
、permits
:
大規模なソフトウェア システムでは、同じモジュールの複数のビューを定義すると便利なことがよくあります。1 つのビューは、他のモジュールによる一般的な使用のために宣言できますが、別のビューは、密接に関連するモジュールの選択されたセットによる使用のみを目的とした内部インターフェイスへのアクセスを提供します。
たとえば、JNDI では、モジュール宣言で指定されているように、com.sun.jndi.toolkit.url が cosnaming モジュールと kerberos モジュールに対してのみ表示されるようにします。
view jdk.jndi.internal {
exports com.sun.jndi.toolkit.url.*;
exports sun.net.dns.*;
permits jdk.cosnaming;
permits jdk.kerberos;
}
このようにして、モジュールの境界をより柔軟に定義できます。
の言及も聞いたことがありoptional
ます。