메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

모던 자바 인 액션 : 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기

한빛미디어

번역서

판매중

  • 저자 : 라울-게이브리얼 우르마 , 마리오 푸스코 , 앨런 마이크로프트
  • 번역 : 우정은
  • 출간 : 2019-08-01
  • 페이지 : 692 쪽
  • ISBN : 9791162242025
  • 물류코드 :10202
  • 초급 초중급 중급 중고급 고급
4.7점 (31명)
좋아요 : 23

자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다. 이 책은 함수형 언어의 영감을 받아 자바 8, 9, 10에 추가된 람다, 스트림, 함수형 프로그래밍, 자바 모듈 시스템, 병렬화와 공유 가변 데이터, 동작 파라미터화 등의 주요 기능을 자바 개발자에게 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 이 책은 『자바 8 인 액션』의 개정판으로서 1, 8, 10, 4, 17, 21장은 신규 추가되거나, 그에 준하는 큰 수정이 있었다. 부록을 뺀 나머지 모든 장도 수정 보강되었다.

 

<이 책의 구성>

이 책은 크게 ‘기초’, ‘함수형 데이터 처리’, ‘스트림과 람다를 이용한 효과적 프로그래밍’, ‘매일 자바와 함께’, ‘개선된 자바 동시성’, ‘함수형 프로그래밍과 자바 진화의 미래’ 여섯 가지 내용으로 구성되었다. 처음 1부와 2부에서 소개하는 장들은 순서대로 읽어야 앞뒤 문맥을 이해할 수 있으며 나머지 네 개 부는 각각 독립적인 내용으로 구성되어 있으므로 어떤 순서로든 읽을 수 있다. 대부분의 장에는 직접 실습할 수 있도록 다양한 퀴즈를 포함했다.

 

1부 : 자바 8을 처음 접하는 독자에게 적합한 내용을 다루는 세 개 장을 제공한다. 1부를 끝낼 즈음엔 람다 표현식이 무엇인지 이해할 수 있고, 람다를 이용해서 변화하는 요구사항에 쉽게 대응할 수 있는 간결하면서도 유연한 코드를 구현할 수 있게 될 것이다.

 

2부 : 새로운 스트림 API를 자세히 설명한다. 2부를 끝내면 스트림이 무엇이며, 스트림을 이용해서 데이터 컬렉션을 처리하는 간결하고 효율적인 애플리케이션을 구현하는 방법을 알게 될 것이다.

 

3부 : 자바를 더 효과적으로 사용하고 최신 기법으로 코드를 개선하는 데 도움을 주는 다양한 자바 8, 자바 9 관련 내용을 살펴본다. 가능한 최신의 프로그래밍 개념을 설명하는 것이 목표로 이 책의 다른 부분에서는 3부에서 다룬 내용을 활용하지는 않는다.

 

4부 : 프로젝트를 구성하는 코드를 더 쉽고 안정적으로 만들 수 있도록 자바 8과 자바 9에 추가된 다양한 새 기능을 살펴본다.

 

5부 : 6장과 7장에서 설명한 스트림을 이용한 쉬운 병렬 처리 방법에서 한 걸음 더 나아가 자바로 병렬 프로그래밍을 구조화하는 고급 기법을 살펴본다.

 

6부 : 주제를 조금 전환해 스칼라와 자바 8의 기능을 비교하면서 효과적으로 함수형 프로그래밍을 자바로 구현하는 방법을 살펴본다.

 

부록 : 부록 A에서는 책에서 살펴보지않은 자바 8 언어의 작은 특징을 요약한다. 부록 B에서는 유용하게 사용할 수 있도록 자바 라이브러리에 추가된 기능을 설명한다. 부록 C에서는 2부의 연장으로 스트림의 고급 사용법을 설명한다. 부록 D에서는 자바 컴파일러가 람다 표현식을 구현한 내막을 설명한다.

 

 

<이 책의 내용>

  • 자바 8, 자바 9, 자바 10 의 강력한 새로운 기능을 사용하는 방법
  • 멀티코어를 효과적으로 활용하는 애플리케이션을 구현하는 방법
  • 리팩토링, 테스팅, 디버깅
  • 함수형 프로그래밍 적용
  • 퀴즈, 기습 질문, 업데이트 내용을 담은 부록

 

상세이미지_700.jpg

 

라울-게이브리얼 우르마 저자

라울-게이브리얼 우르마

영국 데이터 과학자와 개발자를 선도하는 교육 커뮤니티인 케임브리지 스파크 공동 창업자로 변환 데이터 과학, AI 교육, 경력 개발 분야의 리더다. 케임브리지 대학교에서 컴퓨터 과학 박사 학위를 수료했다. 임페리얼 칼리지 런던 석사 과정에서 다수의 기술 혁신상을 수상하고 수석 졸업했다. 관심 연구 분야는 프로그래밍 언어, 컴파일러, 소스코드 분석, 머신러닝, 교육이다. 2017년에 자바 챔피언으로 임명되었다. 자바, 파이썬, AI, 비즈니스 등 다양한 분야의 국제적 연사로 활동했다. 여러 스타트업 프로젝트를 포함해 구글, 이베이, 오라클, 골드만삭스 등의 회사와 함께 일했다. 『모던 자바 인 액션』(한빛미디어, 2019)을 비롯한 책을 집필했다.

 

마리오 푸스코 저자

마리오 푸스코

레드햇에서 Drools 코어 개발, 제이보스(JBoss) 룰 엔진 관련 작업을 담당하는 선임 개발 엔지니어다. 미디어에서 금융에 이르는 다수의 기업 프로젝트에 자바 개발자로(또는 리더로) 참여했다. 함수형 프로그래밍과 도메인 전용 언어에 관심이 많다. 자신의 관심 분야를 활용해서 오픈소스 라이브러리인 lambdaj를 만들었다. lambdaj는 컬렉션을 제어할 수 있는 국제적 자바 DSL을 제공하며, 자바에 함수형 프로그래밍을 제공하는 것을 목표로 한다.

앨런 마이크로프트 저자

앨런 마이크로프트

케임브리지 대학교 컴퓨터 실험실의 컴퓨팅 교수로 1984년부터 교수회의 멤버를 역임했다. 프로그래밍 언어와 시스템 유럽 연합의 공동창업자인 로빈슨 대학교 회원이며, 라즈베리 파이 재단의 이사 겸 회원이다. 수학(케임브리지), 컴퓨터과학(에든버러) 학위를 갖고 있다. 100여 편의 연구 저서를 집필했으며 20명이 넘는 박사 과정 학생을 지도했다. 프로그래밍 언어와 의미해석규칙, 최적화, 구현 등이 주요 연구 분야다. AT&T 실험실, 인텔 연구소에서 일했던 적이 있으며 노르크로프트(Norcroft)라는 이름의 ARM C 컴파일러를 만들었던 코드미스트(Codemist) 유한회사에서도 일한 경험이 있다.

우정은 역자

우정은

인하대학교 컴퓨터공학과를 졸업하고 LG전자, 썬 마이크로시스템즈, 오라클 등에서 모바일 제품 관련 개발을 했다. 뉴질랜드 웰링턴에 있는 Xero에서 모바일 앱을 개발하다가 현재는 DevOps 팀에서 새로운 인생을 즐기고 있다. 2010년 아이폰의 매력에 빠져들면서 번역과 개발을 취미로 삼고 꾸준히 서적을 번역한다. 옮긴 책으로는 『플러터 인 액션』, 『처음 배우는 스위프트』, 『실전 자바 소프트웨어 개발』, 『모던 자바 인 액션』, 『실무자를 위한 그래프 데이터 활용법』(이상 한빛미디어) 등이 있다.

 

옮긴이·지은이 소개

옮긴이의 말

지은이의 말

이 책에 대하여

표지 그림 소개

 

[ PART I 기초 ]

 

CHAPTER 1 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?

1.1 역사의 흐름은 무엇인가?

1.2 왜 아직도 자바는 변화하는가? 

1.3 자바 함수

1.4 스트림

1.5 디폴트 메서드와 자바 모듈

1.6 함수형 프로그래밍에서 가져온 다른 유용한 아이디어

1.7 마치며

 

CHAPTER 2 동작 파라미터화 코드 전달하기

2.1 변화하는 요구사항에 대응하기

2.2 동작 파라미터화

2.3 복잡한 과정 간소화

2.4 실전 예제

2.5 마치며

 

CHAPTER 3 람다 표현식

3.1 람다란 무엇인가?

3.2 어디에, 어떻게 람다를 사용할까?

3.3 람다 활용 : 실행 어라운드 패턴

3.4 함수형 인터페이스 사용

3.5 형식 검사, 형식 추론, 제약

3.6 메서드 참조

3.7 람다, 메서드 참조 활용하기

3.8 람다 표현식을 조합할 수 있는 유용한 메서드

3.9 비슷한 수학적 개념

3.10 마치며

 

[ PART II 함수형 데이터 처리 ]

 

CHAPTER 4 스트림 소개

4.1 스트림이란 무엇인가?

4.2 스트림 시작하기

4.3 스트림과 컬렉션

4.4 스트림 연산

4.5 로드맵

4.6 마치며

 

CHAPTER 5 스트림 활용

5.1 필터링

5.2 스트림 슬라이싱

5.3 매핑

5.4 검색과 매칭

5.5 리듀싱

5.6 실전 연습

5.7 숫자형 스트림

5.8 스트림 만들기

5.9 마치며

 

CHAPTER 6 스트림으로 데이터 수집

6.1 컬렉터란 무엇인가?

6.2 리듀싱과 요약

6.3 그룹화

6.4 분할

6.5 Collector 인터페이스

6.6 커스텀 컬렉터를 구현해서 성능 개선하기

6.7 마치며

 

CHAPTER 7 병렬 데이터 처리와 성능

7.1 병렬 스트림

7.2 포크/조인 프레임워크

7.3 Spliterator 인터페이스

7.4 마치며

 

[ PART III 스트림과 람다를 이용한 효과적 프로그래밍 ]

 

CHAPTER 8 컬렉션 API 개선

8.1 컬렉션 팩토리

8.2 리스트와 집합 처리

8.3 맵 처리

8.4 개선된 ConcurrentHashMap

8.5 마치며

 

CHAPTER 9 리팩터링, 테스팅, 디버깅

9.1 가독성과 유연성을 개선하는 리팩터링

9.2 람다로 객체지향 디자인 패턴 리팩터링하기

9.3 람다 테스팅

9.4 디버깅

9.5 마치며

 

CHAPTER 10 람다를 이용한 도메인 전용 언어

10.1 도메인 전용 언어

10.2 최신 자바 API의 작은 DSL

10.3 자바로 DSL을 만드는 패턴과 기법

10.4 실생활의 자바 8 DSL

10.5 마치며

 

[ PART IV 매일 자바와 함께 ]

 

CHAPTER 11 null 대신 Optional 클래스

11.1 값이 없는 상황을 어떻게 처리할까?

11.2 Optional 클래스 소개

11.3 Optional 적용 패턴

11.4 Optional을 사용한 실용 예제

11.5 마치며

 

CHAPTER 12 새로운 날짜와 시간 API

12.1 LocalDate, LocalTime, Instant, Duration, Period 클래스

12.2 날짜 조정, 파싱, 포매팅

12.3 다양한 시간대와 캘린더 활용 방법

12.4 마치며

 

CHAPTER 13 디폴트 메서드

13.1 변화하는 API

13.2 디폴트 메서드란 무엇인가?

13.3 디폴트 메서드 활용 패턴

13.4 해석 규칙

13.5 마치며

 

CHAPTER 14 자바 모듈 시스템

14.1 압력 : 소프트웨어 유추

14.2 자바 모듈 시스템을 설계한 이유

14.3 자바 모듈 : 큰 그림 

14.4 자바 모듈 시스템으로 애플리케이션 개발하기

14.5 여러 모듈 활용하기

14.6 컴파일과 패키징

14.7 자동 모듈

14.8 모듈 정의와 구문들

14.9 더 큰 예제 그리고 더 배울 수 있는 방법

14.10 마치며

 

[ PART V 개선된 자바 동시성 ]

 

CHAPTER 15 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초

15.1 동시성을 구현하는 자바 지원의 진화

15.2 동기 API와 비동기 API

15.3 박스와 채널 모델

15.4 CompletableFuture와 콤비네이터를 이용한 동시성

15.5 발행-구독 그리고 리액티브 프로그래밍

15.6 리액티브 시스템 vs 리액티브 프로그래밍

15.7 마치며

 

CHAPTER 16 CompletableFuture : 안정적 비동기 프로그래밍

16.1 Future의 단순 활용

16.2 비동기 API 구현

16.3 비블록 코드 만들기

16.4 비동기 작업 파이프라인 만들기

16.5 CompletableFuture의 종료에 대응하는 방법

16.6 로드맵

16.7 마치며

 

CHAPTER 17 리액티브 프로그래밍

17.1 리액티브 매니패스토 

17.2 리액티브 스트림과 플로 API

17.3 리액티브 라이브러리 RxJava 사용하기

17.4 마치며

 

PART VI 함수형 프로그래밍과 자바 진화의 미래

 

CHAPTER 18 함수형 관점으로 생각하기

18.1 시스템 구현과 유지보수

18.2 함수형 프로그래밍이란 무엇인가?

18.3 재귀와 반복

18.4 마치며

 

CHAPTER 19 함수형 프로그래밍 기법

19.1 함수는 모든 곳에 존재한다

19.2 영속 자료구조

19.3 스트림과 게으른 평가

19.4 패턴 매칭

19.5 기타 정보

19.6 마치며

 

CHAPTER 20 OOP와 FP의 조화 : 자바와 스칼라 비교

20.1 스칼라 소개

20.2 함수

20.3 클래스와 트레이트

20.4 마치며

 

CHAPTER 21 결론 그리고 자바의 미래

21.1 자바 8의 기능 리뷰

21.2 자바 9 모듈 시스템

21.3 자바 10 지역 변수형 추론

21.4 자바의 미래

21.5 더 빠르게 발전하는 자바

21.6 결론

 

부록

_APPENDIX A 기타 언어 업데이트 

_APPENDIX B 기타 라이브러리 업데이트 

_APPENDIX C 스트림에 여러 연산 병렬로 실행하기 

_APPENDIX D 람다와 JVM 바이트코드 

완전히 새로워진 자바 8, 9, 10의 기능을 속 시원하게 배우자!

