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

한빛미디어

독자리뷰

Advanced 모던 자바 프로그래밍 완벽 해설서

dhan***

|

2024-04-28

함수형 프로그래밍 with 자바

모던 자바의 새로운 전환점, 함수형 프로그래밍에 집중하라. 람다와 스트림을 활용한 자바 함수형 프로그래밍 실전 가이드

  • 저자 : 벤 바이디히
  • 번역 : 허귀영
  • 출간 : 2024-03-27

평소 자바8의 스트림(Stream)과 람다(Lambda), 옵셔널(Optional)에 관해 관심이 많았거나, 제대로 사용하기를 원한다면 꼭 이 책을 읽기를 추천한다. 또한 자바 공부가 자바6이나 순수자바를 사용한 프로그래밍에서 멈춰있고, 모던 자바(~자바21)를 알고 싶은 분들도 마찬가지다.

 

서점에 있는 자바서적은 스트림과 옵셔널에 관해 간략 소개나 사용법 위주로 설명하지만, 이 책은 함수형 프로그래밍 개념부터 기술이 나온 배경과 고려할 점까지 알려주기때문에, 가장 빠르게 접근할 수 있을 것이다.

 

자바스크립트나 코틀린을 비롯하여 최근에 나온 프로그래밍에서 함수형 프로그래밍에 관해 자주 나왔는데, 자바에서도 함수형 프로그래밍이 나온지 10년이 지났다는 부분을 읽고 많이 당황스러웠다. ㅎㅎ

 

하지만, 이 책을 읽고난 후 Consumer, Supplier, Predicate, Function과 관련된 내용과 기존 클래스에 함수형 인터페이스로 확장하는 방법, 파이프라인을 개념적으로 쉽게 이해할 수 있었다.

 

한국에서는 운영 환경의 JDK가 아직 자바6, 자바8인 경우가 대부분이지만, 곧 자바17, 자바21로 변경될 것이며, 함수형 프로그래밍의 장점을 이해했으면, 반드시 꼭 읽어야 될 책이라고 생각한다.

 

이 책은 2개 PART, 전체 15개 장으로 구성되어 있다. PART 01은 3개의 장으로 구성되며, 함수형 프로그래밍의 개념과 역사, 장단점, 자바에서 제공하는 함수형 프로그래밍의 개념과 지원 내용을 설명하고 있고, PART 02는 12개의 장으로 구성되며, 함수형 프로그래밍의 개념이 자바에서 어떻게 지원하고 사용되는지 예제와 사례를 들어 설명한다.

 

세부 내용을 살펴보면, PART 01 함수형 기초의

CHAPTER 01 '함수형 프로그래밍 소개'에서는 일반적인 함수형 프로그래밍의 역사와 개념, 장단점에 설명하고,

CHAPTER 02 '함수형 자바'는 자바의 함수형 프로그래밍 기초가 되는 람다와 자바의 함수형 프로그래밍 개념에 관해 알려준다.

CHAPTER 03 'JDK의 함수형 인터페이스'에서는 자바의 함수형 인터페이스와 함수 합성 방법과 확장하는 법을 설명하고,

PART 02 함수형 접근 방식의

CHAPTER 04 '불변성'은 함수형 프로그래밍의 불변성 개념과 자바의 불변성 사례를 설명하고,

CHAPTER 05 '레코드'에서는 핵심 인재를 관리하는 방법에 관해 알아보고, 자바14부터 지원하는 record의 설명과 사용 사례, 관행에 관해 알아본다.

CHAPTER 06 '스트림을 이용한 데이터 처리'는 자바의 스트림(stream)의 원리와 특성에 관해 설명하고,

CHAPTER 07 '스트림 사용하기'에서는 스트림의 다양한 사용법을 예를 들어 알려준다.

CHAPTER 08 '스트림을 활용한 병렬 데이터 처리'는 동시성과 병렬성의 개념과 스트림을 사용한 병렬처리 방법, 주의할 점을 설명하고,

CHAPTER 09 'Optional을 사용한 null 처리'는 null 참조의 문제점과 Optional의 개념, 사용법을 알아본다.

CHAPTER 10 '함수형 예외 처리'에서는 자바의 예외와 에러를 처리하는 방법과 함수형으로 예외를 다루는 방법을 살펴보고,

