넷빈즈 기반인게 좀 아쉽지만, 자바9에서 새로 추가된 모듈 프로그래밍에 대하여 배우려면 필수라고 생각되는 책입니다. 강추 합니다.
유지 보수 가능한 응용 프로그램 개발을 위한 자바 모듈 프로그래밍
자바 9에서 모듈화의 도입은 엄청난 사건입니다. 자바 9에 포함된 다른 선택적인 요소와 달리 자바 플랫폼 모듈 시스템은 자바 코드의 설계와 구현에서 근본적인 변화를 의미합니다.
이 책은 단계별 접근법으로 새로운 모듈을 생성해보고 레거시 코드에서 자바 9 모듈 시스템으로 옮겨가는 방법을 다룹니다. 완전히 모듈화된 예제 코드로 새로운 기능들을 직접 실습해볼 수 있습니다. 모듈 정의를 생성하고 모듈 간 의존성을 설정하고 모듈화된 JDK에서 제공하는 내장 모듈들을 활용해볼 수 있습니다. 또한, 모듈 해석에 대해 배우고 jlink 명령으로 사용자 정의 런타임 이미지를 생성합니다.
한 단계 더 나아가 새로운 모듈 응용 프로그램을 작성하는 모범 사례를 배웁니다. 또한, 기존 자바 코드베이스를 자바 9로 업그레이드하고 라이브러리 코드 작성 시 발생할 수 있는 문제들과 자바 9 응용 프로그램을 테스트하는 방법을 알아봅니다.
CHAPTER 1 자바 9 모듈화 소개
_1.1 자바 언어의 모듈화
_1.2 패키지로 자바 개발을 다시 생각하기
_1.3 자바, 스무 해가 넘은 코드베이스
_1.4 자바 플랫폼 모듈 시스템
_1.5 프로젝트 Jigsaw
_1.6 요약
CHAPTER 2 첫 번째 자바 모듈 만들기
_2.1 JDK 설정하기
_2.2 JDK 버전 전환하기
_2.3 넷빈즈 IDE 설정하기
_2.4 자바 9 모듈
_2.5 넷빈즈 활용 모듈 만들기
_2.6 주소록 관리 프로그램
_2.7 오류 다루기
_2.8 요약
CHAPTER 3 모듈 간 의존성 다루기
_3.1 두 번째 모듈 만들기
_3.2 두 모듈 컴파일하기
_3.3 모듈 의존성 설정하기
_3.4 모듈 버전 관리
_3.5 패키지 구조 다시 생각하기
_3.6 모듈 경로 인자 이해하기
_3.7 클래스패스 다시 보기
_3.8 클래스패스 문제점 다시 보기
_3.9 요약
CHAPTER 4 모듈화 JDK 소개
_4.1 레거시 JDK 확인
_4.2 프로젝트 Jigsaw로 들어가기
_4.3 플랫폼 모듈화
_4.4 관찰대상 모듈
_4.5 두 가지 문제점 다시 보기
_4.6 요약
CHAPTER 5 플랫폼 API 사용하기
_5.1 로깅 기능 추가
_5.2 XML 파일에서 주소록 정보 읽기
_5.3 자바 FX로 UI 추가하기
_5.4 요약
CHAPTER 6 가독성과 접근성
_6.1 가독성
_6.2 접근성
_6.3 모듈화 비틀기
_6.4 주소록 관리 프로그램에 개념 적용하기
_6.5 요약
CHAPTER 7 서비스 소개
_7.1 결합의 문제
_7.2 서비스 이해하기
_7. 고급 서비스
_7.4 서비스와 모듈 시스템의 목적
_7.5 요약
CHAPTER 8 링킹 이해하기와 jlink 활용하기
_8.1 모듈 해석
_8.2 JDK 상태 다시 보기
_8.3 jlink를 활용한 링킹
_8.4 모듈 JAR 파일 만들기
_8.5 요약
CHAPTER 9 모듈 설계 패턴과 전략
_9.1 모듈 설계하기
_9.2 관심사에 따른 모듈화
_9.3 계층 구조로 모듈화
_9.4 변화 패턴으로 모듈화
_9.5 API 설계하기
_9.6 자바 모듈의 코딩 패턴과 전략
_9.7 요약
CHAPTER 10 자바 9를 위한 코드 준비하기
_10.1 자바 9 마이그레이션 시작
_10.2 자바 8 기반의 응용 프로그램 예제
_10.3 자바 9 컴파일러와 런타임 사용하기
_10.4 영향력 이해하기
_10.5 추천 전략
_10.6 요약
CHAPTER 11 자바 9로 마이그레이션하기
_11.1 마이그레이션 목표 이해하기
_11.2 마이그레이션 시작하기
_11.3 좀 더 큰 코드베이스 다루기
_11.4 라이브러리 마이그레이션하기
_11.5 여러 자바 버전에 대응하는 라이브러리 빌드하기
_11.6 요약
CHAPTER 12 빌드 도구 활용과 자바 모듈 테스트
_12.1 아파치 메이븐과 통합하기
_12.2 자바 9로 유닛 테스트하기
_12.3 요약
_12.4 마무리
이 책은 자바로 모듈 프로그래밍을 할 수 있도록 자세한 지침과 따라 해볼 수 있는 실습 예제를 제공합니다. 이 책에 있는 코드를 읽고 따라 해보면 자바 9 모듈화의 개념과 기능, 플랫폼에 미치는 영향을 이해하게 되고, 모듈 응용 프로그램을 만드는 데 새로운 패러다임을 직접 활용할 수 있습니다.
이 책의 주요 목표는 자바 모듈화에 대한 개념과 중요 내용을 깊게 이해하는 것입니다. 장 순서는 중간에 모르는 내용이 없도록 세심하게 고려하였습니다. 그래서 가능하면 처음부터 정독하기를 추천하지만, 이미 특정 주제를 알고 있다면 건너뛰어도 무방합니다.
장별 다루는 내용
<1장 자바 9 모듈화 소개>
자바 코드의 구조와 관리 상태를 다룹니다. 자바 프로그래밍을 하는 사람은 누구나 익숙한 JDK를 예로 들어 시간이 흐르면서 커져만 가는 코드베이스를 관리하고 조직하면서 겪는 도전 과제와 위험성을 개괄적으로 서술합니다. 그리고 프로젝트 Jigsaw(직소)를 소개하고 앞서 설명한 도전 과제를 모듈화 개념으로 어떻게 해결하는지 설명합니다.
<2장 첫 번째 자바 모듈 만들기>
모듈 구조를 사용하지 않는 샘플 코드로 한 단계씩 첫 번째 자바 9 모듈을 만들어갑니다. module 키워드와 module-info.java 클래스, 자바 모듈을 어떻게 정의하는지 알아봅니다. 그다음 모듈을 컴파일하고 실행해봅니다. .class 파일의 구조와 런타임이 어떻게 모듈 구조를 추론하여 동일한 모듈 정의를 사용하는지 알아봅니다.
<3장 모듈 간 의존성 다루기>
이 장에서는 두 번째 모듈을 만들고 모듈끼리 서로 참조하도록 합니다. 자바 9를 활용하여 이러한 관계를 정의하며 멀티 모듈 응용 프로그램을 컴파일하고 실행하는 방법을 배웁니다.
<4장 모듈화 JDK 소개>
플랫폼의 모듈화라는 JDK에 가해진 중요한 변화를 배웁니다. JDK를 설치할 때 기본으로 들어 있는 모듈을 알아봅니다. 이러한 모듈에 관해 더 많은 정보를 찾고 얻을 수 있는 도구와 기법에 대해서도 알아봅니다.
<5장 플랫폼 API 사용하기>
실습 형태의 단계별 학습으로 예제 응용 프로그램에서 플랫폼 모듈을 사용하는 방법을 배웁니다. 이러한 플랫폼 모듈을 참조할 때 겪을 수 있는 몇 가지 도전 과제와 그 해결 방안을 이해할 수 있습니다.
<6장 가독성과 접근성>
모듈 간 의존성을 상세하게 알아보고 모듈과 라이브러리의 캡슐화 수준을 통제하는 방법을 소개합니다. 자바 요소의 캡슐화와 가용성에 영향을 주는 새로운 조건인 접근성과 가독성을 살펴봅니다.
<7장 서비스 소개>
예제 응용 프로그램에서 두 모듈 사이의 강한 결합도를 알아보고 이것이 어떻게 확장성을 저해하고 새로운 모듈을 끼워 넣는 데 어려움을 주는지 이야기합니다. 또한, 새롭게 추가된 자바 9 서비스를 소개하고 구현 클래스를 캡슐화하기 위한 단계별 지침을 제공하며 ServiceLoader API를 호출하여 이들을 어떻게 찾는지 알아봅니다.
<8장 링킹 이해하기와 jlink 활용하기>
자바 9로 개발하는 과정에서 정적 링킹 단계를 소개하고 이것이 어떻게 동작하는지 알아봅니다. 자바 9로 모듈을 만들 때 링킹이 하는 중요한 역할을 설명합니다. 그리고 예제 프로젝트용 런타임 이미지를 만들고 최적화하고 실행하기 위한 단계별 지침을 제공합니다.
<9장 모듈 설계 패턴과 전략>
자바로 모듈 응용 프로그램을 만들 때 활용할 수 있는 몇 가지 모범 사례를 다룹니다. 자바 모듈 시스템의 기능과 동작 방식에 익숙해졌으므로 다음 질문은 언제, 어떻게 활용하는가입니다. 모듈의 범위와 경계를 정립하고 좋은 모듈 인터페이스를 정의하며 모듈 응용 프로그램을 만들 때 맞닥뜨리는 일반적인 몇 가지 도전 과제의 해결 방안을 소개합니다.
<10장 자바 9를 위한 코드 준비하기>
오래된 예제 코드베이스를 자바 9로 마이그레이션하는 방법을 알아봅니다. 자바 모듈의 선택적 특성과 클래스패스 기반 코드가 어떻게 자동으로 이름 모듈로 할당되는지 알아봅니다. 그리고 자바 9에서 단계적으로 레거시 코드를 컴파일하고 실행해봅니다. 또한, 캡슐화된 타입을 사용할 때 발생하는 문제를 처리하거나 이를 피하는 방법을 알아봅니다.
<11장 자바 9로 마이그레이션하기>
자바 9에서 제공하는 새로운 모듈 시스템으로 레거시 코드를 마이그레이션하는 방법을 알아봅니다. 코드에 대한 마이그레이션 전략을 세우는 방법을 배우고 자바 9와 호환되지 않는 의존 관계를 어떻게 다루어야 할지 배웁니다. 자동화 모듈이나 명령줄 덮어쓰기 같이 마이그레이션을 보조하기 위해 설계된 자바 9의 기능도 알아봅니다.
<12장 빌드 도구 활용과 자바 모듈 테스트>
빌드 도구 통합과 유닛 테스트라는 자바 프로그래밍의 중요한 영역을 다룹니다. 메이븐으로 프로젝트를 구조화하고 자바 9 모듈 응용 프로그램에 메이븐의 멀티 모듈 프로젝트 개념을 어떻게 맞추는지 알아봅니다. 마지막으로 JUnit을 활용한 자바 모듈 테스트 방법을 알아봅니다.
다케다 하루키 , 와타나베 유지 , 사토 다이치 , 다다 다케아키 , 가미카와 노부히코
자바 8 인 액션 : 람다, 스트림, 함수형 프로그래밍으로 새로워진 자바 마스터하기
라울-게이브리얼 우르마 , 마리오 푸스코 , 앨런 마이크로프트