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

저자

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

저자:라울-게이브리얼우르마
케임브리지대학교컴퓨터과학박사과정을밟고있다.임페리얼칼리지런던에서컴퓨터과학석사과정을최상위그룹으로졸업했으며기술혁신상을다수수상했다.다수의스타트업프로젝트를포함해구글,이베이,오라클,골드만삭스등의회사와함께일했다.10개이상의상호심사기술논문을저술했으며,국제개발자콘퍼런스에서20회이상강연했다.

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

저자:앨런마이크로프트
케임브리지대학교의컴퓨터랩컴퓨팅교수이자1984년부터교수회의멤버다.또한로빈슨칼리지의펠로이고,프로그래밍언어및시스템유럽연합(EAPLS)의공동창립자이며,라즈베리파이재단의공동창립자이자이사다.수학(케임브리지),컴퓨터과학(에딘버러)학위를갖고있다.약100개의연구저서를집필했으며20명이넘는박사과정학생을지도했다.프로그래밍언어와의미론,최적화,구현등이주요연구분야다.NorcroftARMC컴파일러를만든코드미스트,AT&T랩스,인텔연구소에서일하는등업계와도밀접한관계를맺어왔다.

역자:우정은
인하대학교컴퓨터공학과를졸업하고LG전자,썬마이크로시스템즈,오라클등에서모바일제품관련개발일을하다가현재는뉴질랜드의Frogparking이라는회사에서개발자로새로운인생을즐기고있다.2010년아이폰의매력에빠져들면서번역및개발을취미로삼게되었다.2010년이후로다수의서적을번역했다.

목차

옮긴이·지은이소개
옮긴이의말
지은이의말
이책에대하여
표지그림소개

[PARTI기초]

CHAPTER1자바8,9,10,11:무슨일이일어나고있는가?
1.1역사의흐름은무엇인가?
1.2왜아직도자바는변화하는가?
1.3자바함수
1.4스트림
1.5디폴트메서드와자바모듈
1.6함수형프로그래밍에서가져온다른유용한아이디어
1.7마치며

CHAPTER2동작파라미터화코드전달하기
2.1변화하는요구사항에대응하기
2.2동작파라미터화
2.3복잡한과정간소화
2.4실전예제
2.5마치며

CHAPTER3람다표현식
3.1람다란무엇인가?
3.2어디에,어떻게람다를사용할까?
3.3람다활용:실행어라운드패턴
3.4함수형인터페이스사용
3.5형식검사,형식추론,제약
3.6메서드참조
3.7람다,메서드참조활용하기
3.8람다표현식을조합할수있는유용한메서드
3.9비슷한수학적개념
3.10마치며

[PARTII함수형데이터처리]

CHAPTER4스트림소개
4.1스트림이란무엇인가?
4.2스트림시작하기
4.3스트림과컬렉션
4.4스트림연산
4.5로드맵
4.6마치며

CHAPTER5스트림활용
5.1필터링
5.2스트림슬라이싱
5.3매핑
5.4검색과매칭
5.5리듀싱
5.6실전연습
5.7숫자형스트림
5.8스트림만들기
5.9마치며

CHAPTER6스트림으로데이터수집
6.1컬렉터란무엇인가?
6.2리듀싱과요약
6.3그룹화
6.4분할
6.5Collector인터페이스
6.6커스텀컬렉터를구현해서성능개선하기
6.7마치며

CHAPTER7병렬데이터처리와성능
7.1병렬스트림
7.2포크/조인프레임워크
7.3Spliterator인터페이스
7.4마치며

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

CHAPTER8컬렉션API개선
8.1컬렉션팩토리
8.2리스트와집합처리
8.3맵처리
8.4개선된ConcurrentHashMap
8.5마치며

CHAPTER9리팩터링,테스팅,디버깅
9.1가독성과유연성을개선하는리팩터링
9.2람다로객체지향디자인패턴리팩터링하기
9.3람다테스팅
9.4디버깅
9.5마치며

CHAPTER10람다를이용한도메인전용언어
10.1도메인전용언어
10.2최신자바API의작은DSL
10.3자바로DSL을만드는패턴과기법
10.4실생활의자바8DSL
10.5마치며

[PARTIV매일자바와함께]

CHAPTER11null대신Optional클래스
11.1값이없는상황을어떻게처리할까?
11.2Optional클래스소개
11.3Optional적용패턴
11.4Optional을사용한실용예제
11.5마치며

CHAPTER12새로운날짜와시간API
12.1LocalDate,LocalTime,Instant,Duration,Period클래스
12.2날짜조정,파싱,포매팅
12.3다양한시간대와캘린더활용방법
12.4마치며

CHAPTER13디폴트메서드
13.1변화하는API
13.2디폴트메서드란무엇인가?
13.3디폴트메서드활용패턴
13.4해석규칙
13.5마치며

CHAPTER14자바모듈시스템
14.1압력:소프트웨어유추
14.2자바모듈시스템을설계한이유
14.3자바모듈:큰그림
14.4자바모듈시스템으로애플리케이션개발하기
14.5여러모듈활용하기
14.6컴파일과패키징
14.7자동모듈
14.8모듈정의와구문들
14.9더큰예제그리고더배울수있는방법
14.10마치며

[PARTV개선된자바동시성]

CHAPTER15CompletableFuture와리액티브프로그래밍컨셉의기초
15.1동시성을구현하는자바지원의진화
15.2동기API와비동기API
15.3박스와채널모델
15.4CompletableFuture와콤비네이터를이용한동시성
15.5발행-구독그리고리액티브프로그래밍
15.6리액티브시스템vs리액티브프로그래밍
15.7마치며

CHAPTER16CompletableFuture:안정적비동기프로그래밍
16.1Future의단순활용
16.2비동기API구현
16.3비블록코드만들기
16.4비동기작업파이프라인만들기
16.5CompletableFuture의종료에대응하는방법
16.6로드맵
16.7마치며

CHAPTER17리액티브프로그래밍
17.1리액티브매니패스토
17.2리액티브스트림과플로API
17.3리액티브라이브러리RxJava사용하기
17.4마치며

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

CHAPTER18함수형관점으로생각하기
18.1시스템구현과유지보수
18.2함수형프로그래밍이란무엇인가?
18.3재귀와반복
18.4마치며

CHAPTER19함수형프로그래밍기법
19.1함수는모든곳에존재한다
19.2영속자료구조
19.3스트림과게으른평가
19.4패턴매칭
19.5기타정보
19.6마치며

CHAPTER20OOP와FP의조화:자바와스칼라비교
20.1스칼라소개
20.2함수
20.3클래스와트레이트
20.4마치며

CHAPTER21결론그리고자바의미래
21.1자바8의기능리뷰
21.2자바9모듈시스템
21.3자바10지역변수형추론
21.4자바의미래
21.5더빠르게발전하는자바
21.6결론

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

출판사 서평

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

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

★이책의구성
이책은크게'기초','함수형데이터처리','스트림과람다를이용한효과적프로그래밍','매일자바와함께','개선된자바동시성','함수형프로그래밍과자바진화의미래'여섯가지내용으로구성되었다.처음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의강력한새로운기능을사용하는방법
-멀티코어를효과적으로활용하는애플리케이션을구현하는방법
-리팩토링,테스팅,디버깅
-함수형프로그래밍적용
-퀴즈,기습질문,업데이트내용을담은부록