Chapter 14. 자바 모듈 시스템
14.1 압력: 소프트웨어 유추
관심사분리
- Separation of Concerns: 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙
- 관심사: 컴퓨터 프로그램 코드에 영향을 미치는 정보의 집합을 의미한다.
- 표현 계층, 비즈니스 로직 계층, 데이터 접근 계층, 퍼시스턴스 계층과 같이 관심사 분리 구현의 다른 예시이다.
정보 은닉
- 정보 은닉: 세부 구현을 숨기도록 장려하는 원칙
- 캡슐화: 특정 코드 조각이 애플리케이션의 다른 부분과 고립되어 있음을 의미한다.
- 오브젝트의 변화율과 일맥상통한다.
- if문과 같은 분기를 개발자의 코드가 아닌 클라이언트 계층에서 처리하도록 유도하거나,
- 인터페이스와 제네릭을 통하여 아예 컴파일러단으로 책임을 돌리는 방법이 있다.
자바 소프트웨어
?
14.2 자바 모듈 시스템을 설계한 이유
모듈화의 한계
- 클래스 수준에서는 접근 제한자와 캡슐화를 지원했으나
- 패키지, JAR 수준에서는 캡슐화를 거의 지원하지 않았다.
제한된 가시성 제어, 클래스 경로
거대한 JDK
- javac, java, jdk 라이브러리, 컬렉션, 스트림등을 포함한다.
14.3 자바 모듈: 큰 그림
모듈 디스크립터.
14.4 자바 모듈 시스템으로 애플리케이션 개발하기
애플리케이션 셋업
- 다양한 소스에서 데이터를 읽음: Reader, HttpReader, FileReader
- 다양한 포맷으로 구성된 데이터를 파싱: Parser, JSONParser
- 도메인 객체를 구체화: Expense
- 통계를 계산하고 반환: SummaryCalculator, SummaryStatistics
- 다양한 기능을 분리 조정: ExpensesApplication
세부적인 모듈화와 거친 모듈화
시스템을 실용적으로 분해하면서 진화하는 소프트웨어를 만들어라...
쉽고 고치기 쉬운 수준으로 적절하게 모듈화 해라
자바 모듈 시스템 기초
?
14.5 여러 모듈 활용하기
잘 해보자...?