이 책은 자바 최신 기능을 애플리케이션에 실용적으로 적용하는 방법을 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 또한 기존 핵심 자바의 지식뿐 아니라 스트림 API, 자바 모듈 시스템 같은 최신 추가 기능, 동시성의 새로운 접근 방법, 함수형 개념 등 읽기 쉽고 유지보수하기 쉬운 코드를 구현하는 데 어떻게 도움이 되는지 배울 수 있다.

 

 

왜 새로운 기능을 사용해야 할까?

예를 들어 새로 추가된 기능 중에서 람다를 이용하면 좀 더 간결한 자바 프로그램을 구현할 수 있다. 대부분의 독자는 이미 이벤트 핸들러, 콜백 등을 이용해 어떤 이벤트가 발생했을 때 호출될 메서드를 포함하는 객체를 등록해본 경험이 있을 것이다. 람다라면 더 다양한 분야에서 이 기능을 사용할 수 있다. 즉 람다와 람다의 친구인 메서드 레퍼런스로 어떤 동작 중 실행될 수 있는 코드나 메서드를 간단하게 인수로 전달할 수 있다. 결국 독자 여러분이 생각했던 것보다 이와 같은 기능이 자주 사용(메서드를 코드로 파라미터화하는 것뿐 아니라 새로운 스트림 API를 이용해 데이터를 수집하는 복잡한 쿼리에 이르기까지)된다는 것을 확인하게 될 것이다.

 

<추천평>

“최신 자바 기능을 완벽하고 훌륭한 예제와 함께 실용적으로 소개했습니다.”

_올렉산드 만드리크, EPAM 시스템스

 

“단순하고 아름답게 자바 8, 자바 9을 실용적으로 설명했어요.”

_디팍 바스카란, 세일즈포스닷컴

 

“스트림, 동시성, 리액티브를 다양한 활용 사례와 예제로 설명합니다.”

_롭 파체코, 시놉시스

 

모던 자바 인 액션 한빛미디어

 

KakaoTalk_20201122_144025888.jpg

 

 

현장에서 일을 하다 보면 분명 자바라는 프로그래밍 언어를 통해 업무를 수행하지만 자바 개발자라고 불러도 될까 싶은 의아한 상황을 만나게 된다. 프로그래밍을 공부하며지난 시간을 돌이켜 보면 버전이 오를 때마다 획기적인 개선과 코드에 대한 간결성과 효율성이 높아진 것이 사실이고 그것을 재미있다고 느끼며 익히는데문제가 없었다. 하지만 1.8 버전(자바 8)이 도래하고 상황은 완전히 달라졌다.

 

이전의 자바와는 전혀 다른 개념들이 도입되기 시작했고, 프로그래밍관점에서는 OOP 를 흉내내기 위한 다양한 기법들을 구현 하는데 뛰어 넘어 FP 를 도입하고 람다 표현식과 메소드 참조, 스트림 등이 표준으로도입되면서 이전과는 전혀 다른 언어라고 해도 될 정도의 변화가 도입 되었 다. 그리하여 이전의 상황에익숙한 사람들이 자바 컴파일러의 상위 버전을 적용하면서도 실제 코드는 자바 8 이전의 코드 스타일에매몰되어 있는 경우를 너무나 많이 목격하게 된다.

 

코드가 얼마나 간결하게 작성되는가를 떠나 어떻게 간결화 되는가에 대한 이해를 자신의 것으로 만들기 위해서는 단순히코딩 명령어를 외우고 쓰는 것을 넘어 이전의 상황과 새롭게 도입된 개념, 그리고 그것을 쉽게 구현하는데필요한 관점의 전환 세 단계가 필요한데, 이를 살펴 보고 자신의 것으로 만들 수 있을 때, 비로서 모던 자바를익혔다고 생각할 수 있을 것 같다.

 

물론 아직 올드 자바 스타일로 개발하지만 모던 자바 코드로 작성된 코드를 볼 줄 알며 읽어 낼 수 있다면 먹고사는데는 아무런 지장이 없고, 심지어 흔한 지옥의 불구덩이 SI/SM현장에서는 모던 자바라는 존재 자체에 대해서도 무지한 경우를 목격하는 것이 현실이다.

 

예전에 자바 개발자들은 동시성에 대한 학습, 병렬처리에 대한 학습, 컬렉션에 담긴 데이터의 효율적인 처리와 특히 대용량에 대한 처리에 대해서 심도 높은 학습을 하고, 심지어 FP 에 대해서는 다른 언어에서 대안을 찾아야 하는 것인지에대한 고뇌가 깊었다. 이 문제들을 자바 8 버전부터 마치숨겨졌던 무림의 비법서가 열리듯 해결되기 시작했다.

 

모던 자바 인 액션 이 책은 이전의 자바와 다르게 갑작스럽게 빨라진 개선과 새로운 버전에 담긴 내용을 자바 버전별로 구분하지 않고 컬렉션에서 개선 된 스트림에 대한 충분한 개념 설명과 실체를 보여주며, 모두가 이름은들어 보았지만 실체가 무엇인지 정확히 설명하기 어려워 하는 람다식을 디폴트 메소드에 대한 충실한 설명으로 풀어낸다. 지금은 알지만 자바 8 이 처음 등장했을 때 대체 무슨 말인가 혼란스러웠던기억을 떠올리면, 지금 시점에 모던 자바를 만나게 되는 주니어 개발자들이 참 부럽기까지 하다.

 

최근 한 스터디에서 마이크로 서비스 패턴을 주제로 공부를 하고 있는데, 도대체 팀원들이 무슨 이야기를 하는것인지 혼란스러웠다. 무지한 내 탓도 있지만 사실은 무엇을 모르는지 모르는 상태가 너무 오래 지속 되었던탓이 크다. 그런데 이 책을 읽어 내려가다 보니 앞에서 설명한 기본 내용들을 토대로 동기와 비동기를설명하더니 리액티브 프로그래밍에 대해서 서술하고, 끝내는 OOP 를넘어 FP 에 대해서 서술하는 함수형 프로그래밍의 소개는 나를 부끄럽게 했다. 유행하는 것을 따르다가 정작 기본기를 놓치고 있었다는 생각에 순서가 바뀌었구나 하는 반성을 하게 되었다. 지금 당장 모든 것을 소화해 낼 수 없지만, 일단 길을 찾았으니묵묵히 다시금 걸어볼까 한다.

 

수년 간 익혔다고 배웠다고 생각했음에도 늘 배우면 처음 같은 프로그래밍.. 자바개발자로 끊임없는 성장을 원한다면 이 책은 반드시 자신의 것으로 만들고 시작하기를 바라는 마음이다. 시간이흐른 뒤 길을 잃는 것보다 오늘 책 한 권을 통해 지도를 손에 쥐고 출발하는 것이 먼 미래에 도움이 될 것임을 믿는다.

 

이 책은 이 독자에게보여줘야 하는 가장 원초적인 본질에 아주 충실하다.

 

5581BDEC-7183-4A2C-B781-F24E93D341DA.jpeg

 

처음 책의 목차를 살피며 기대했었는데, 기대만큼이나 알찬 내용을 담고있다.

 

파트 1에서는 대략적인 로드맵을 설명한다. 

자바8에 대해 세 가지 개념으로 소개했다. 스트림 처리와 동작 파라미터화, 병렬성 등이었는데 그 중 함수형 데이터 처리에 대해 파트 2에서 다루며 API 연산들도 설명한다.

자바 8 스트림 API를 사용하면서 명확하지 않았던 부분들을 잘 알 수 있었다.(순차처리와 병렬처리 동작의 차이와 같은 내용, 디폴트 메서드에 대한 부분-공개된 인터페이스를 변경해서 메서드를 추가할수 있다.)

자바9에 대해서는 잘 모르고 있었는데 모듈 정의나 리액티브 프로그래밍에 대해 다루고 있다.


전체적으로 디테일이 상당해서 시간을 들여 공부해도 좋을만한 내용이다. 단순히 어떤 변경이 있었는지 뿐 아니라 패러다임, 그리고 상세한 구현의도가 들어간 예시들이 있어서 도움이 되었고, 자바 8, 9, 10 등 이후 버전이 완전히 좋아졌고 잘 익혀서 새로운 기능들에 제대로 적응하고 싶다는 생각이 들었다.





 


 

자바를 사용해서 웹 개발을 하고 있지만 제대로 알고 잘 사용하는지 각 버전에 따른 차이점이 무엇이고 내가 제대로 사용하는지 늘 궁금하었습니다.

그런데 이번에 좋은 기회로 책을 리뷰할 수 있게 되어 책에 대해서 살펴보고자 합니다.

 

책의 구성은 총 6부로 챕터는 21챕터로 구성되어 있습니다. 책의 두께가 꽤 두껍습니다. 총 692페이지 정도 됩니다. 그 만틈 전달하고자 하는 내용이 많으며 자바에 있어 유용한 내용들이 있을꺼라는 기대감이 들었습니다.

 

 

1부에서는 자바 8을 배우는 데 필요한 기본 정보를 제공합니다.

1장에서는 핵심적으로 바뀐 자바 기능(람다 표현식, 메서드참조, 스트림, 디폴트 메서드)과 책의 전체 흐름을 설명합니다.

2장은 동작 파라미터화(람다 표현식이 탄생한 이유이기도 하며, 자바 8에 광범위하게 적용된 소프트웨어 개발패턴)에 대해서 살펴봅니다.

3장은 단계별로 코드 예저와 퀴즈를 이용하여 람다 표현식과 메서드 참조의 개념에 대해서 정리합니다.

 

 

2부에서는 스트림 API데이터 컬렉션을 처리하는 강력한 선언형 코드 구현 방법(declar-ative way)을 자세히 살펴봅니다.

4장에서는 스트림의 개념을 설명하고 스트림과 컬렉션을 비교 설명합니다.

5장에서는 복잡한 데이터 처리 질의를 표현하는데 사용하는 스트림 연산을 자세히 설명합니다.

6장에서는 더 복잡한 데이터 처리를 표현할 수 있도록 스트림 API에서 제공하는 컬렉터를 설명합니다.

7장에서는 어떻게 스트림이 자동으로 병렬 실행되면서 하드웨어의 멀티코어 아키텍처를 활용하는지 설명합니다.

 

 

3부에서는 자바8, 자바9의 기능을 이용해 더 효과적으로 사용할수 있는 방법과 최신 기법으로 코드를 개선하는 방법에 대해서 살펴봅니다.

8장은 개정판에 추가된 장으로 자바8과 자바9의 컬렉션 API개선 사항 그리고 컬렉션 팩토리 사용방법, 리스트 및 집합 컬렉션, 맵과 함께 활용하는 새로운 관용 패턴에 대해서도 설명합니다.

9장에서는 새로운 자바8 기능과 기법을 이용해 기존 코드를 개선하는 방법에 대해서 설명합니다. 또한 디자인 패턴, 리팩터링, 테스팅, 디버깅 같은 필수적인 소프트웨어 개발 기법에 대해서도 설명합니다.

10장 역시 개정판에 추가된 장으로서 도메인 지정 언어 API에 기반한 내용을 살펴봅니다.

 

 

4부에서는 프로젝트 구성하는 코드를 더 쉽고 안정적으로 만들 수 있도록 자바 8과 자바9에 추가된 다양한 새 기능에 대해서 살펴봅니다.

11장에서는 더 좋은 API를 설계하고 널 포인터 예외를 줄이는데 도움을 주는 새로운 Optinal클래스에 대해서 설명합니다.

12장에서는 날짜와 시간 API를 설명합니다. 기존에 에러가 많이 발생했던 날짜와 시간 관련 API를 크게 개선하였습니다.

13장에서는 디폴트 메서드가 무엇이며, 어떻게 디폴트 메서드로 변화할 수 있는 API를 만들 수 있는지 배웁니다.

14장에서는 기존의 '패키지 모음'을 넘어서 거대한 시스템을 문서화하고, 쉽게 통제 할 수 있도록 자바 9에 추가된 자바 모듈 시스템에 대해서 설명합니다.

 

 

5부에서는 6장,7장에서 소개한 스트림을 이용한 쉬운 동시 처리라는 주제를 넘어 자바에서 더 개선된 방식으로 병렬프로그램을 만드는 방법을 설명합니다.

 

15장은 개정판에 새로 추가된 장으로 비동기 Futures, 발행-구독 프로토콜을 기반으로 하는 리액티브 프로그래밍과 자바 9 플로 API의 캡슐화를 포함한 내용을 다룹니다.

16장에서는 선언 방식 즉 스트림 API와 비슷한 방식으로 복잡한 비동기 계산을 표현할 수 있도록 도움을 주는 CompletableFuture에 대해서 살펴봅니다.

17장도 개정판에 추가된 장으로 실용적인 리액티브 프로그래밍 코드와 함께 자바9의 플로 API를 자세히 살펴봅니다.

18장에서는 함수형 프로그래밍의 용어를 포함한 함수형 프로그래밍이 무엇인지에 대해 알아봅니다.

19장에서는 고차원 함수, 커링, 자료구조 영구 저장, 게으른 리스트, 패턴 매칭 등 고급 함수형 프로그래밍 기법을 설명합니다.

20장에서는 자바 8과 스칼라 언어의 기능을 비교합니다. 스칼라는 JVM 위에 구현된 자바 같은 언어로, 빠르게 변화하면서 프로그래밍 언어 생태계에서 자바가 담당했던 일부 영역을 잠식하고 있는 언어이다

 

마지막 21장에서는 지금까지 배운 자바8을 되돌아보면서 함수형 프로그래밍을 적극적으로 사용할 수 있도록 권장합니다. 자바8, 자바9의 새로운 기능과 자바 10에 적용된 약간의 개선데 더해 미래에는 자바에 어떤 기능이 추가될 수 있는지 살펴봅니다.

 


-서평-

 

이 책은 곁에 오래두고 천천히 보고 또 보고 싶은 책입니다. 자바 개발자로 실무에 있어서도 매우 유용한 내용이라 생각되어 집니다.자바 개발자로 좀더 깊이있는 내용과 자바8 버전 이상의 기능을 새로이 학습하길 원하는 분 또는 중급 개발자에게 딱 알맞는 책이라 생각됩니다.

자바 8 버전 이후에 새로운 기능을 제대로 사용해 보고 싶은 분들에게 추천드립니다.



이번에 읽은 책은 #한빛미디어의 모던 자바인 액션이라는 책입니다. 

 

IMG_7309.jpg

 

 

 

 

문구부터 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기! 마스터하겠습니다.

 

​이번에 개정판으로 나온다고 해서 신청한 책입니다

 

