자바 9 모듈화(Java 9 Modularity) (Java 9에서 모듈형 애플리케이션을 작성하는 데 필요한 패턴과 사례를 설명)

자바 9 모듈화(Java 9 Modularity) (Java 9에서 모듈형 애플리케이션을 작성하는 데 필요한 패턴과 사례를 설명)

$25.07
Description
Java 9에서 모듈형 애플리케이션을 만드는데 필요한 패턴과 사례
이 책은 애플리케이션의 설계와 구조를 개선하려는 Java 개발자를 위한 책이다. Java 모듈시스템은 Java 애플리케이션을 설계하고 빌드하는 방법을 개선한다.
모듈을 즉시 사용하지않더라도 JDK 자체의 모듈화를 이해하는 것이 중요한 첫걸음이다. 책의 첫 번째 파트에서모듈을 이해하고나면, 다음 파트의 마이그레이션에 대한 설명을 접하게 된다.
이 책은 Java에 대한 일반적인 소개를 하지 않는다. 비교적 큰 규모의 Java 애플리케이션을 개발한 경험이 있다고 가정하고 설명을 한다. 대규모의 애플리케이션을 개발하는 경우 모듈화가 점점 중요해지고 있다.
경험 많은 Java 개발자는 클래스패스로 인해 발생하는 문제점을 인식하고 있으며 이는 모듈시스템과 모듈의 기능을 이해하는데 도움이 될 것이다.

이 책은 세 파트로 나누어져 있다.
1. Java 모듈시스템 소개
2. 마이그레이션
3. 모듈형 개발 도구

첫 번째 파트에서는 모듈시스템 사용방법을 설명한다. 모듈형 JDK를 시작으로, 사용자 고유의 모듈을 생성한다. 다음으로는 모듈의 디커플링을 가능하게 하는 서비스에 대해 설명한다. 첫 번째 파트는 모듈화 패턴에 대한 논의와 어떻게 모듈을 사용하여 유지보수성과 확장성을 극대화할 수 있는지에 대하여 설명한다.

두 번째 파트는 마이그레이션에 관한 것이다. 대부분의 경우 모듈시스템용으로 설계되지 않은 Java 라이브러리를 사용하는 기존 Java 코드가 남아있을 것이다. 이 파트에서는 기존 코드를 모듈로 마이그레이션하는 방법과 아직 모듈로 변환되지 않은 기존 라이브러리를 사용하는 방법을 배우게된다.
라이브러리의 작성자 또는 유지관리자인 경우, 라이브러리에모듈을 지원할 수 있도록 수정하는 방법을 설명한다.

세 번째 파트는 도구들에 관한 것이다. 이 파트에서는 IDE 및 빌드 도구의 현재 상황에 대해 알아본다. 또한 모듈을 테스트하는 방법도 배우게 될 것이다. 모듈은 새로운 도전 과제를 제공할 뿐 아니라 (테스트)단위 테스트 기회이기도 하다.
마지막으로 모듈 시스템의 또 다른 흥미로운 기능인 “링크(linking)”에 대해서도 알아 볼 것이다. 이 기능을 사용하면최적화된 사용자정의 런타임 이미지를 만들 수 있으므로 모듈을 사용하여 Java 애플리케이션을 제공하는 방법을 변경할 수 있다.
저자

샌더맥

저자샌더맥
네덜란드의Luminis에서Fellow로일하고있으며,주로JVM에서모듈형및확장가능한소프트웨어를개발하지만필요한경우TypeScript를사용하고있다.
열정적인연사이며블로그http://branchandbound.net와Pluralsight강사로서지식을공유하는것을좋아한다.

목차

Part1.Java모듈시스템소개
1장.모듈화관련이슈들
모듈화는무엇인가?
Java9이전버전살펴보기
JAR가모듈로사용될수있을까?
클래스패스지옥
Java9모듈

2장.모듈과모듈형JDK
모듈형JDK
모듈디스크립터(ModuleDescriptor)
가독성(Readability)
접근성
묵시적가독성
제한적인익스포트(qualifiedexports)
모듈해석(resolution)과모듈패스
모듈화되지않은코드에서모듈형JDK사용하기

