본문 바로가기
[Review]/Book

[도서 리뷰] Java 9 모듈 프로그래밍

by 반가운 해피빈이 2018. 5. 25.

어느덧 한빛미디어의 12번째 도서 리뷰이다.


약 한달에 한 권 정도 진행을 한 것 같은데...


물론 텀이 중간에 더 길어졌던 적도 있어서 1년이 넘은 기간동안 리뷰를 진행했었다. 꾸준히 리뷰를 할 수 있어서 좋았고, 앞으로도 기회가 된다면 더 좋은 기술서적들을 읽을 수 있는 기회를 받고 싶다.


사설은 그쯤하고, 본 책의 리뷰를 진행하겠다.



이 책의 제목은 당연히 "Java 9 모듈 프로그래밍"이다.


Java 9 모듈 프로그래밍
국내도서
저자 : 코시크 코타갈(Koushik Kothagal) / 유동환역
출판 : 한빛미디어 2018.05.01
상세보기



부제로는 "자바 모듈 프로그래밍으로 재사용 가능하고 관리하기 쉬운 코드 작성하기"이다.


기존에 자바 프로그래밍도 물론 재사용 가능하고 관리하기가 쉽다. 하지만, 여기에서 붙는 단서는 모듈 프로그래밍 이라는 말이다. 그렇다면, 모듈 프로그래밍이 뭔지 제대로 정의하고 그것에 대한 구체적인 사례와 설명이 있을것이라는 기대를 제목에서 하게 만든다.



samsung | SM-G955N | Normal program | Pattern | 1/10sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:15:44


표지는 심플하다. Java라는 글자보다는 역시 9에 집중하게 된다. Java를 잘 안다는 개발자로서 살아왔지만, Java가 계속 발전하고 있다는 사실도 알지만... Java 8에서의 Lambda 특성 이후에 Java 9, 그리고 Java 10에 이르기까지.. 그 특징들은 사실 하나도 모르고 있었다.


그 중 Java 9를 이 책을 통해 알 수 있을 것이라는 기대가 생겼다.



samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-160 | Flash did not fire | 2018:05:25 01:16:25


이 책의 초판발행일은 뜨끈뜨끈한 2018년 5월 1일이다. 아직도 5월은 채 다 지나지 않았는데.. 참 신선한 책이다.


물론 번역서이기 때문에, 이 책의 내용 자체가 그렇게 뜨끈뜨끈하다고 볼 순 없지만, 영문 자체의 내용을 직접 접하는 것보다는 역시 한글이 친숙하다.




samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-160 | Flash did not fire | 2018:05:25 01:16:47


각 챕터별 설명에 대한 내용이다.


1장부터 12장까지 어떻게 구성되어 있는지 간략한 설명으로 편하게 다가갈 수 있게 돕고 있다.




samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:17:07


구성은 다음과 같다.


총 12개의 Chapter로 구성되어 있다.


CHAPTER 1. 자바 9 모듈화 소개

CHAPTER 2. 첫 번째 자바 모듈 만들기

CHAPTER 3. 모듈 간 의존성 다루기

CHAPTER 4. 모듈화 JDK 소개

CHAPTER 5. 플랫폼 API 사용하기

CHAPTER 6. 가독성과 접근성

CHAPTER 7. 서비스 소개

CHAPTER 8. 링킹 이해하기와 jlink 활용하기

CHAPTER 9. 모듈 설계 패턴과 전략

CHAPTER 10. 자바 9를 위한 코드 준비하기

CHAPTER 11. 자바 9로 마이그레이션 하기

CHAPTER 12. 빌드 도구 활용과 자바 모듈 테스트



전반적인 흐름을 유추할 수 있는 것은 Java 9의 큰 변화인 모듈 프로그래밍에 대한 초점을 맞추면서도, 그 주변 기능이나 변화에 대한 부분도 놓치지 않고 진행하고 있음이 보인다. 사실 Java 7하면 기억나는 것이 NIO, 그리고 Java 8 하면 기억나는 것이 Lambda였던 것처럼, 이젠 Java 9에 대한 부분도 "모듈 프로그래밍"이라는 feature를 각인시키려는 노력이 보이는 것이다. 그리고 그것을 어떻게 실제로 기존 프로젝트 및 신규 프로젝트에 적용할 수 있는지 구체적으로 예시를 들어 설명하고 있다는 것을 알 수 있다.




samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:17:38


챕터의 서두이다. 별도의 챕터별 표지는 없다. 다만, 주요로 다룰 내용을 먼저 나열하여, 이 챕터에서 학습해야 하는 부분을 알려주고 있다.


그리고 필요할 때마다 옮긴이의 주석을 통해 이해를 돕고자 노력한 부분도 보인다.




samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:18:01


사실 자바 9의 모듈 프로그래밍의 필요성이 매우 중요하다. 사실 그 필요성이 크게 와 닿지 않으면 아무리 좋은 기능이라 하더라도 친숙한 기존의 개발 방법대로 개발할 것이다. 하지만, 여기에서는 필요성을 느낄 수 있도록 잭과 아미트라는 개발자 및 배포 엔지니어를 예를 들며 어떠한 상황에서 모듈 프로그래밍이 필요한지 언급하고 있다. 1장을 제대로 읽었다면, 이제 자바 9의 모듈 프로그래밍을 배우고 싶어할 것이다. 그렇다면, 2장으로 아주 부드럽게 넘어갈 수 있게 된다.