개정판에는 추가로 리액티브 프로그래밍, RX 자바 관련 내용 및 함수 프로그래밍에 대한 내용이 추가되어 있습니다.

 

 

그리고 이번에는 제가 중점적으로 본 내용은 주로 후반부에 있는 내용인 동시성, 비동기 API 등 내용부터 주로 읽었어요. 

 

 

실제로 업무에서도 Future 비동기 처리 관련으로 사용하고 있는 부분이 있지만 조금 더 효율적으로 사용하질 못했는데 역시 책에서 많은 내용과 도움이 될만한 것들이 있어 실제 업무에 적용을 할 예정이에요.

 

 

그리고 무조건적인 비동기 호출보다는 책 내용 중에는

 

"새로운 시스템을 설계할 때 시스템을 많은 작은 동시 실행되는 태스크로 설계해서 블록 할 수 있는 모든 동작을 비동기 호출로 구현한다면 병렬 하드웨어를 최대한 활용할 수 있다. 하지만 현실적으로 '모든 것이 비동기'라는 설계 원칙을 어겨야 한다."

 

 

이 내용도 신선했고 많은 생각을 하게 됩니다. 뭐든지 장단점이 있는 거니 잘 알고 써야 하는 게 중요하다는 것을요.

 

 

그리고 Chapter11에 있는 내용 중에 null 대신 Optional 클래스 내용도 꼬옥 읽어 보시길 바라요.

 

자바 개발하다 보면 null 값으로 인한 문제점이 많이 발생하는 데 자바 8부터는

 

값이 있거나 없음을 표현할 수 있는 클래스 java.util.Optional<T>를 제공함으로써 값이 없는 상황을 적절하게 처리하도록 강제할 수 있고 또한 null로 발생할 수 있는 예외 상황도 처리할 수 있으니 참고하시면 좋은 챕터입니다.

 

 

그리고 자바 모듈 프로그래밍에 관련된 내용도 있는데 저는 아직은 익숙하지가 않아서 나중에 다시 한번 읽어봐야겠어요.

 

 

최근에 자바 8에서 인터페이스에 default 키워드의 디폴트 메서드가 추가된 점이 있는데 이거 관련해서도 많은 내용이 있으니 참고하시면 됩니다

 

그리고 챕터 7장에서 병렬 스트림 효과적으로 사용하는 부분도 책의 예제를 통해서 더욱더 이해가 잘 된 거 같아요.

 

 

실제로 책 내용 중에서는 챕터 3 람다 표현식, 챕터 4,5,6 스트림 API로 컬렉션 객체를 다양하게 계산할 수가 있어서 이걸로 현업에서도 

 

많이 쓰이니 책에 있는 예제를 직접 보시면서 익히시는 게 제일 좋을 것 같아요.

 

주로 스트림은 내부 반복을 지원하므로, filter, map, sorted 등 많이 쓰이니 참고하시면 좋습니다.

 

 

그리고 챕터 3장에 있는 람다 표현 식도 꼬옥 보셔야 할 것 같습니다. 앞에서 말했듯이 자바 스트림 객체 안에서도 람다 표현식으로 데이터 가공하는 부분이 많으므로 꼬옥 보셔야 해요.

 

 

이 책의 장점

 

1. 다양한 예제 및 설명 그리고 해당 챕터가 시작할 때 이장에서 배워야 할 내용이 잘 정리되어 있는 점

 

2. 다양한 그림으로 된 설명  그리고 책 하단에 본문에서 번호로 설명된 부분이 자세하게 설명된 점

 

 

 

이 책의 단점

 

1. 어느 정도 책 난이도가 있으므로 적어도 기초 서적 정도 다 읽어보신 분 추천드립니다.

 

2. 어느 정도 실제로 예제까지 직접 쳐봐야 이해가 되는 부분도 있음 이 부분은 제가 부족해서 그럴 수도 있습니다;;

 

 

 

 

이 책은 그래도 적어도 깊게 한 번 더 읽어볼 책입니다. 조금 더 나은 자바 개발자가 되실 분들은 꼬옥 추천드리는 책입니다.

 

감사합니다.

이 책에 대해 전반적으로 보면 자바 8, 9, 10 버전의 특징을 잘 집어준 책이라고 할 수 있습니다.

 

책 구성은 다음과 같습니다.

 

총 6개 파트, 21개 챕터로 구성되어 있습니다.

 

첫번째 파트인 기초 파트에서는 자바의 발전과 흐름, 기본적인 자바 8~10 버전의 특징을 얘기하고 있습니다.

 

두번째 파트인 함수형 데이터 처리에서는 스트림과 병렬 데이터 처리에 대한 얘기를 하고 있습니다.

 

세번째 파트인 스트림과 람다를 이용한 효과적 프로그래밍에서는 컬렉션, 리팩터링, 테스팅, 디버깅, 도메인 전용 언어에 대해 얘기하고 있습니다.

 

네번째 파트인 매일 자바와 함께에서는 NullPointerException을 줄일 수 있는 optional 클래스와 더불어 개선된 몇가지 API, 메서드 등을 소개하고 있습니다.

 

다섯번째 파트인 개선된 자바 동시성에서는 비동기 프로그래밍과 리액티브 프로그래밍에 대해 얘기하고 있습니다.

 

여섯번째 파트인 함수형 프로그래밍과 자바 친화의 미래에서는 함수형 프로그래밍과 자바의 미래에 대해 얘기하고 있습니다.

 

 

저 역시도 10년에 가까운 시간동안 다른일을 하면서도 개발을 꾸준히 해오고 있습니다만 자바라는 언어에는 그리 익숙하지 않습니다. 실제 자바를 이용한 상품화는 해본적도 없습니다.

 

저같이 자바 문법조차 정확히 모르는 분들께 추천드리고 싶은 책은 아닙니다. 

분명 이 책은 자바 기본서는 아니라는 생각이 듭니다. 

그럼에도 불구하고 자바 문법을 한번 익히고 이 책을 다시한번 보고싶다는 생각이 들 정도로 어느정도 기초 지식만 있다면 꼭 추천드리고 싶은 책입니다. 더불어 이 책을 보고 현재 사용중인 코드를 다시 정리해본다면 많은 개선을 가져올 수 있지 않을까 싶습니다.

2014년 java8이라는 대격변을 격으며 java는 이전의 스타일에서 많은 변화가 생겼다. 

가장 큰 변화는 람다와 스트림, 함수형 페러다임의 도입이다.

 

당시 개인적으로 C#을 주로 사용하고 있었다.

람다식의 경우 2007년 C# 3.0버전에서 처음 소개 되었고 LINQ와 함께 접해봤기에 java진영에서 얼마나 큰 변화가 일어나고 있었는지 모르고 있었다.

C#에서 람다를 처음 사용해보면서 델리게이트를 편하게 쓰는구나 정도로만 이해했다.

java엔 이런기능이 없었구나… 정도로만 생각했지, 이 변화가 가져오는 파급효과에 대해서 전혀 모르고 있었다.

사실 이 책을 보기전까지 람다의 구현에 대해 깊게 생각해보지 않았었다.

 

이 책의 1,2부에서는 java8의 기능인 람다와 스트림를 소개하고 있다.

1부에서는 람다에 대해 정말 자세하게, 원리까지 상세하게 알려준다.

지금까지 얼마나 피상적으로 알고있었나 반성하게 된다.

1부에서 람다 표현식을 익히고나면 2부에서 이를 활용한 스트림을 활용한 함수형 데이터 처리로 넘어간다.

스트림을 이용해서 어떨게 간결하고 효율적으로 프로그램을 할수있는지 배우게 된다.

저자가 람다와 스트림을 효과적으로 사용하는 법을 알려주는데 많은 공을 들였다는것을 느끼게된다.

 

1.jpg

 

2.jpg

 

3.jpg

 

 

왜 이렇게 변화해 왔는지? 이 변화의 장점은 무엇인지 여기까지만 읽어도 모던 자바란 무엇인지 조금은 감이 잡을수 있었다.

 

java 문법에 어느정도 익숙하고, 앞으로도 java를 사용하고자 한다면 꼭 읽어보길 권한다.

올해 자바라는 언어를 공부하게 되고 모던 자바 인 액션 책을 봤을때 

 

? 내가 공부했던게 옛날 자바인건가 하는 생각이 들게 되었습니다.

 

막상 자바를 공부하게 되면 모든 언어들과 비슷한 기초 문법들을 보고 서블릿, jsp, 스프링 프레임워크를 공부하게 되면서

 

정작 자바에 큰 의미를 부여하지 않게 되는 경향이 있는거 같은데

 

이 책을 보고나서 이런 점이 버전이 높아지면서 뭐가 추가되었구나와 새로운 개념들을 익혀서 참 좋은 경험이였습니다.

unnamed.jpg

 

 

이 책은 정말 모던한 방식으로 자바를 사용하려면 어떻게 해야하는지를 담고 있는 책이다. 그야말로 책 제목이 내용을 잘 담고 있지만, 본인은 처음 책을 받을 때 최근 문법을 포함한 자바에 대한 기본적인 내용에 대해 공부하게 될 줄 알았다. 본인은 자바를 공부한 경험이 학부 수업에 간단하게 배운 거 말고는 없어서, `이것이 자바다` 책 처럼 처음부터 천천히 배우는 느낌을 원했는데, 일단 그런 종류의 책은 아니다. 기본적으로 기존 자바 개발자에게 함수형, Reactive 방식으로 자바를 사용하는 방법에 대해서 다루고 있다. 조금 더 구체적으로 말 하면, 1 장에서 모던하게 바뀌고 있는 자바에 대해 설명해준다. 그 뒤로부터는 자바의 `람다`에 대한 자세한 활용과 `스트림` 이라는 것, 함수형 프로그래밍에 자주 사용되는 맵, 리듀스, 필터, 리듀스 등 패턴에 대해 알아보고 `RxJava`를 사용하는 내용으로 이어진다. 그 밖에 큰 줄기로 모던한 JAVA의 API들을 소개하는 장도 여럿 있었다. 본인은 우선 공부보다 자바의 현대적 구조, 코딩 스타일에 대해 슥 훑는 정도로 생각하고 간단하게 봤고, 따로 자바를 공부한 다음 읽어보면 더 좋은 시너지를 낼 수 있는 책이었을 것 같다고 생각했다. 아예 자바를 처음 보는 사람은 이 책을 먼저 읽지 않는 게 좋을 것 같다. 자바 개발자라면, 읽어보면 충분히 좋은 내용을 공부할 수 있게 될 것 같다.

(출처 : yes24)

Modern Java in Action (모던 자바 인 액션)

 

나는 자바를 어디 까지 알고 있는 것일까?

기본 문법 서적을 보면 다 아는 내용인거 같고

전문 서적을 보면 기본적인 문법조차 해깔리는거 같다.

이책 "모던 자바 인 액션"을 보면서 들었던 생각이 후자쪽이 었다.

 

[모던 자바 인 액션]은 

표지에 나와있는 문구처럼 "전문가를 위한" 자바 가이드 책이다.

따라서 다루고 있는 내용이 상당히 어렵다.


책의 주 내용은 람다와 스트림, 함수형 프로그래밍을 큰 줄기로 잡고 있다.

모두 자바8 기본 문법 책에 나와 있는 내용이지만

기본 문법 책과는 그 깊이가 다르다.

문법책을 보며 어느정도 이해했다고 생각했던 람다와 스트림이 이렇게 어렵게 다가올 줄 몰랐다.

참... 어려운 책이라 느껴진다...


아직 난 배울게 참 많다.

그래서 즐겁기도 하지만 불안하고 힘들기도 하다.

책을 보고 서평을 쓰면서 이렇게 내 실력이 부끄러웠던 적이 있었던가...


오래전부터 책장을 지키고 있는

기본문법책부터 다시 정독을 해야 하나 싶기도 하다.


그리고 그 후에 다시 한 번 봐야겠다.

자바 기본서로 자바의 기본을 다졌다면 반드시 이 책으로 고급기술을 공부하고 한단계 성장하는 실력있는 개발자로 성장할 수 있기를 바란다

 

이 책은 프로그래밍 트랜드에 맞게 변화해나가는 자바에 대한 내용과 기존 개발자와 초급 개발자들을 위해 반드시 필요한 내용들을 꾹꾹 눌러 담았다 

자바 개발자라면 반드시 두번 세번은 읽어보고 트랜드에 맞는 자바 개발자로 성장하길 바란다 

 

개인적으로 현재까지 나온 최신 자바 중급서로는 이 책이 거의 최고의 책이라고 생각 된다 

 

 

1570962927284.jpg

 

모던자바인액션 은 자바8인액션의 확장팩과 같은 책이었다.

앞선 책에서 부족했던 "Collection API" 의 자세한 소개와 람다 사용 예제들이 많이 보강되었고, 모던 자바라는 제목답게 최근 릴리즈된 자바9의 모듈 기능을 소개하고 와 자바10에 도입된 변수 추론 기능도 소개가 되었다.

그리고 마지막에 자바11과 자바12의 추가될 기능을 소개해주는데 이미 자바 11이 공개된 상황에서 11까지 다뤄지지 못한 부분이 아쉽다. 조만간 자바11인액션으로 출간되지 않을까 하고 기대해 본다.

개인적으로 자바인액션 책은 굳이 초보자부터 전문가까지를 보는 사람을 특정하여 쓴 책은 아니라고 생각한다.

각 버전에서 기능들이 도입된 원인과 시대적 배경이 나오고 해당 기능들을 사용하는 코드들과 다시 한번 깊게 생각해 볼 수 있도록 기습적으로 퀴즈를 제공하고 있기 때문에 처음 자바를 공부하는 분들에게도 좋은 지침서라고 생각한다.

또 이미 현업에 종사하고 있는 개발자들은 자바의 기능들을 개념별로 정리할 수 있게 도와주고, 내가 만든 코드를 좀 더 깔끔하게 다듬을 수 있는 방안을 제시해 주어서 전문가들에게도 좋은 참고서가 될 것 같다.

 

 

 

 

가볍게 읽었다면 두번 보고 싶고 이전 버전 책도 읽어보면서 비교해보고 싶게끔 만드는 재밌는 책인 것 같다.

 

 

책을 읽다가 보면, 책들을 분류하는 개인만의 기준이 생기게 됩니다. 

저는 "읽고 싶은 시간"이라는 기준이 있습니다.

먼저 빠르게 읽고 싶은 책들이 있습니다. 

책의 내용이 박약하거나, 번역이 형편없거나 이런 이유로 읽는 시간이 아까운 그런 책들입니다. 

