module descriptor의 공개 계약

module graph에서 dependency와 접근 범위를 구분한다.

module-info

requires

읽어야 할 module

dependency

exports

compile·runtime public package

API

opens

reflection 접근 package

runtime

uses·provides

service 소비·구현 등록

SPI

핵심: public class라도 package가 exports되지 않으면 다른 named module에서 접근할 수 없다.