- public class B 外部に触ってほしくないクラス Package xxx.bbb - public class C - Public class D yyy.jar(ライブラリを利用する側) ①適切なインタフェース定義 外部公開するパッケージの明示 公開先の明示 module-info.java import xxx.aaa.A import xxx.aaa.B import xxx.bbb.C import xxx.bbb.D module-info.java ③明示的な依存関係の宣言 利用するモジュールを明示 ②強いカプセル化 公開しているパッケージ以外は Reflectionでもアクセスできない。(※) public修飾子はあくまでもモジュー ル内でのpublicアクセスを許可する ※JVMオプション指定で回避可能
ü Module化の恩恵を受けないため、移行は比較的スムーズ Automatic Module modulepath ü 全てのパッケージがexportsされる(module-info.javaがない) ü 既存Javaライブラリは大体コレになる Named Module modulepath ü 依存関係を記載するmodule-info.javaが存在する ü 単にmoduleというとこれを指す classpath modulepath Unnamed module Automatic module Named module xxx.jar yyy.jar zzz.jar ※CLIオプション追加で参照を追加することは可能 module-info.javaあり module-info.javaなし