빨리 읽어 버리고 다음 책을 찾아야 겠다는 생각이 간절하죠
또는 책을 읽는 목표에 부합하지 않는 책이라는 것을 늦게 깨달은 경우 역시 빨리 읽어내려가게 됩니다.  

하지만 책의 내용이 너무 박진감 넘쳐서 

그 놀라운 아이디어들을 빨리 들어보고 싶은 경우, 

책을 빨리 읽고 싶게 됩니다. 

되도록이면 천천히 읽고 싶은 책도 있습니다.

저자의 식견이 너무 뛰어나서,  책 어느 구석에 숨겨져 있을지 모를 식견을 놓칠까봐 천천히 되새기면서 읽어보고 싶은 그런 책들입니다. 

너무 빨리 읽으면 이런 식견들을 이해하고 넘어가지 못할까봐 조심스러워지고 

기억하고 싶은 것들을 너무 한꺼번에 보게 된다면, 책을 덮고 나중에 읽는 것이 오히려 바람직하다고 생각하게 됩니다. 

이런 책들에 경우 읽고 나서 책의 내용을 정리할 때, 가끔 곤욕을 치루지만 ... ( 너무 많은 곳을 남겨 놓겠다고 표시해서, 타이핑이 힘듭니다. )  

그래도 읽은 후 좋은 느낌이 꽤 오래 유지되고, 추후 동료들에게도 적극 추천하게 됩니다. 

그리고, 다시 보고 싶은 책들이 있습니다. 

가끔 탁월한 저서들을 만나게 되는데요. 

이런 책들은 한번 읽고는 스스로 저자의 생각을 이해했다고 확신 할 수 없습니다. 

이런 경우는 책을 다시 읽고 싶게 됩니다. 

일년쯤 간격으로 3번을 다시 읽은 책도 있었습니다. 

마지막으로 오래 곁에 두고 여기 저기 들쳐 보고 싶은 책들이 있습니다. 

프로그래밍 언어의 문법을 설명한 책에 경우 

단순히 문법 설명뿐만 아니라 그 언어가 지향하는 패러다임에 대해서도 잘 설명했다면, 

이런 책은 곁에 두고 오래 봐야 합니다.  그래서 이 언어의 철학을 몸에 익히는 것이 필요하죠. 

이 책은 ...

이 책은 되도록이면 천천히 읽고 난 다음, 

오래 곁에 두고 여기저기 들쳐 보고 싶은 그런 책입니다. 

저자의 식견이 상당히 놀라울 뿐만 아니라 그 내용이 자바의 함수지향적 요소들을 상당히 깊이 이해한 상태에서 설명해주고 있기 때문입니다. 

저자는 자바 8 부터 추가 되기 시작한 함수지향적 요소들을 하나씩 설명해 나가고 있는데요. 그 설명과 관점이 상당히 탁월합니다.  만약 자바함수지향적 요소들에 대해서 이해하고 싶다면 이 책 하나로 충분하다고 이야기 하고 싶습니다 

2016년쯤까지, 

소프트웨어 개발자들에게는 불문율 같은 것이 있었습니다.  

"CPU가 좋아지면 소스코드 최적화가 그리 큰 의미가 없다"는 것입니다. 

"무어의 법칙"에 따라 CPU 속도는 급진적으로 빨라 질텐데 소스코드 레벨에서 속도를 빠르게 하는 것은 어쩌면 그리 큰 의미를 가진 일이 아니었을 테니까요. 

하지만, 2016년쯤, 인텔은 "무어의 법칙(제품개발 계획)"을 포기하게 됩니다. 

즉, CPU 코어 하나의 속도를 늘리는 방식이 아니라 CPU 코어 개수를 늘리는 방식으로 CPU 제품 개발 계획이 변경 된 것입니다. 

따라서 소프트웨어의 속도를 향상 시키기 위해서는 "소프트웨어 레벨의 속도개선 방법"이 필요하게 되었습니다. 

가장 타당한 방식은 함수지향 패러다임의 도입입니다. 

개발자들은 함수지향적으로 코딩을 해서 각 함수를 여러 코어에 나눠 줄 수 있도록 만들고,  JVM과 같은 가상머신 단에서 함수들을 여러 코어에 나눠주는 로직을 가지게 하는 것입니다. 

이런 기술적인 흐름을 이해하고 있었던 선각자들은 자바 언어 그룹에서 함수지향적 요소를 추가할 것을 상당히 강력하게 요구하고 있었다고 합니다.  

물론 자바는 뒤 늦게 8버전부터 이를 수용하여 업그레이드하기 시작했습니다. 

따라서, 

본인이 자바 개발자라면, 이 책을 읽는 것은 "필수" 항목에 해당한다는 것을 이해 해야 합니다. 

 

 

모던자바인액션.jpeg

 

 

20191011_164459.jpg

 

모던 자바 인 액션은 자바 8, 9, 10에서 새로 추가된 주요 기능들을 잘 설명한 책입니다.

단순히 기능만 설명하는 것이 아니라 어떤 경우에 사용할 수 있는지, 그리고 사용하면 어떻게 코드가 개선되는지 예제들을 통해 독자들의 이해를 돕습니다.

함수형 그리고 리액티브 프로그래밍 개념이 지금 자바에 어떻게 스며들었고 어떻게 사용해야 하는지 책 후반부에서 잘 설명하고 있습니다.

라이센스에 의한 지원 문제로 상용 버전이 아니라면 업데이트는 필수로 주기적으로 해야 합니다. 업데이트를 하면서 신규 추가된 기능을 이용해 리팩토링을 한다면 코드의 품질을 높일 수 있을 것입니다.

자바 8부터 일어난 변화들을 이해하고 적용해보고 싶은 분들께 이 책을 추천합니다.

OOOO in Action 시리즈의 첫 책을 접하게 되었다.

모던 자바에 대해서는 어느 정도는 알고 있었으나, 특히 모던 언어에 대한 관심은 어느 정도 있었으나, 이 책은 아무래도 기존에 많은 사람들이 칭찬하던 시리즈이기 때문에 어떤 장점이 있을지 궁금함을 가지고 보게 되었다.

사실 겉으로 보면 조금은 딱딱한 느낌이었기 때문에 쉽게 손이 가지는 않았다.

 

하지만, 기대이상이었다.

이번을 계기로 이 시리즈를 즐겨볼 것 같다.

물론 어느 정도는 딱딱함이 있는 것은 인정하지만, 그렇다고 책이 어려움을 의미하지는 않는다.

충분히 어려워하는 사람을 배려하여 쉽게 읽을 수 있도록 배려한 부분이 많았다.

 

리뷰 시간이 길지 않아 다 읽지는 못했지만, 이후의 시간도 기대하며 읽게 될 것 같다.

모던 자바뿐 아니라 모던 언어의 개념을 잡기에는 좋다고 미리 이야기하며 책 내부에 대한 리뷰도 함께 한다.

 

 

 

사실 표지는 그다지 손이 가지 않았다. 몽골? 중국인? 같은 표지이다 보니 무슨 의미인지도...;;

이 책의 원서 출판사인 매닝은 제프리가 만든 3세기 이전의 다양한 국가 의상을 책 표지로 선정하였다고 한다.

이 것도 그중 하나로 1700년대 중국 티타르의 고급 관리 전쟁 복장이라고 한다.

 

이 책의 부제로는 '전문가를 위한 자바 8, 9, 10 기법 가이드'이다.

 

 

 

모던 자바 자체가 나온지는 시간은 사실 많이 지난 편이지만, 그래도 자바 8, 9, 10을 거쳐오면서 필요한 내용들을 추리고 정리하느라 들인 시간으로 출판일이 얼마 되지는 않는다.

 

또한 부제로 여겨졌던 다른 문구가 하나 더 있었다.

'람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기'이다.

사실 이 책에서 더 기대가 되는 건 위에서 나온 개념이 최근에 부각된 코틀린, 스위프트, 스칼라 등 모던 언어들에서 접하고 있는 개념들이기 때문이다. 이 책은 자바를 통해 이러한 특징을 익히겠지만, 결국은 이 개념을 가져오면 어떤 언어에서든 응용하기 편하리라 생각된다. 모던 언어를 모던 언어답게 사용할 수 있도록 돕는 그런 책이다.

 

 

 

내부 표지는 특별할 것은 없어 보인다. 원 출판사인 매닝이 특히 눈에 띄었다.

 

 

 

이 책에서 다룰 람다, 스트림 등에 대해서 가볍게 접근하는 말을 기록해놓았다.

아마 현직 개발자이신 분들은 다들 들어봤을 법한 단어들이다.

하지만, 이것을 잘 아는 분들도 있을 것이고, 어느 정도만 아는 분들도 있을 것이고, 단어 외에는 잘 모르는 분들도 있을 것이다. 하지만, 그래도 수많은 채용공고에도 언급되고 있는 이 단어들이 중요하다는 것은 누구도 부인할 수 없다고 생각한다.

 

그래서 이 책을 펼치는 데에는 크게 어렵지 않았다.

얼마큼 나를 이해시킬지 기대시켰기 때문이다.

 

 

 

이 책은 다음의 챕터들로 구성되어 있다. 꽤나 챕터 수는 많다.

개인적인 생각엔 챕터보다도 파트가 더 중요한 것 같다.

PART 1. 기초

- CHAPTER 1. 자바 8, 9, 10, 11: 무슨 일이 일어나고 있는가?

- CHAPTER 2. 동작 파라미터화 코드 전달하기

- CHAPTER 3. 람다 표현식

PART 2. 함수형 데이터 처리

- CHAPTER 4. 스트림 소개

- CHAPTER 5. 스트림 활용

- CHAPTER 6. 스트림으로 데이터 수집

- CHPATER 7. 병렬 데이터 처리와 성능

PART 3. 스트림과 람다를 이용한 효과적 프로그래밍

- CHAPTER 8. 컬렉션 API 개선

- CHAPTER 9. 리팩터링, 테스팅, 디버깅

- CHAPTER 10. 람다를 이용한 도메인 전용 언어

PART 4. 매일 자바와 함께

- CHAPTER 11. null대신 Optional 클래스

- CHAPTER 12. 새로운 날짜와 시간 API

- CHAPTER 13. 디폴트 메서드

- CHAPTER 14. 자바 모듈 시스템

PART 5. 개선된 자바 동시성

- CHAPTER 15. CompletableFuture와 리액티브 프로그래밍 컨셉의 기초

- CHAPTER 16. CompletableFuture: 안정적 비동기 프로그래밍

- CHAPTER 17. 리액티브 프로그래밍

PART 6. 함수형 프로그래밍과 자바 진화의 미래

- CHAPTER 18. 함수형 관점으로 생각하기

- CHAPTER 19. 함수형 프로그래밍 기법

- CHAPTER 20. OOP와 FP의 조화: 자바와 스칼라 비교

- CHAPTER 21. 결론 그리고 자바의 미래

부록. 기타 언어 업데이트, 기타 라이브러리 업데이트, 스트림에 여러 연산 병렬로 실행하기, 람다와 JVM 바이트코드

 

이렇게 되어있었다. 엄청난 챕터 수이다....

 

 

 

내용 중 하나를 보면 이러하였다. 실제 디자인 패턴을 언급하면서 그것을 단계별로 모던 언어에 접목시키면서 설명하였다.

즉, A가 Basic 한 단계이고, G가 모던 언어의 단계라면, A -> G 라고 언급하거나, G는 OO이다 라고 언급하는 것이 아니라, A->B가 되는 과정, B->C가 되는 과정, C->D가 되는 과정, D->E가 되는 과정, E->F가 되는 과정, F->G가 되는 과정을 언급하면서 귀납적으로 납득시키는 방법을 사용하였다.

 

매우 도움이 되었다고 생각하며, 이러한 부분으로 인해 이 책이 도움이 될 수 있었다.

아마도 시간이 조금 더 허락한다면, 이 책에서 이해하고 소화한 부분에 대해서는 내 방식대로 다시 재구성하여 내 블로그에 포스팅하게 될 수도 있을 것 같다.

 

 

 

이 책의 마지막 부분이다.

자바에 대해서 언급한 책이기 때문에 관련 도서는 자바에 대한 책을 언급했지만, 리액티브 프로그래밍이나, 코틀린을 갖다 놓아도 크게 이상하지는 않을 정도이다. 어차피 언어를 언급하는 것에 포커싱이 맞춰진 책이 아니기 때문이다.

 

장점으로는

- 모던 자바의 개념을 익히는데 차근차근히 설명해주어 친절하게 느껴진다.

- 여러 개념을 산재하는 것이 아니라, 람다, 스트림, 함수형, 리액티브 등 중요한 부분만 포커싱 했기 때문에 집중이 잘 되는 구성이다.

- 번역에 많이 신경 쓴 느낌이 보인다. 개념을 설명한 책이기 때문에 어려울 수 있는 부분들이 부드럽게 읽힌다.

 

아쉬운 점으로는

- 책의 표지를 비롯하여 내부 디자인에 대해서는 대충 훑어보면 그다지 매력적이지 않다.

- 중간중간 있는 퀴즈에 정답이 바로 이어져 있어서 문제를 풀기보다는 바로 참고할 가능성이 높다.
- 전반적으로 도표(설명에 필요한 부분들 제외)가 많지 않다 보니, 한눈에 들어오는 요점정리는 적은 느낌이다. 물론 요점정리는 있다.

- 프레디케이트와 같은 부분은 영어로 적어도 되었을 것 같기는 한데... 이것은 개인적인 느낌이다.

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

가격: 7 / 10

내용: 10 / 10

디자인: 6 / 10

구성: 8 / 10

 

저자: 라울-게이브리얼 우르마, 마리오 푸스코, 앨런 마이크로프트

옮긴이: 우정은

 

추천 독자: 모던 언어의 개념을 제대로 알고 싶은 초중급 이상의 개발자, 자바를 업으로 하는 개발자, 고급언어를 주로 상대하는 개발자

 

가격: 34,000원

전체 페이지: 692페이지

 

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

 

 

 

책소개

자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다. 이 책은 함수형 언어의 영감을 받아 자바 8, 9, 10에 추가된 람다, 스트림, 함수형 프로그래밍, 자바 모듈 시스템, 병렬화와 공유 가변 데이터, 동작 파라미터화 등의 주요 기능을 자바 개발자에게 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 이 책은 『자바 8 인 액션』의 개정판으로서 1, 8, 10, 4, 17, 21장은 신규 추가되거나, 그에 준하는 큰 수정이 있었다. 부록을 뺀 나머지 모든 장도 수정 보강되었다.

 

