14. 자바 모듈 시스템
주요내용
- 자바 모듈 시스템을 설계한 이유
- 주요 구조: 모듈 declarations, requires, exports 지시어
- 기존 자바 아카이브(JAR)에 적용되는 자동 모듈
- 모듈화와 JDK 라이브러리
- 모듈과 메이븐 빌드
- 주요 구조외 모듈 지시어 간단 요약
#
자바 모듈 시스템을 설계한 이유- 패키지와 JAR 수준에서 캡슐화를 거의 지원하지 않음
- 클래스 경로의 한계
- 클래스 경로에 같은 클래스를 구분하는 버전 개념이 없음
- 명시적 의존성 지원 X (다른 JAR의 클래스를 사용하라고 명시적으로 지정할 수 없음)
#
자바 모듈 시스템패키징 명령어 정리
- 실행 옵션
--module-path
: 어떤 모듈을 로드할 지 지정--module
: 실행할 메인 모듈과 클래스 지정
#
exportsmodule-info.java
- 기본적으로 모듈 내의 모든 것은 캡슐화 됨
- 화이트 리스트 기반, 명시적으로 공개할 것을
exports
로 지정해주어야 함
#
requiresmodule-info.java
- requires를 통해 해당 모듈에 필요한 모듈을 명시할 수 있음
#
컨벤션도메인의 역순으로 모듈(패키지)를 구성하는 것이 권장 모듈 이름 컨벤션
#
자동 모듈외부 의존성을 추가할 때, 불러오는 JAR 는 자바 모듈 기능을 사용하고 있지 않더라도 자동 모듈
이라는 형태로 적절하게 변환되어 사용 함
#
예제https://github.com/DaehunGwak/study-java/tree/main/modernjava-module-2/expenses