3장.모듈개발하기
첫번째모듈만들기
모듈구조
모듈이름정하기
컴파일하기
패키징하기
모듈실행하기
모듈패스
모듈연결하기
혼자동작하는모듈은없다
EasyText예제알아보기
두개의모듈
플랫폼모듈을사용하여동작하기
적합한플랫폼모듈찾기
GUI모듈만들기
캡슐화의한계
인터페이스와인스턴스화

4장.서비스
팩토리패턴
구현을숨기기위한서비스
서비스제공하기
서비스사용하기
서비스라이프사이클
서비스Provider메소드
팩토리패턴재검토
디폴트서비스구현
서비스구현선택
서비스타입검사및게으른인스턴스화
서비스바인딩을사용한모듈해석
서비스및연결하기

5장.모듈화패턴
모듈바운더리정하기
린(lean)모듈
API모듈
API모듈은어떻게구성해야할까?
묵시적가독성
디폴트구현이있는API모듈
집합모듈
모듈에Fa?ade패턴적용하기
안전하게모듈분리하기
순환의존성피하기
분할패키지
순환의존성제거하기
선택적의존성
컴파일시점의존성
서비스를이용한선택적의존성구현
모듈버전관리
모듈해석과버전
리소스캡슐화
모듈에서리소스로딩하기
모듈사이의리소스로드
ResourceBundles클래스사용하기

6장.고급모듈화패턴
강력한캡슐화재검토
딥리플렉션
오픈모듈과패키지
의존성주입
모듈에대한리플렉션
모듈읽기
모듈수정하기
어노테이션
컨테이너애플리케이션패턴
레이어및설정
레이어에서의클래스로딩
플러그인아키텍처
컨테이너아키텍처
컨테이너에서플랫폼모듈해석

Part2.마이그레이션
7장.모듈로변환하지않고마이그레이션하기
클래스패스는없어졌지만,여전히사용된다
라이브러리,강력한캡슐화그리고JDK9클래스패스
컴파일및캡슐화된API
삭제된타입
JAXB및기타JavaEEAPI사용
jdk.unsupported모듈
기타변경사항

8장.모듈로마이그레이션
마이그레이션전략
간단한예제살펴보기
클래스패스와모듈패스같이사용하기
자동모듈
오픈패키지
오픈모듈
캡슐화해제를위한VM인수
자동모듈과클래스패스
Jdeps사용하기
동적코드로딩
분할패키지

9장.마이그레이션케이스스터디:Spring과Hibernate
애플리케이션에익숙해지기
Java9에서클래스패스기반으로실행하기
모듈설정하기
자동모듈사용하기
Java플랫폼의존성및자동모듈
리플렉션을위해패키지오픈하기
불법적인접근수정하기
다중모듈에대한리팩터링
10장.라이브러리마이그레이션
모듈화이전단계
라이브러리모듈이름선택하기
모듈디스크립터만들기
모듈디스크립터로라이브러리업데이트하기
Java구버전타겟팅하기
라이브러리모듈의존성
내부의존성
외부의존성
다양한Java버전타겟팅하기
다중릴리즈JAR
모듈형다중릴리즈JAR

Part3모듈개발을위한도구
11장.빌드도구와IDE
ApacheMaven
다중모듈프로젝트
EasyText에ApacheMaven적용하기
ApacheMaven으로모듈형애플리케이션실행하기
Gradle
IDE

12장.모듈테스트
블랙박스테스트
Junit을이용한블랙박스테스트
화이트박스테스트
테스트도구들

13장.사용자정의런타임이미지를이용한사이즈줄이기
정적링크와동적링크
jlink사용하기
적합한서비스Provider모듈찾기
링크시점의모듈해석
클래스패스기반의어플리케이션을위한jlink
사이즈줄이기
성능향상하기
크로스타겟팅을위한런타임이미지

14장.모듈화의미래
OSGi
JavaEE
마이크로서비스