자바 8 람다
자바 8의 핵심, 람다식! 이 책으로 한 번에 끝내자!
이 책은 2014년 4월 출시된 자바 8(Java SE 8, JDK 8)의 주요 기능 중 핵심인 람다식에 대해 각 예제를 통해 알려준다.
최근 몇 년 동안, 함수형 프로그래밍은 기존의 방식이 만들어내는 복잡한 코드에 반대하는 소수의 개발자로부터 지지를 받아왔다. 그들은 이 새로운 접근 방법이 대중화되지 않는 점에 불만이 많았다. 이 책의 가장 중요한 목적은 소수의 개발자만이 지지하는 함수형 프로그래밍의 장점과 간결함을 람다식을 통해 제대로 이해해보고 실전에 사용해 보는 것이다.
이렇게 새로운 개념과 내용을 학습할 때 가장 중요한 것은 실제 동작하는 다양한 예제를 살펴보는 것이다. 따라서 이 책에서는 쉽게 이해할 수 있는 간단한 예제와 코딩을 반복함으로써 람다식을 제대로 사용하는 패턴을 익혀나갈 수 있다. 너무 어려운 전문 용어는 배제하고 최대한 읽기 쉽게 설명하였다.
이 책의 주요 특징
다양한 예제를 통해서 람다 문법을 익힌다.
람다를 이용하여 CPU 멀티 코어 처리 방법과 데이터 병렬 처리 성능을 향상시키는 방법을 배운다.
람다식으로 단위 테스트와 디버깅하는 방법을 배운다.
SOLID 규칙을 이용하여 람다로 객체 지향 프로그래밍하는 방법을 익힌다.
효율적인 메시지 전달 방법과 non-blocking I/O에 대해서 배운다.
[지은이] 리처드 워버튼
리처드 워버튼은 경험적 과학 기술 분야의 전문가이며, 딥-드라이브(deep-drive) 기법의 문제점에 대한 해결안을 만든 장본인이기도 하다. 그는 정적 분석 문제들을 전문적으로 연구하고, 컴파일러를 검증하며, 자동으로 버그를 탐지하는 프로그램을 개발하였다. 최근에는 고성능 컴퓨팅에서의 데이터 분석에 집중하고 있다. 그는 런던 자바 커뮤니티의 대표이자 위원회의 구성원이고, 자바의 람다식과 데이터, 그리고 타임Time을 위한 Adopt-a-JSR 프로그램을 체계화하였다. 리처드는 JavaOne, DevoxxUK, JAX 런던 등의 다양한 콘퍼런스에서 많은 강연을 하고 있다.
[옮긴이] 이희정
국민대학교 컴퓨터응용학과 학사를 졸업하였고, 한양대학교 컴퓨터공학과 석사를 졸업하였다. 모바일 관련 벤처 기업에서 7년간 근무하였으며, C와 C++ 기반의 브라우저 개발에 참여하고 국내뿐만 아니라 동남아시아 여러 국가의 모바일 솔루션 사용화에 참여하였다. 현재 C와 C++, 웹 기술 등에 관심을 가지고 다양한 분야의 컴퓨터 관련 서적을 번역하는 등의 프리랜서로 활동 중이다.
1장 소개
1.1 어째서 자바를 또 다시 바꾼 것일까?
1.2 함수형 프로그래밍이란 무엇인가?
1.3 예제의 구성 방식
2장 람다식
2.1 첫 번째 람다식 만들어보기
2.2 람다 활용 제대로 하기
2.3 값의 사용
2.4 함수형 인터페이스
2.5 타입 인터페이스
2.6 핵심 포인트
2.7 연습 문제
3장 스트림
3.1 외부 반복과 내부 반복
3.2 실제로 어떻게 동작하는 것일까
3.3 자주 사용하는 스트림 명령들
3.4 레거시 코드 리팩토링
3.5 다수의 스트림 호출
3.6 고차 함수
3.7 람다식의 올바른 사용
3.8 핵심 포인트
3.9 연습문제
3.10 고급 연습문제
4장 라이브러리
4.1 람다식 사용하기
4.2 원시화
4.3 오버로드 해결 방법
4.4 @FunctionalInterface 어노테이션
4.5 바이너리 인터페이스 호환성
4.6 디폴트 메소드
4.7 다중 상속
4.8 장점과 단점
4.9 인터페이스의 정적 메소드
4.10 Optional
4.11 핵심 포인트
4.12 연습문제
4.13 고급 연습문제
5장 고급 컬렉션과 컬렉터
5.1 메소드 참조
5.2 엘리먼트 정렬
5.3 컬렉터 살펴보기
5.4 컬렉션 세부사항
5.5 핵심 포인트
5.6 연습문제
6장 데이터 병렬 처리
6.1 병렬성 대 동시성
6.2 왜 병렬 처리가 그렇게 중요한가?
6.3 병렬 처리 스트림 연산
6.4 시뮬레이션
6.5 주의사항
6.6 성능
6.7 배열 병렬 처리
6.8 핵심 포인트
6.9 연습문제
7장 테스팅, 디버깅, 그리고 리팩토링
7.1 람다 리팩토링을 시도하기 좋은 경우
7.2 람다식으로 유닛 테스트하기
7.3 테스트 더블에서 람다식 사용하기
7.4 지연 수행과 디버깅
7.5 로깅과 출력
7.6 해결책 peek
7.7 스트림 중간에 중단점 설정하기
7.8 핵심 포인트
8장 디자인과 구조적 원칙
8.1 람다식이 가능한 디자인 패턴
8.2 람다식이 가능한 도메인 특정 언어
8.3 람다식이 가능한 SOLID 원칙
8.4 더 읽어볼 만한 내용
8.5 핵심 포인트
9장 람다식과 동시성
9.1 왜 논블로킹 I/O를 사용하는 것일까
9.2 콜백
9.3 메시지 전달 구조
9.4 혼돈의 피라미드
9.5 Future
9.6 완성형 Future
9.7 반응형 프로그래밍
9.8 언제, 그리고 어디에
9.9 핵심 포인트
9.10 연습 문제
10장 앞으로 나아갈 방향