<이 책의 구성>

이 책은 크게 ‘기초’, ‘함수형 데이터 처리’, ‘스트림과 람다를 이용한 효과적 프로그래밍’, ‘매일 자바와 함께’, ‘개선된 자바 동시성’, ‘함수형 프로그래밍과 자바 진화의 미래’ 여섯 가지 내용으로 구성되었다. 처음 1부와 2부에서 소개하는 장들은 순서대로 읽어야 앞뒤 문맥을 이해할 수 있으며 나머지 네 개 부는 각각 독립적인 내용으로 구성되어 있으므로 어떤 순서로든 읽을 수 있다. 대부분의 장에는 직접 실습할 수 있도록 다양한 퀴즈를 포함했다.

 

1부 : 자바 8을 처음 접하는 독자에게 적합한 내용을 다루는 세 개 장을 제공한다. 1부를 끝낼 즈음엔 람다 표현식이 무엇인지 이해할 수 있고, 람다를 이용해서 변화하는 요구사항에 쉽게 대응할 수 있는 간결하면서도 유연한 코드를 구현할 수 있게 될 것이다.

 

 

http://www.hanbit.co.kr/store/books/look.php?p_code=B4926602499

 

 

모던 자바 인 액션 : 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기

자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다.

www.hanbit.co.kr

 

 

 

 

이번 리뷰는 '모던 자바 인 액션' 이라는 책으로 19년 8월에 출간 된 책입니다.

책을 읽기 전부터 기대가 가득했던 책입니다. 기초적인 자바 지식은 알고 있지만 자바8부터 나온 Stream(스트림)에 대한 내용을 자세히 모르고 있었던 찰나, 스트림 등 새로운 내용을 배울 수 있는 책이 등장 했기 때문입니다.

 

 

 

 

자바 8, 9, 10, 11로 쭉쭉 버전이 업데이트 되고 있습니다.

자바 9는 모듈형 프로그래밍이 가능해진것으로 알고 있습니다. 안정성 문제와 호환성 문제로 아직까지 8 버전으로 개발하고 있지만 이후 버전에 대해서 자세한 내용을 알고 싶으신 분들에게 추천드릴 수 있는 책이라고 생각됩니다.

 

 

 

책은 자바 버전이 어떻게 달라졌는지, 어떤 내용들이 추가됐는지를 자세히 설명해주고 있습니다. 알고리즘, 자료구조를 떠나 자바에 대해서 깊은 내용을 공부하기 위한 책이라는 생각이 읽는 내내 들었습니다. 지금에서라도 이런 책으로 공부를 할 수 있게 책을 출간한 한빛미디어분들에게 감사의 말씀을 전합니다.

 

 

 

 

뿐만 아니라 새로운 기능을 이용하면 얼마나 더 효율적인지를 기존 코드와 비교해서 알려주며, 람다를 사용한 새로운 코드 등에 대해서도 확인 할 수 있습니다. 책 내용 하나 하나 상세한 설명이 있으며, 알찬 내용으로 가득합니다. 

새로운 도구에 익숙해질 준비를 모던 자바 인 액션과 함께 하시는건 어떨까요?

 

 

<이 책의 리뷰는 한빛미디어 '나는 리뷰어다'로 부터 책을 지원받아 작성된 글입니다.>

 

IT도서에도 여러 시리즈가 있는데 '인 액션' 시리즈도 내가 좋아하는 시리즈 중 하나이다.
그 이유는 높은 퀄리티와 바로 실전에서 사용할 수 있는 코드가 있다는 것이다.
이 책 '모던 자바 인 액션'도 그런 시리즈의 특징을 잘 따르고 있다.
 

java.jpg

 

 
자바도 버전이 있는데 이 책은 버전명을 명시하지 않고 '모던'이란 단어를 썼다.
왜일까?
자바 8, 9, 10을 한꺼번에 이 책에서 다루고 있기에 특정 버전을 명시하지 않았고, 무엇보다 자바 8부터 많이 달라졌기에 그것을 강조하기 위함이 아닐까 생각된다.
자바가 많이 사용되기는 하였지만, 언어 자체로만 봤을 때 8 이전에는 그리 큰 변화가 없었다.
그러다가 8부터 객체지향에서 강점을 보였던 자바가 함수형 표현인 람다 표현식을 지원하였다.
 
대부분의 '인 액션'시리즈가 그러하듯이 이 책 또한 초보자가 보기에 적당한 책은 아니다.
초급을 벗어나 어느 정도의 경험이 있는 개발자라면 많은 것을 배울 수 있는 책이다.
차례에서도 나타나듯이 자바의 기초부터 하나하나 알려주기 보다는 자바 8 이후에 개선되거나, 새로이 선보이는 기능들에 대해 집중적으로 설명해 주고 있다.
표지의 '전문가를 위한 자바 8,9,10 기법 가이드'란 표현이 이 책을 가장 잘 나타내 주고 있는 것 같다.
 
함수형 데이터 처리 방법과 그것을 람다를 사용해서 어떻게 프로그래밍하는지를 가장 중점적으로 설명해 주고 있다.
그리고 개선된 동시성을 어떻게 사용해야 하는지에 대해서도 알려준다.
 
이 책의 내용을 모두 알고 있다면 자바 전문가라 해도 손색이 없을 것이다.
최근 버전의 자바의 특징까지 완벽하게 알고 있다는 의미이기 때문이다.
(여기서 최근 버전이란 현재 라이브 프로젝트에서 최신 버전인 자바 12를 사용하는 프로젝트가 아직 그리 많지 않기 때문이다.)
마지막에서 소개한 '함수형 프로그래밍과 자바 진화의 미래'는 향후 자바의 발전 방향을 가늠해볼 수 있는 좋은 글이였다.
 
주변을 보면 현재 러닝되고 있는 시스템 특징때문에 자바 8 이전의 프로그래밍을 하는 개발자가 상당수 있다.
지금 당장 사용하지 않는다고 자바 8 이후의 프로그래밍에 대해 알지 못한다면 미래가 그리 밝지 못할 수 있다.

 

자바 8에서 도입된 새로운 기술을 쉽게 배울 수 있었던 <자바 8 인 액션>이 개정되어, 새로운 이름인 <모던 자바 인 액션>으로 우리들을 찾아왔습니다. 이 책의 대표 저자는 'Raoul-Gabriel Urma'이며, 번역은 이 책의 전작에서 호평을 받았던 우정은 님께서 맡아주셨습니다.

<모던 자바 인 액션>은 자바 8의 범위를 넘어 자바 8 ~ 자바 11에 도입된 새로운 기술들(Lambda, Method Reference, Jigsaw, Reactive Programming Toolkit, and etc)을 포함하여 <자바 8 인 액션>보다 다양한 내용을 담고 있습니다. 조금 더 풍성해진 <모던 자바 인 액션>으로 새로운 자바를 만나보세요.
 

이 책에서 다루는 내용은?

<모던 자바 인 액션>은 <자바 8 인 액션>의 개정판으로 이 책의 완성도는 훌륭합니다. 이미 전작에서 그 품질을 충분히 보여줬음에도 독자들에게 피드백을 받아 기존 내용을 보강했고, 새로운 자바(9, 10, 11)에 도입된 새로운 기술을 추가하여 개정 증보했습니다. 

이 책의 초반부에서는 자바 8~11까지 자바의 변화 내용을 다룹니다. 자바에 도입된 함수형 프로그래밍 기법에 대한 소개가 주요 내용이라고 이해하면 좋을 것 같습니다. 중반부에는 새로 도입(개선)된 API에 대한 소개와 자바 9에서 도입된 자바 모듈 시스템(Jigsaw)에 대해 소개하고 있습니다. 참고로 자바 모듈 시스템은 기획부터 구현까지 약 10여 년에 걸친 큰 프로젝트였습니다. 시중에 다양한 책이 나와있습니다만, 이 책을 통해 자바 모듈 시스템의 기본 사용법에 대해 학습할 수 있습니다. 개인적으로 매우 좋은 아이디어라고 생각하지만, 실제 자바 생태계에 도입되기에는 꽤 오랜 시간이 걸릴 것으로 판단합니다. 이 책의 후반부에는 리액티브 프로그래밍과 함수형 프로그래밍의 활용법에 관해 이야기합니다. 개인적으로 이 책의 후반부에서 다룬 내용에 흥미가 높아 재미있게 살펴본 부분입니다. 

2018년부터 자바의 개선 주기가 6개월로 앞당겨졌습니다. 최신 프로그래밍 언어의 진화 속도가 매우 빨라졌으므로 자바의 이런 결정은 바람직한 현상으로 판단합니다. 하지만 프로젝트에서 사용할 때는 기본적으로 3년마다 출시되는 장기 지원(Long-term Support, LTS) 버전을 사용하는 것을 추천합니다. 2019년 9월 기준으로 자바 13이 배포되었고, LTS 최신 버전은 자바 11입니다.

<모던 자바 인 액션>은 자바 8 이상 버전을 사용하는 자바 개발자는 꼭 한 번 정독했으면 합니다. 새로운 기술뿐만 아니라, 개발의 편의성을 얻을 수 있으며, 프로그래밍 기술도 진일보할 수 있다고 생각합니다. 

마치면서

<모던 자바 인 액션>은 21 챕터와 4 부록으로 약 700페이지 분량으로 구성되어 있습니다. 전작인 <자바 8 인 액션>도 재미있게 봤었는데, <모던 자바 인 액션>은 기존 내용을 다듬고 새로운 부분을 추가하여 더욱더 흥미롭습니다. 이 책은 자바의 기본서는 아닙니다. 자바의 기본서인 <이것이 자바다>, <혼자 공부하는 자바>를 읽고 학습한 후, <모던 자바 인 액션>을 활용하여 최신 자바 기술을 학습하는 것을 추천합니다.

필자가 소속된 연구실에서 자바 학습이 필요해 <자바 8 인 액션>으로 세미나를 계획하던 중 <모던 자바 인 액션>이 출간되어 교재를 변경했던 에피소드를 주기도 한 <모던 자바 인 액션>은 자바 8 이후 도입된 새로운 기법들을 효과적으로 학습하는데, 좋은 지침서입니다.

 

최근 들어 자바 버전이 굉장히 자주 업데이트 되고 있다. 그러다 보니 새로운 기능에 대해서 아는게 별로 없구나라는 생각을 자주 했었다. 마침 이렇게 새로운 버전에 대해서 리뷰할 기회가 되서 공부를 하게 되었다. 

 

우선 이 책은 총 21개의 챕터로 구성이 되어있고 600 페이지가 넘어가는 책이다. 앞에서 부터 차근차근 읽기에는 끈기와 노력이 필요하다. 그래서 나도 처음에는 차근차근 읽어가다가 어느정도 기본 개념에 대한 내용을 파악하고 난 후에는 실제로 내가 회사에서 사용해 볼 수 있는 부분부터 읽어 나가기 시작했다. . 

 

단, 최소한 5장까지는 차례대로 읽어보는 것을 권하고 싶다. 왜냐하면 5장까지의 내용을 알아야 뒤에 나오는 내용을 파악하는데 좀 수월해 진다. 5장의 내용이 위에 보듯이 스트림에 관련된 내용이다. 내 기준에서는 새로운 기능(?) 중에서 가장 쉽게 접하고 많이 써먹을 수 있는 기능이 아닐까 생각이 되었다. 그래서 5장까지 읽어 보라 한것이다. 

 

 

내가 읽으면서 가장 좋았던 내용이다. 스트림을 저렇게 설명한 그림은 처음 보는것 같다. 각각의 단계별로 그림을 통해서 내부적으로 어떻게 동작하는지 그리고 결과는 어떤 타입인지 설명을 해줘서 이해하기가 쉬웠다. 저렇게 각각의 리턴을 생각해보면서 써본적이 없었는데 이제야 제대로 알고 쓸수 있게 되었다. 

 

 

날짜 부분도 내가 관심있어 하는 부분이었다. 로컬타임, UTC, 타임존, 썸머타임 등등. 그런데 날짜 관련 해서는 사용 예 보다는 메서드 위주로 설명이 되어 있어서 약간 아쉬웠다. 아마도 최근에 날짜나 시간 관련해서 사용할 일들이 많아져서 개념과 함께 예들을 많이 보면 좋겠다라는 생각이 든것 같다. 

 

앞에서도 말했듯이 이 책은 도큐먼트 같은 성격의 책이다. 앞장부터 정주행하기 보다는 내가 먼저 사용해볼수 있는 부분에 대해서 찾아가면서 읽고 공부하는게 더 효율적인 책이다. 그리고 버전 8, 9, 10 에서 추가 된 내용들도 설명을 해주기 때문에 그동안 미뤄놨던 기능들을 마치 All in One 같이 알아볼 수 있다. 그래서 자바의 새로 추가된 기능들에 대해서 한번 정도 정리해보고 싶거나 하는 개발자들에게 많은 도움이 될것 같다. 


https://blusky10.tistory.com/413

 
 
오랜만에 추석 연휴도 있고 해서 응용서가 아닌 자바 기본서를 하나 골랐다.
 
기본서라고 했지만 사실은 기본서가 아니라 자바의 중급 이상 주제들을 다룬다고 생각 된다.
 
이 책에서는 역자의 말처럼 람다, 스트림, 리액티브, 함수형, 모듈 등의 자바 8 이후에 추가되거나 개선된 내용에 대해서만 다룬다. 
 
그래서 자바를 오래전에 해봤던 사람들도 새로운 패러다임이나 기능, 용어에 살짝 당황할수도 있는 내용들이다.
 
분량이 700 페이지에 육박하고 응용서가 아니기에 쉽게 읽어버릴거라는 예상과는 달리 진도가 쉽게 나가는 책은 아니었다.
 
그 이유는 이 책에서 다루는 위의 내용들 때문이었다. 본인도 자바를 접한지 20년이 넘었기에 특히 람다, 함수형 같은 부분은
 
소스 코드를 봐도 어떤 내용인지 예상이 안되는 경우도 있다. 
 
아마도 처음부터 이 책의 의도는 이런 문제를 해결하기 위한것 처럼 보이기도 할 정도로 이런 부분들만 다루고 있는 책이다.
 
따라서 주제도 살짝 머리 아프고 좀 투박하다. 컬러판도 아니고 이쁜 그림들이 아닌 단수한 그림들로만 설명을 하고 있어,
 
이해도나 가독성 측면에서는 약간 아쉬움이 남는다.
 
