exports와 opens의 접근 목적

일반 code dependency와 reflection 접근을 섞지 않는다.

exports

다른 module source가 public API를 사용한다

strong API

opens

framework가 deep reflection으로 member에 접근한다

runtime reflection
최소 권한필요 package와 target module만 지정한다

핵심: 오류 회피를 위해 전체 module을 open하면 encapsulation 가치가 줄어든다.