heoh***
2020-10-25

자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다.
자바를 사용해서 웹 개발을 하고 있지만 제대로 알고 잘 사용하는지 각 버전에 따른 차이점이 무엇이고 내가 제대로 사용하는지 늘 궁금하었습니다.
그런데 이번에 좋은 기회로 책을 리뷰할 수 있게 되어 책에 대해서 살펴보고자 합니다.
책의 구성은 총 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 버전 이후에 새로운 기능을 제대로 사용해 보고 싶은 분들에게 추천드립니다.