책의 중반까지는 특히나 map, reduce 가 많이 등장한다. 마치 하둡 책을 보는 착각이 들 정도였다.
 
책의 예제를 모두 실행해보려면 자바 8을 설치해서는 에러가 날 것이다. 
 
이 책은 자바 8 이후 버전의 내용에 대해서도 다루기 때문에 자바 9 또는 자바 10을 설치해야 할 수도 있다.
 
최근 내가 경험한 대부분의 현업에서는 자바 8을 사용하므로 이 부분을 유의 해야 한다.
 
그리고 끝 부분에는 자바와 스칼라에 대해서도 비교하는 내용도 있다. 
 
당연히 이 예제들을 실행해보기 위해서는 스칼라도 설치 해야 할 것이다. 
 
최신 자바를 좀 더 효율적으로 사용하거나 오래전에 손을 놓은 분들에게는 추천할만한 책이다.
 
그러나 자바 기본 문법이나 사용법 또는 "헬로 월드"를 원하는 초보자는 이 책을 봐서는 안된다.
 
"자바가 이렇게 어려운거야? 도대체 무슨 내용인지 하나도 모르겠다ㅜ.ㅜ" 라고 하면서 자바를 포기할수도 있으니까...

1. 개요

- Java는 7버전까지는 크게 변화하지 않았지만 8버전에 급변을 하면서 9와 10에서도 여러가지 변화가 있었습니다.  해당 변화에 대해 여러가지 정리된 책이 필요해서 읽게 되었습니다.

 

2. 책을 읽고

 

- Java 8, 9, 10 버전의 변화에대해 정리 된 책입니다. 타사의 '가장 빨리 만나는 코어 자바9' 책과 목표가 비슷합니다. 그렇지만 두 책은 차이가 있습니다. '가장 빨리만나는 코어 자바9' 의 책은 자바 9의 기준으로 변화된 자바의 모습의 프로그래밍의 기본적인 모습부터 추가된 기능 까지 총망라되어 있는 형식으로 되어 있지만, '모던 자바 인 액션' 은  변화된 항목 기준으로 더 심화되게 다루고 있습니다. 이미 Java를 알고 사용하고 있는 개발자라면 '모던 자바 인 액션' 의 책을 선택하시는 것이 더 좋을 것 같습니다.

 

- 이 책을 읽으면서 java8의 여러 API들을 얕게 사용하고 있었음을 깨달을 수 있었습니다. 회사 업무를 하는데 더 많이 활용하면서 손에 익숙하게 하는 과정이 필요하겠지만, 많은 부분에서 더 나은 코드를 짤 수 있겠다는 생각이 들었습니다.

 

- Java는 현대적인 언어(코틀린, 스위프트 등) 에 비해 발전이 더디고, 간편하지 않은 언어라는 인식이 있었습니다만, 아직은 조금은 부족하다고 생각하지만, 8, 9, 10을 거치며 많은 개선이 이루어진 것 같습니다. 



B4926602499_l.jpg

 

한빛미디어의 리뷰어라는 좋은 기회를 받아서 해당 책을 읽어 보게 되었습니다. 

 

본 책으로 인하여 새로운 자바 문법에 대하여 이해할 수 있었고 막연히 알고 있던 람다와 스트림에 대하여 깊게 이해할 수 있었습니다. 

 

각 장마다 예제 퀴즈로 배운 내용을 학습 할 수 있게 도와 주었고 예제 코드는 다 한빛 미디어 링크에 첨부하여 학습하기 편하였습니다. 

개인적으로  1장과 2장은 꼭 읽어 보길 추천드리며 
그 외에도 나머지 챕터에 나오는 내용들도 FP에 관심있는 독자들이면 흥미를 가질 내용이 많다고 생각합니다. 

 

in Action은 신뢰하는 시리지중 하나인데 기대를 저버리지 않고 꼭 한번씩 읽어 보기를 권해 드리며 

자바를 처음 접하는 독자 말고 어느정도 자바의 문법을 이해하고 계시는 분들이 본 책을 읽으면 더 빠른 속도로 책이 읽혀질거라 생각합니다. 

 

KOTLIN이나 RX관련 여러가지 FP의 개념들을 보다 자세히 익힐 수 있는 점에서 본 책을 추천 드립니다. 

 

 

KakaoTalk_20190915_154607696_02.jpg

 

 

소개

제목

모던 자바 인 액션(Modern Java in Action) - 전문가를 위한 자바 8, 9, 10 기법 가이드

저자

라울-게이브리얼 우르마, 마리오 푸스코, 앨런 마이크로프트

출판사

한빛미디어

리뷰

대상

중급 이상의 Java 개발자 중에서 최신 Java에 대해서 깊이 있게 공부하고자 하는 사람에게 추천

세줄 요약

Java 8이상에 추가된 람다 표현식(Lambda Expression)과 스트림(Stream) API 소개

Java 8, 9의 람다, 스트림의 활용 및 최신 프로그래밍 기법 설명

Java의 고급 병렬 프로그래밍 및 함수형 프로그래밍

리뷰

Java는 가장 인기 있는 언어로 자리 잡았으나, 끊임 없이 다른 언어들로부터 그 자리를 위협 받고 있습니다. Javascript는 프론트엔드 뿐만 아니라 서버 프로그래밍용으로도 자리를 넓혀 가고 있고, Python은 좋은 생산성을 가지되, 특히 AI가 발전하면서 많은 부분에서 활용되면서 인기가 높아지고 있습니다. 이러한 상황에서 Java는 생존을 위해 끊임 없이 발전을 할 수 밖에 없었습니다. 이러한 과정에서 람다 표현식, 스트림, 함수형, 리액티브 프로그래밍이 추가된 것은 생존을 위한 어쩔 수 없는 선택이었다고 생각됩니다.

객체지향이 유행하면서 자연스럽게 C에서 C++, Java 등이 유행하게 되었고, JVM으로 돌아가는 Java는 개발자에게 있어서 C보다 많은 편리함을 제공해 주었습니다. 특히나 서버 개발 언어로서 인기를 끌었고 Spring을 기반으로 한 전자정부프레임워크를 표준으로 삼은 우리나라에서는 아주 대중적인 언어가 되었습니다. 하지만 생산성에서 문제가 되었고, C와 비교되는 성능 이슈, 함수형 프로그래밍, 머신 러닝 및 AI가 유행하면서 그 자리를 위협받고 있습니다.

Part I, II 에서는 Java 8, 9, 10, 11에서의 변화를 다룹니다. 람다 표현식이 무엇인지, 스트림 API를 사용하여 데이터를 어떻게 수집하고 처리하는 지 설명하여, 추가로 스트림을 활용한 병렬 데이터 처리에 대해 설명합니다. 개인적으로 Java 7 이전과 Java 8 이후는 그 차이가 매우 크다고 생각합니다. 특히나 람다식과 스트림을 이용하여 훨씬 간결한 코드를 작성할 수 있고, 함수형 프로그래밍의 개념을 적용할 수 있습니다.

Part III, IV에서는 최신 Java 프로그래밍 기법을 설명합니다. 일반적으로 프로그래밍 시 가장 많이 사용하는 Collection API의 개선된 점에 대해서 다루며, 람다를 활용한 리팩터링, 테스팅, 디버깅을 설명합니다. 추가로 null 처리, 새로운 날짜와 시간 API 및 Java 모듈 시스템에 대해서 설명합니다. 중급 이상의 개발자분들이라면 리팩터링이 얼마나 중요한지는 잘 아시리라 믿습니다. 이 파트에서는 람다 및 새로운 API 등을 활용하여 리팩토링을 하고자 한다면 반드시 읽어야 하는 부분입니다.

Part V, VI에서는 Java에서는 동시성 및 Java 진화의 방향을 다룹니다. 컴퓨터 하드웨어의 가격이 저렴해지면서 많은 수의 core를 가진 PC 및 서버가 증가하였습니다. 이에 프로그램의 성능을 위해 다중 코어를 활용하기 위한 멀티 쓰레딩 프로그래밍 및 동시성 프로그래밍은 필수가 되었습니다. Part V에서는 개선된 자바의 동시성에 대한 설명을 합니다. 마지막으로 Part VI에서는 한수형 프로그래밍 기법에 대해서 자세히 설명하며 Java의 발전 방향에 대해서 설명합니다.

후기

Java로 개발을 한 지 10년이 넘은 시점에서 Java 7 이하로 개발된 레거시 시스템을 개발하고 리팩토링하면서 그 한계를 느끼곤 합니다. 위에서 언급했듯이 함수형 프로그래밍이 유행하고, 하드웨어가 저렴해지고, 그에 따라 AI와 ML이 유행하면서 Java는 변화할 수 밖에 없었다고 생각합니다. 특히 Java 8에서의 변화는 그 변화의 크기가 큽니다. 새로운 시대의 흐름에 맞추기 위해서 Java라는 언어도 변화를 하였고, 이를 활용하는 프로그래머도 변화를 해야합니다. 이 책은 '자바 8 인 액션'과 함께 새로운 Java를 익히기 위해서 가장 좋은 책이라 생각됩니다. 새로운 Java에 대해서 깊이 있게 공부하고자 하는 중급 이상의 개발자에게 아주 좋은 책이라 생각됩니다.

 

 

 

hanbit-mordern_java_in_action-01.jpeg

 

자바는 8 부터 많은 것들이 바뀌었다고 한다. 그래서 언젠가 한번 최신 스택을 공부하겠다고 다짐했을 때 믿고보는 in action 시리즈 가 믿고 사는 출판사 한빛 미디어 에서 나온 것을 보고 지원하게 되었다.

처음 책을 받은 후 700 페이지 정도의 책 분량의 압박이 존재했던건 사실이다. 하지만 역시나 다른 in action 시리즈와 비슷한 방식으로 상세한 설명을 해주다 보니 늘어날 수 밖에 없는 상황이었던 것 같다.(작가님, 역자님 감사합니다) 자바8,9,10 에서 추가된 스펙을 정말 알아듣기 쉽게 설명해준다. 또한 예시와 함께 제시해주니 어느 때 써야할지 감을 잡을 수 있게 해준 것 같다.

물론, 자바8이 나온지 벌써 몇년이 지났기 때문에 아마 이미 사용하고 있는 사람도 많을 것 같다. 작성자의 경우도 Optional 이라던지, Stream API 등은 이미 실무에서 계속해서 사용하고 있던 것들이다. 하지만 항상 사용하던 것들만 사용하게 되고, 그냥 쓰면 좋다니까 별 생각 없이 사용해왔었던 것 같다. 그러다 보니, 이 책을 읽으니 이제는 최신 문법이 어떤 구조로 되어 있고, 어떻게 사용해야 잘 사용하는 방법인지 대충 감을 잡을 수 있었던 것 같다.

하지만 이 책의 경우 각잡고 열심히 읽어야 하는, 실습을 반드시 따라하면서 봐야하는 책은 아닌 것 같다. 오히려 지하철이나 버스에서 오며가며 읽어보고 나중에 프로젝트에서 사용하게 될 때 레퍼런스 책으로 사용하면 좋을 것 같다는 생각이 든다. 특히, 작성자처럼 이런 스펙을 왜 사용해야 하는지, 어떤 구조로 되어있는지 궁금한 사람들이 보면 좋을 것 같다고 생각한다.

다만, 기본 자바 문법을 설명하는 책이 아니기 때문에, 어느정도 자바를 사용할 수 있는 사람이 읽어야하지 않나 싶다.

이런 점들을 고려해 봤을 때 총 평은 최신 자바 문법을 이해하고 사용하고 싶은 사람을 위한 책 이라고 하고 싶다.

 

hanbit-mordern_java_in_action-02.jpeg

 

책의 구성은 역시나 최신 자바 스펙을 기존코드 -> 새로운 스펙을 사용한 코드 로 리펙토링을 해가면서 설명한다. 초반에 이해해야만 하는 스트림, 람다 등에 대해서 설명하고 후반부애서는 함수형 프로그래밍, 리액티브 프로그래밍에 대해서 설명해준다.

위 사진에서 보듯이 잘 이해하기 힘든 부분들은 그림으로 도식화하거나, UML 을 만들어서 보여주는 경우도 많다. 또한 in action 시리즈의 특징인데, 글에서 설명한 모든 것을 예제 코드에 주석으로 설명해준다. 그러다보니 설명 읽고, 코드를 읽으면 이해하기 정말 편하다. 그 때문에, 직접 실습을 안해도 될 것 같다는 느낌이 든 것이다.

그 후엔 아래 사진처럼 설명한 스펙에 대한 퀴즈가 나오는데, 이를 정답을 보지 않고 풀어나가다 보면 도움이 될 것이라 생각한다. 작성자의 경우도 실습은 하지 않아도 퀴즈는 직접 손코딩으로 한번씩 풀어보았다.

마지막에는 지금까지 설명한 메서드들, 설명하진 않았지만 사용할 수 있는 메서드를 요약해서 표로 나타내 주기 때문에 전체적으로 요약해서 보기 좋다.

 

hanbit-mordern_java_in_action-03.jpeg

 

이번 책은 작성자의 실무와 매우 밀접하게 있는 분야라서 그런지 정말 흥미 있게 읽을 수 있었던 것 같다. 아무래도, “내가 썼던 API 가 이렇게 사용되는 구나” 라던가 “내가 짰던 코드를 이렇게 리펙토링 해봐야 겠다” 등의 생각을 하게 되었다. 물론, 현재는 리펙토링을 할만한 시간이 조금 부족해서 지금 개발하는 부분에 적용해볼까 생각중이다. 나중에 기능 개발이 완료되면 이 책을 레퍼런스 삼아 리펙토링을 진행해보고 싶다.

이 책의 장점은 기본적인 자바 문법을 설명하는 것이 아니라, 최신 자바 문법만을 모아놓고 거진 700 페이지 분량으로 설명했기 때문에 기존에 자바를 사용하던 사라도 새로운 문법을 많이 볼 수 있는 책이 아닐까 싶다.

물론 단점으로는 개념서이기 때문에, 프로젝트에 직접 적용할 때는 더 많은 고민이 들어가야 하지 않을까 싶다.

결론적으로 이 책을

  • 1 자바를 프로젝트에서 사용해본 사람
  • 2 자바를 사용하면서 좀 더 발전하고 싶은 사람
  • 3 이미 최신 스펙을 쓰지만 어떤 구조로 되어 있는지 궁금한 사람

등에게 추천하고 싶다.