samsung | SM-G955N | Normal program | Pattern | 1/40sec | F/1.7 | 0.00 EV | 4.2mm | ISO-160 | Flash did not fire | 2018:05:25 01:18:31


새로운 모듈을 만드는 개념에 대해서 절차를 정확하게 명시해준다.


많은 이야기를 하더라도 이러한 요약이 없으면, 어떤 절차로 진행해야하는지 사실 좀 막막할 때가 있다.


하지만, 그런 수순을 밟지 않도록 큰 부분에서 흐름을 알려주고 있기 때문에 도움이 된다. 물론 9장에서는 설계 패턴 및 전략에 대한 부분까지 나오기 때문에, 이 절차 이전에도 어떻게 디자인을 할 것인가를 하는 고민에서 해방시켜 주기도 한다.



samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:18:54


JDK를 설치하는 과정이다. 당연하게 9.0에 대해서 설치하게 된다.



samsung | SM-G955N | Normal program | Pattern | 1/40sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:19:47


이 책에서는 넷빈즈를 기준으로 설명한다.


역자 주에 따르면 인텔리J도 지원은 하지만, 폴더 구조가 자바 표준과는 다르다고 하여 넷빈즈를 사용하였다고 한다. 하지만 아무래도 점유율이 높지 않은 넷빈즈는 어색하다. 최소한 이클립스, 아니면 인텔리J를 이용했다면, 좀 더 실습하기 편하지 않았을까 생각을 한다. 하지만, 어차피 숙련된 개발자라면 뭐 툴이 중요한가.



samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:20:18


참고로 모듈 설계하는 부분에 대한 챕터이다. 자바 9를 배우려는 사람은 아마도 중급 이상의 개발자일 것이고, 당연히 설계도 주 업무에 해당할 것이다. 그래서 이 부분이 있는게 매우 고맙고 유용하다.



samsung | SM-G955N | Normal program | Pattern | 1/40sec | F/1.7 | 0.00 EV | 4.2mm | ISO-160 | Flash did not fire | 2018:05:25 01:20:48


또한 하위버전에서의 호환성을 대응할 수 있도록 하는 방법도 언급하였다. 바로 Multi-release JAR라는 방법을 제공하기 때문에 쉽다는 것이다.

사실 자바는 JDK 5.0부터 JDK 9.0까지 범위가 너무 다양하다.

금융권처럼 너무 기존 시스템을 바꾸기 어려운 조직에서는 JDK 5.0을 쓰는 곳도 보았기 때문에 무시할 수가 없다.


따라서 이런 경우 유용하게 쓸 수 있는 개념이 될 것이다.

실제로 이 multi-release가 버전 제한이 있는지, 기능적으로는 어떤 제한이 있는지에 대해서는 좀 더 살펴봐야 알것 같다.

그래도, 이제까지는 버전이 맞지 않으면 구동 불가했던 부분에서, 이러한 기능이 추가되었다는것은 매우 환영할만한 일이다.



samsung | SM-G955N | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-200 | Flash did not fire | 2018:05:25 01:21:18


이 책은 자바를 관심있어 하는 사람, 그리고 자바를 이용하여 실무에서 근무하는 사람들에게 도움이 되는 책이다.


안드로이드처럼 내 마음대로 Java 버전을 선택할 수 없는 사람 입장에서는 좀 아쉬운 상황이지만, 그래도 Java는 아직도 여러 환경에서 쓰이므로, 알아두면 분명히 도움이 된다고 생각한다.



이 책의 장점과 아쉬운 점을 정리하면 다음과 같다.


장점으로는


- 자바 9에 대해서 하나도 모르던 사람에게 "모듈"이라는 주제로 제대로 각인시켜 준다.

- 필요성에 대해 먼저 사례를 들어 언급하였기 때문에, 필요성을 못느끼던 독자에게 흥미를 유발한다.

- 각 코드나 예제가 군더더기 없이 깔끔하다.(어차피 full source는 github을 통해 제공하기 때문에, 핵심소스가 잘 정리된 것이 좋다.)

- 마이그레이션 방법도 알려주어, 기존 소스에서 활용할 수 있도록 돕는다.




아쉬운 점으로는


- 실습 도구로 점유율이 낮은 넷빈즈를 선택하였다.

- 책 전반적으로 강조하는 부분에 대해서 눈에 띄게 만들어 놓은 부분이 약하다.(잘 눈에 들어오지 않는다.)

- 모듈 프로그래밍에 대한 책이지만, Java 9 전반적으로 어떠한 변화가 있는지 먼저 나열해 주었더라면 Java 9에 대한 더 넓은 이해가 되었을 것 같다.




이 책을 평가해보면 다음과 같다.


가격: 9 / 10

내용: 8 / 10

디자인: 6 / 10

구성: 7 / 10



저자: 코시크 코타갈

옮긴이: 유동환


대상자: 자바로 현업에서 종사하는 개발자, 자바에 대한 기본 이해가 있는 중급 이상의 개발자, 새로운 자바를 공부하고 싶은 의지가 있는 개발자.


가격: 21,000원

전체 페이지: 268페이지



이 리뷰는 "한빛미디어"를 통해 도서를 제공받아 작성하였습니다.


댓글0