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 여러 모듈 활용하기

잘 해보자...?

0개의 댓글

Powered by GraphCDN, the GraphQL CDN