프로그래밍 기본서를 보고나면 여러가지 개발을 시작할 수 있다. 단순한 개발부터 시작해서 조금씩 다양한 프로젝트를 경험하다 보면 중급서에 대한 갈증이 생긴다. 그리고 단순히 개발만 하는 것이 아니라 어떻게 해야 '잘' 하는 것인지에 대한 의문이 생긴다.

그리고 잘하는 방법은 경험이 풍부하고 진짜 잘하는 사람에게 배울 수 있다.

잘하고 싶은 자바 개발자들이라면 이 책을 한 번 읽어보길 추천한다. 바로 '모던 자바 인 액션'이다.

자바는 1995년에 처음 등장한 자바1을 필두로 2014년에는 자바8까지 등장했다. 그리고 올해에 자바12까지 나온 것으로 알고 있다.

이 책은 제목처럼 모던 자바에 대해서 이야기한다. 20여년 동안 자바도 많은 변화가 있었다. 자바8 부터는 람다 표현식이 추가되었고 함수형 프로그래밍에 적절한 모습을 갖추기도 했다.

당연히 이 책에서는 람다에 대해서 이야기하고 있다. 아직 람다가 뭔지 모르고 모던 자바에 익숙하지 않아도 이 책으로 충분히 학습이 가능하다는 뜻이다.

또한 새로운 개념들에 대해서 그림을 통한 비유를 하여 이해를 높이고 있다. 단순 텍스트 이론만 있는 것보다 읽기의 피로도를 줄이고 이해도를 높이는 효과가 크다.

자바 입문자로 간혹 for가 빠르냐 while이 빠르냐와 같은 질문을 하기도 한다. 여기서는 성능에 대한 이야기도 하는데 커스텀 컬렉터로 성능 향상을 하는 과정도 다룬다.

조금씩 살펴본 내용은 이 책의 일부에 지나지 않는다. 자바 숙련자이지만 아직 과거의 자바에 머물고 있는 사람이나, 자바 초보자지만 모던 자바를 학습하고 싶은 사람 모두에게 만족을 줄만한 책인 것 같다.

이제 당신도 새로운 도구에 익숙해질 시간입니다.

 

tiobe_index.png

from http://tiobe.com


위의 표는 2019년 9월 발표된 프로그래머들이 선호하는 프로그래밍 언어의 순위를 나타내는 TIOBE Index 이다.  또한 아래 표는 2001년 6월부터 현재까지 상위 10개 언어의 점유율 분포를 나타낸 그래프이다. 표와 그래프에서 보는 것과 같이 최근 20여년간 Java는 C와 더불어 가장 많이 쓰이는 언어의 자리를 굳건히 지키고 있다. (최근 인공지능에 대한 열풍 등으로 파이썬의 강력한 추격을 받고 있은 것은 주지의 사실이나, 분야가 조금 다를 수 있다는 게 필자의 생각이다.) 

tiobe_index_2.png

from http://tiobe.com

 

Java가 이렇게 많은 인기를 누리는 이유는 무엇일까? 반대로 인기있는 프로그래밍 언어가 되려면 어떤 조건이 필요할까? 이 질문에 대한 첫번째 대답은 바로 ‘쓸모’있는 것이어야 한다는 것이 필자의 생각이다. 이 세상에는 정말 수많은 프로그래밍 언어가 존재한다. 개별 언어는 나름의 존재 이유가 있고 쓸모가 있다. 그래서 만들어진 것이다. 범용적인 언어 뿐 아니라 특정 분야에 한정되어 사용되는 언어, 예를 들면 발전소를 동작시키기 위해 만든 언어도 있고, 통신 기기를 제어하기 위해 만든 언어도 있다. 이런 언어가 널리 사용되려면 그 언어가 가진 ‘쓸모’가 더 많은 사람에게 유용해야 한다. 그리고 그 유용성은 프로그래밍을 하는 환경에 많은 영향을 받게 된다. Java가 초기에 이 유용성을 확보하게 된 것은 ‘객체지향’이었다. 그 전에도 객체지향 언어가 없었던 것은 아니지만 개발자가 다루어야 하는 문제의 복잡도가 커짐과 동시에 그러한 문제들을 해결하기 위한 객체 지향적 해결 방안이 활발이 연구되던 시기였다. 이와 더불어 Java를 무료로 사용할 수 있도록 한 썬마이크로시스템즈의 정책, Java VM을 사용함으로써 얻을 수 있는 플랫폼 독립성 등으로 대학을 비롯한 학계 뿐 아니라, 산업 전반에서 널리 Java를 사용하게 되었다. 초기 Java의 대중에게 자리를 잡을 수 있게 된 이유는 한마디로 기존과 달라진 프로그래밍 환경에 대한 새로운 ‘쓸모’가 있었기 때문이다.

java2se12.png