CHAPTER 11 '느긋한 계산법(지연 평가)'는 느긋한 처리(지연 실행)의 장단점과 실제 사용방법을 알아본다.

CHAPTER 12 '재귀'에서는 재귀적 프로그래밍의 장단점을 알아보고, 함수형 프로그래밍으로 재귀적인 문제를 해결하는 방법을 살펴보고,

CHAPTER 13 '비동기 작업'은 동기와 비동기의 개념과 함수형 프로그래밍으로 비동기 작업을 처리하는 방법에 관해 알아본다.

CHAPTER 14 '함수형 디자인 패턴'에서는 디자인 패턴의 개념과 팩토리 패턴, 데코레이션 패턴, 전략 패턴, 빌더 패턴에 관해 함수형 프로그래밍으로 적용하는 방법에 관해 살펴보고,

CHAPTER 15 자바를 위한 함수형 접근 방식 - 웹스크래핑 관심사 분리, p571

<CHAPTER 15 자바를 위한 함수형 접근 방식 - 웹스크래핑 관심사 분리, p571>



CHAPTER 15 '자바를 위한 함수형 접근 방식'은 여태까지 설명한 자바의 함수형 프로그래밍을 전체적으로 정리하면서 마무리 한다.

 

각 장은 먼저 해당 주제의 개념과 함수형 프로그래밍을 사용할 때 좋은 점과 주의할 점을 예시를 통해 설명하고, 함수형 프로그래밍으로 다양한 사례를 들어 설명한다. 마지막에는 주제에 대한 추가로 고려할 점을 고민해보고 핵심 요약을 통해 마무리한다.

 

주제의 개념 설명은 자바나 함수형 프로그래밍에 국한되지 않고, 일반적인 개념부터 설명하기때문에 이론적으로 부족한 부분을 확실하게 짚을 수 있었고, 그림이 많아서 개념은 쉽게 이해할 수 있었으며, 예제의 난이도도 크게 어렵지 않았다. 중간중간 'NOTE', 'CAUTION'를 사용하여 주의 점과 팁, 고려할 점을 전달하니, 잘 챙겨보도록 하자.

 

아쉬운 부분은 2014년 자바8이후로 지금의 자바21까지 10년간 자바 언어에 함수형 프로그래밍이 도입되면서, 각 장의 주제와 지원되는 버전이 매번 달라서 전체적으로 버전과 기능을 정리한 페이지가 있었으면 좋았겠다고 생각했다. 개발자는 항상 최신 버전의 JDK가 아니라, 고객의 운영환경에 맞는 JDK를 사용하여 개발해야 하기때문이다.

두 번째는 아무래도 예제가 중간중간 생략된 부분이 있어서, 간단하더라도 컴파일이 되는 버전이면 더 좋겠다고 생각했다.

 

마지막으로 좋았던 부분은 CHAPTER 15 '자바를 위한 함수형 접근 방식'이었는데, 책의 내용 전체를 요약하는 것도 좋았지만, 개발자로써 객체 지향 프로그래밍과 함수형 프로그래밍을 어떻게 접근할 것인가에 관한 저자의 솔직한 의견이 많이 도움이 되었다.

 

저자가 생각하는 자바의 함수형 프로그래밍 접근방식을 인용하면서 마무리한다.



함수형 프로그래머가 되지 마세요.

객체 지향 프로그래머가 되지 마세요.

더 나은 프로그래머가 되세요.

브파이언 게츠, FP vs OO: Choose Two

 

소프트웨어 개발은 주어진 문제에 가장 적합한 도구를 선택하는 것입니다. 자바 개발자로서 우리에게 제공되는 함수형 개념과 기법들을 일상적인 작업에 도입함으로써, 우리의 도구함에는 가치 있는 새로운 도구들이 추가됩니다. 이러한 도구들은 코드를 더욱 읽기 쉽고, 이해하기 쉽고, 유지보수하기 쉽고, 테스트하기 쉽게 만들어 줍니다.

CHAPTER 15 자바를 위한 함수형 접근 방식, p522

 



"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

#함수형프로그래밍 #자바 #벤바이디히 #허귀영 #한빛미디어 #optional #스트림 #람다 #fuctionalProgramming #FC

닫기

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