(Java SE 12 Download Page : http://java.oracle.com/ )


1996년 JDK 1.0이 발표된 이후로, Java는 변화를 계속하고 있다. 현재 Oracle을 통해 배포되고 있는 Java는 Java SE 12 이다. Java는 환경에 따라 SE, EE, ME 등으로 나눌 수 있지만, 그 중심에는 Standard Edition인 SE가 있고, Java 기술의 기본이 된다. 이렇게 Java가 계속해서 버전 업 되는 이유는 무엇일까? 초창기 Java가 복잡해진 프로그래밍 환경에 새로운 ‘쓸모’로 등장했던 것처럼, 변화하고 있는 환경에 계속해서 ‘쓸모’있음을 유지하기 위한 것이다. 문제를 보다 더 간결하게 해결하거나, 문제를 푸는 새로운 방법을 제시할 수 있도록 진화하고 있는 것이다.
 

리사이즈.jpg

 


‘모던 자바 인 액션’은 이렇게 진화하고 있는 Java의 새로운 면모를 집중적으로 다루고 있다. 특히 Java 8, 9, 10 에서 도입된 여러 변화를 설명하며, 이후 자바의 미래에 대해서도 짧게 나마 알아 볼 수 있도록 하였다. 전체 Chapter의 수는 21개에 달하며, 이를 6개의 파트로 구성하고 있다. 첫번째 파트인 1부에서는 Java 진화에 대한 이야기를 위한 기초 내용을 다룬다. 특히 람다 표현식이 익숙하지 못한 기존 개발자들을 위한 부분은 이 책과 함께 하는 긴 여정의 필수 코스이다.
두번째 파트인 2부 ‘함수형 데이터 처리’에서는 스트림이 무엇이며, 이를 통해 간결하고 효율적으로 데이터 컬렉션을 처리하는 방법을 소개하고 있다. 3부에서는 스트림과 람다를 이용해서 보다 효과적인 프로그래밍을 하는 방법과 더불어 최신 기법을 통해 코드를 개선하는 방법을 다룬다. 여기까지 잘 따라왔다면 이제 보다 능숙하게 진화된 Java를 사용하기 위한 훈련에 들어간다. 4부 ‘매일 자바와 함께’는 프로젝트를 구성하는 코드를 더 쉽고 안정적으로 만들 수 있는 Java의 새로운 기능을 살펴본다.  5부 ‘개선된 자바 동시성’은 비동기 Futures, 발행-구독 프로토콜을 기반으로 하는 리액티브 프로그래밍, 플로 API의 캡슐화를 통해 보다 쉽고 안전하게 병렬 프로그래밍을 구현할 수 있는 방법을 다룬다. 마지막 파트인 6부에서는 앞서 다룬 Java의 변화를 둘러보며, 앞으로 Java에 도입될 것으로 예상되는 기능들을 짧게 소개하고 있다.
앞서 살펴본 것처럼, Java는 변화하는 환경에서 새로운 ‘쓸모’를 제공했고, 지금도 그 역할을 위해 변화하고 있다. 이를 개발자의 입장에서 생각해보면 문제 해결을 위한 새로운 도구이다. 기존의 Java를 통해서도 문제를 해결할 수 있지만, 새로운 도구는 문제를 보다 쉽게 해결할 수 있도록 해준다. ‘모던 자바 인 액션’은 새로운 Java를 정복하는 데 좋은 길잡이가 될 것이다.
 

 

IMG_0422.JPG

 

 

파이썬으로 입문해서 자바 배우고 자바 웹 개발자로 일하다가 C# 응용소프트웨어 개발자 하고 있다.


 

오랜만에 자바 공부했다.

 


책 표지에 떡 하니 '전문가를 위한'이라고 적혀있고 나는 전문가가 아닙니다만 시야를 업그레이드 해야 할 필요성을 느껴서 읽기 시작.

 

 

 

책 소개에서도 알 수 있듯이 자바 8부터의 변화에 포커스를 맞추고 있다.

기존 자바 쓰던 개발자들을 새로운 길로 끌어내는 것이라 프로그래밍 입문하려는 사람들이 볼 책은 아니다.

책 구성 자체도 그림이 풍부하다거나 하지 않고 설명 위주다.

많은 내용을 깊게 설명하고 있어서 읽기 쉽지는 않았음.

 


람다 배우긴 했는데 내가 일했던 회사에서 쓰지 않았었고 굳이 딥하게 공부할 필요성을 따로 못 느꼈다.

다른 곳에서는 열심히 쓰고들 있다고 했지만.

오히려 C# 하다가 자바하려니 람다의 필요성이 보인다.

람다? 그게 뭔데? 왜 공부해야하는데? 하는 초급 개발자들은 이 책 보기를 추천.

 

 

 


[한줄평]

자바 입문책을 보고 이제 중급단계로 가기 위한 필수 책이 아닌가 생각합니다.


[목차구성]

[ PART I 기초 ]

CHAPTER 1 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?

CHAPTER 2 동작 파라미터화 코드 전달하기

CHAPTER 3 람다 표현식


[ PART II 함수형 데이터 처리 ]

CHAPTER 4 스트림 소개

CHAPTER 5 스트림 활용

CHAPTER 6 스트림으로 데이터 수집

CHAPTER 7 병렬 데이터 처리와 성능


[ PART III 스트림과 람다를 이용한 효과적 프로그래밍 ]

CHAPTER 8 컬렉션 API 개선

CHAPTER 9 리팩터링, 테스팅, 디버깅

CHAPTER 10 람다를 이용한 도메인 전용 언어


[ PART IV 매일 자바와 함께 ]

CHAPTER 11 null 대신 Optional 클래스

CHAPTER 12 새로운 날짜와 시간 API

CHAPTER 13 디폴트 메서드

CHAPTER 14 자바 모듈 시스템


[ PART V 개선된 자바 동시성 ]

CHAPTER 15 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초

CHAPTER 16 CompletableFuture : 안정적 비동기 프로그래밍

CHAPTER 17 리액티브 프로그래밍


PART VI 함수형 프로그래밍과 자바 진화의 미래

CHAPTER 18 함수형 관점으로 생각하기

CHAPTER 19 함수형 프로그래밍 기법

CHAPTER 20 OOP와 FP의 조화 : 자바와 스칼라 비교

CHAPTER 21 결론 그리고 자바의 미래


[이 책의 주요 특징]

- 자바 8, 자바 9, 자바 10 의 강력한 새로운 기능을 사용하는 방법

- 멀티코어를 효과적으로 활용하는 애플리케이션을 구현하는 방법

- 리팩토링, 테스팅, 디버깅

- 함수형 프로그래밍 적용

- 퀴즈, 기습 질문, 업데이트 내용을 담은 부록


[이 책의 독자 대상]

- 자바를 더 심층적으로 공부하고 싶은 사람

- 람다, 스트림, 함수형 리액티브 프로그래밍을 알고 싶은 사람


[서평]

자바가 나온지 20년정도 되었네요. 한국에서 개발자 대다수가 자바를 하고 있죠. 현재 자바 버전은 JDK 12 버전까지 나왔습니다. 하지만 현업에서는 아직 자바 8을 많이 사용하고 있죠. 하지만 대다수의 개발자는 자바 8 문법을 아직 못 따라 가는듯 합니다. 자바 기본서 입문서들은 자바8 이상을 포함한다고 하는데 컴파일러가 자바8이상에서 구동되는거지 문법은 자바 1.4~7버전의 레거시 문법을 아직 그래도 사용하고 있습니다. 간혹 자바8의 람다, 스트림API를 간단한 소개 정도로만 하고 넘어가죠. 자바를 진정 마스터 하고 싶다면

람다, 스트림, 함수형, 리액티브 프로그래밍을 익혀야 하지 않을까 생각합니다.


이책은 크게 기초, 함수형 데이터 처리, 스트림과 람다를 이용한 효과적인 프로그래밍, 매일 자바와 함께, 개선된 자바 동시성, 함수형 프로그래밍과 자바 진화의 미래 여섯 가지 내용으로 구성되어 있습니다. 처음 1부와 2부에서는 자바8을 처음 접하는 독자에게 람다 표현식이 무엇인지 람다와 스트림API를 이용해서 어떻게 간결한 코드를 구현할수 있는지 배울수 있습니다. 3,4부에서는 자바8,9의 최신 프로그래밍 개념을 설명합니다. 5부에서는 스트림을 이용한 쉬운 병렬 프로그래밍을 구조화 하는 고급 기법을 배웁니다. 6부에서는 스칼라와 자바8의 기능을 비교하면서 효과적으로 함수형 프로그래밍을 자바로 구현하는 방법을 살펴봅니다.


모던 자바 인 액션에서는 정말 자바 전문가를 위한 새로운 기능을 배울수 있습니다. 이책 에서는 구버전의 자바 문법이 아닌 최신 자바 기능을 애플리케이션에 실용적으로 배울수 있는 방법을 알려주고 있습니다. 그리고 핵심 자바 지식뿐만 아니라 스트림API, 자바 모듈 시스템 같은 추가 기능, 동시성의 새로운 접근 방법, 함수형 개념 등 모던 자바의 모든 지식을 배울수 있습니다.





 

모던 자바 인 액션은 이름 그대로 최신 자바를 다루고 있으며 또한 실제로 사용할 수 있는 코드로 작성되어 있다.

단, 이 책은 절대로 초보한테 어울리는 책은 아니며, 기본적으로 자바의 대한 전반적인 내용을 알고 있음을 기반으로 최신 자바 언어에 대한 내용과 새롭게 추가된 함수형 프로그래밍 기법, 멀티쓰레딩에 관련된 내용이 많이 추가가 되었다.

따라서 이 책은 자바를 많이 써봤고, 최신 기능과 최신 자바를 좀 더 새롭게 이용하거나, 최신 자바에 대해서 레퍼런스를 얻고 싶다면 이 책을 적극 추천한다.

 

 

책 내용은 기본적으로 모던 자바에서 추가된 내용을 주로 다룬다. 이 때 상세한 코드가 첨부되어있어 코드만 보고도 이를 어떻게 활용할지 감이 오고, 또한 실무에서 실제로 볼법한 사례를 예시로 들어, 후에 실무 개발 능력에 크게 도움을 주는 내용들도 많다. 

특히 재미있는 부분은 멀티쓰레딩 및 동기화 기법에 대한 자바의 새로운 문법이 굉장히 강화가 되었으며, 이를 활용하여 멀티쓰레딩 환경에서 높은 성능을 보장할 수 있게 되었다.

 

 

자바8부터는 최근 새로운 프로그래밍 기법으로 떠오르는 함수형 프로그래밍 기법이 자바8에서부터 추가되어, 기존의 자바 코드와는 전혀 다르게 코드의 길이가 줄어들며, 이는 생산성 향상의 주 요인이 될 수 있다. 또한 가독성 또한 높아지게 되어 유지보수가 쉬워지게 된다.

최근에 대부분의 언어들은 함수형 프로그래밍 기법을 활용할 수 있도록 람다를 지원하고 있으며, 자바는 이를 빠르게 수용하였다. 따라서 기존의 함수형 프로그래밍 패러다임에 익숙하지 않은 초급 개발자들은 이참에 함수형 프로그래밍 패러다임에 대해서 공부해야 할것이다.

 

 

 

이 책을 보면서 가장 만족스러웠던 부분은, 동기화 관련 부분이다. 멀티쓰레딩은 최근 컴퓨팅 상황에서 매우 중요한 역할을 하지만 실상 이 내용을 모르고 단일프로세싱 환경만 사용하는 개발자들에게 꼭 필요한 내용이라고 생각한다.

모던 자바는 동기화 관련된 부분을 아주 깔끔하게 처리해주고 있으며, 이에 대한 API와 정보들 또한 매우 많이 존재한다. 따라서 자바8에서 부터 제공하는 병렬 처리 부분은 심도있게 공부해야 할 것이다.

 

 

단순히 이러한 문법을 나열하는 것을 넘어서 이 책은 개발론적인 부분까지 다루게 된다. 실제로 사용하는 코드와 실무에서 사용하는 코드가 다를 수도 있지만, 이 책은 실무에서 사용할 법한 개발론적인 부분을 심도있게 다룬다. 

 

 

이 책을 보면서 최신 자바에 대한 이해를 포함하여 실제 사용되는 사례들을 보면서 많은 지식을 얻을거라고 생각한다. 이 책으로 초보 자바 개발자들은 중급 개발자로 도약할 수 있기를 바란다.

 

이 책은 한빛출판네트워크의 '나는 리뷰어다' 이벤트를 통해 제공받은 도서입니다.

모던 자바 인 액션 표지

제목

모던 자바 인 액션 (Modern Java in Action)

 

지은이

  • 지음 : 라울-게이브리얼 우르마, 마리오 푸스코, 앨런 마이크로프트
  • 옮김 : 우정은

 

링크

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=200069290

 

모던 자바 인 액션 by 라울-게이브리얼 우르마 / 마리오 푸스코 / 앨런 마이크로프트 (지은이) / 우정은

자바 최신 기능을 애플리케이션에 실용적으로 적용하는 방법을 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 또한 기존 핵심 자바의 지식뿐 아니라 스트림 API 등 읽기 ...

www.aladin.co.kr

 

카테고리

개발, IT, Java

 

가독성

전체적으로 깔끔하고 텍스트 위주의 구성입니다. 텍스트가 상대적으로 많고 그림이 적습니다. 군더더기 없이 설명하는 느낌인데, 제가 자바 전문가가 아니다보니 이해하는데 어려움이 있습니다. 

 

대상 독자

  • 자바를 더 심층적으로 공부하고 싶은 사람
  • 람다, 스트림, 함수형 리액티브 프로그래밍을 알고 싶은 사람

전체 페이지 수

692p

 

출판사 책 소개

자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다. 이 책은 함수형 언어의 영감을 받아 자바 8, 9, 10에 추가된 람다, 스트림, 함수형 프로그래밍, 자바 모듈 시스템, 병렬화와 공유 가변 데이터, 동작 파라미터화 등의 주요 기능을 자바 개발자에게 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 이 책은 『자바 8 인 액션』의 개정판으로서 1, 8, 10, 4, 17, 21장은 신규 추가되거나, 그에 준하는 큰 수정이 있었다. 부록을 뺀 나머지 모든 장도 수정 보강되었다.

 

목차

이 책은 크게 ‘기초’, ‘함수형 데이터 처리’, ‘스트림과 람다를 이용한 효과적 프로그래밍’, ‘매일 자바와 함께’, ‘개선된 자바 동시성’, ‘함수형 프로그래밍과 자바 진화의 미래’ 여섯 가지 내용으로 구성되었다. 처음 1부와 2부에서 소개하는 장들은 순서대로 읽어야 앞뒤 문맥을 이해할 수 있으며 나머지 네 개 부는 각각 독립적인 내용으로 구성되어 있으므로 어떤 순서로든 읽을 수 있다. 대부분의 장에는 직접 실습할 수 있도록 다양한 퀴즈를 포함했다.

 

1부 : 자바 8을 처음 접하는 독자에게 적합한 내용을 다루는 세 개 장을 제공한다. 1부를 끝낼 즈음엔 람다 표현식이 무엇인지 이해할 수 있고, 람다를 이용해서 변화하는 요구사항에 쉽게 대응할 수 있는 간결하면서도 유연한 코드를 구현할 수 있게 될 것이다.

 

2부 : 새로운 스트림 API를 자세히 설명한다. 2부를 끝내면 스트림이 무엇이며, 스트림을 이용해서 데이터 컬렉션을 처리하는 간결하고 효율적인 애플리케이션을 구현하는 방법을 알게 될 것이다.

 

3부 : 자바를 더 효과적으로 사용하고 최신 기법으로 코드를 개선하는 데 도움을 주는 다양한 자바 8, 자바 9 관련 내용을 살펴본다. 가능한 최신의 프로그래밍 개념을 설명하는 것이 목표로 이 책의 다른 부분에서는 3부에서 다룬 내용을 활용하지는 않는다.

 

4부 : 프로젝트를 구성하는 코드를 더 쉽고 안정적으로 만들 수 있도록 자바 8과 자바 9에 추가된 다양한 새 기능을 살펴본다.

 

5부 : 6장과 7장에서 설명한 스트림을 이용한 쉬운 병렬 처리 방법에서 한 걸음 더 나아가 자바로 병렬 프로그래밍을 구조화하는 고급 기법을 살펴본다.

 

6부 : 주제를 조금 전환해 스칼라와 자바 8의 기능을 비교하면서 효과적으로 함수형 프로그래밍을 자바로 구현하는 방법을 살펴본다.

 

부록 : 부록 A에서는 책에서 살펴보지않은 자바 8 언어의 작은 특징을 요약한다. 부록 B에서는 유용하게 사용할 수 있도록 자바 라이브러리에 추가된 기능을 설명한다. 부록 C에서는 2부의 연장으로 스트림의 고급 사용법을 설명한다. 부록 D에서는 자바 컴파일러가 람다 표현식을 구현한 내막을 설명한다.

 

후기

 자바스크립트가 대세라고는 하지만 자바는 아직도 다양한 분야에서 많이 사용되는 언어입니다. 개인적으로 자바를 주 언어로 사용하지는 않지만, 안드로이드 개발을 할 때 사용하고는 했습니다. 저는 기초적인 문법 안에서 자바만 사용했기 때문에, 람다, 스트림, 함수형 프로그래밍 같은 내용들은 사용하지 않았습니다. 하지만, 이 책에서는 자바의 다양한 버전과 새로운 기능을 언급하고, '자바는 끊임없이 발전하고 있습니다.' 라고 언급하고 있습니다. 자바를 자주 사용하며 더 좋은 기능을 사용하고 싶은 사람이라면 이 책을 읽으면 좋겠다는 생각이 들었습니다. 이러한 점에서, 입문자에게는 권장하지 않습니다.

 

책의 1장. 히스토리에 대하여 잘 설명해주고 있다.

 첫 장에서 자바의 발전이 어떻게 이루어지는지 흐름에 따라서 잘 설명해주고 있습니다. 자바는 8을 기점으로 크게 변하게 되었는데, 멀티코어 CPU 대중화로 인하여 모든 코어를 효율적으로 사용해야 한다, 간결하게 데이터를 다룬다 라는 요구사항을 기반으로 짜여졌다고 말하고 있습니다. 기존 소스코드 대비 짧아지고, 병렬 연산을 효율적으로 구현할 수 있다고 합니다. 어떠한 변화가 필요한 이유를 먼저 설명하고 변화에 대하여 서술하여 개인적으로 좋았습니다. 

 

 그 이후로는 위에서 언급한 자바의 발전하게 된 계기를 토대로 발전하게 된 요소들에 대하여 서술해줍니다. 람다, 스트림, 함수형 프로그래밍 내용을 굉장히 디테일하게 여러 단원에 걸쳐서 설명해주고 있습니다. 위의 목차에서 나온 것과 같은 흐름으로 진행됩니다. 해당 내용을 다 서술하기는 너무 어렵고 자세하여, 직접 서점에 가서 보시고 판단해보시면 좋을 것 같습니다. 

 

 위의 내용을 토대로 자바 코드를 훨씬 더 효율적으로 작성할 수 있을 것 같습니다. 기존 코드와 나오게 된 이유, 바뀐 코드에 대하여 정확하게 숙지하고 자바 버전을 원하는 대로 선택하여 구현하는 것은 초보자는 쉽게 할 수 없는 역할이라고 생각합니다. 저는 버전에 대한 이해없이 단순히 언어를 사용하기만 했는데, 이 책을 보면서 '언어에 대한 심층적인 이해가 필요하다'라는 생각이 들었습니다. 

 

 이러한 내용을 마지막 단원에서 정리해주고 있습니다. 정리된 내용을 바탕으로 향후 미래에 자바가 발전할 방향까지 알려주고 있습니다. 자바에 대하여 위에서 언급한 내용에 대하여 자세하게 알고 싶은 사람이라면 읽어볼 만한 책이라고 생각합니다. 상당히 많은 분량을 통하여 위에서 언급한 내용을 상세하게 설명하고 있기 때문에, 도움이 많이 될 것 같습니다. 또, 자바 컬렉션이나 기본 문법 같은 기반 지식도 필요하기 때문에, 입문자는 다소 어려울 것 같습니다. 저도 디테일하게 다 보지는 못하여, 천천히 시간을 두고 체계적으로 읽고싶습니다. 

모던 자바 인 액션 도서

- 자바8~자바10 기법 가이드 새로운 문법을 마스터하자 -

1.jpg

안녕하세요. 율리시스SS입니다.

오늘 소개시켜드릴 도서는 "모던 자바 인 액션" '람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기' 라는 책 입니다.

아마 프로그래밍, 그 중에서도 자바를 주로 공부하시는 분들이 이 책을 검색하고 보실텐데요. 저도 아직 학생이지만 자바 유저이기 때문에 한번쯤 볼 필요가 있지 않을까 싶습니다. 자바가 업데이트 되면서 다양한 문법과 추가된 기능이 있는데 이에 관한 내용의 책 입니다. 

 

 

 

▣ 모던 자바 인 액션

2.jpg

| 도서를 볼 때 항상 본문 전, 서론을 중요하고 읽고 시작합니다. 왜 이책을 쓰게 되었으며 이 책이 중점적으로 무엇에 관해서 적었는지 알 수 있죠.

이 책은 자바8부터 자바10까지 새로운 기능을 사용하는 방법, 효과적으로 활용하는 애플리케이션을 구현하는 방법등을 알려줍니다.

새로운 기능을 어떻게 활용 및 사용할 수 있을까에 대한 책입니다.

 

 

 

 

 

 

3.jpg

4.jpg

| 매 챕터마다 이장의 주요 내용을 알려줍니다. 그렇기 때문에 차후 책을 다 읽고 나서 실제 사용할 때 내용을 보고 그 챕터만 보면 되는 장점이 있죠.

총 21챕터로 되어 있으며 부록은 4개로 되어 있습니다. 챕터의 처음과 끝은 자바의 시작과 자바의 미래에 대해 적혀 있습니다.

 

 

 

 

 

 

5.jpg

6.jpg

| 자바를 공부할 때 객체지향이기 때문에 항상 그림이 함께 등장합니다. 좀 더 쉽게 이해할 수 있기도 하고 흐름을 읽을 수 있어서 좋았습니다.

그림과 함께 자세한 설명이 적혀 있기 때문에 자바의 기초를 다 배우신 분들 혹은, 자바를 사용하시는데 새로운 기술을 사용해 보고 싶은 분들이 이 책을 필요로 할 것 같은 느낌입니다.

 

 

 

 

 

7.jpg

| 책을 완전히 다 읽지는 못했지만 읽으면서 드는 생각은 자바 새로운 기술이 좀 더 깔끔하게, 좀 더 수정이 쉽게 변한다는 느낌을 받았습니다.

코드를 좀 더 유지보수하기 쉽게, 혹은 주의해야할 부분에 대해서도 상세히 알려준다는 느낌을 많이 받았네요.

 

 

 

 

 

8.jpg

| 매 챕터가 끝나면 요약이 있습니다. 개인적으로도 요약을 좋아하는데요. 책을 다 읽고 나서 중요한 부분을 한 번 더 볼 수 있다는 점에서 입니다.

책을 공부하면서 요약된 부분만이라도 한 번더 보면 챕터에서 무었을 알려주고자 했나 볼 수 있었습니다.

이 책을 공부하면서 자바8에서 생겨난 새로운 기능, 그리고 어떻게 사용하면 좋은지에 대해서 공부할 수 있었던 책입니다.

자바8 이상의 새로운 기능을 학습하고 싶은 분, 새로운 기능을 사용하고 있지만 제대로 사용하고 싶으신분들에게 추천드립니다.

 

 

 

한빛미디어에서 제공받아 작성하였지만

제공 측의 간섭 없이 필자가 느낀 점 그대로 작성하였습니다.

작성일 : 2019년 09월 04일

최종 수정일 : 2019년 09월 04일

* 오류 수정은 블로그에서만 합니다.

* 블로그 : http://blog.naver.com/adg0609

CopyRightⓒ.2019.율리시스SS.All Rights Reserved

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
모던 자바 인 액션 : 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
모던 자바 인 액션 : 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
모던 자바 인 액션 : 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1