코틀린 리액티브 프로그래밍 [RxKotlin을 사용한 리액티브 프로그래밍]
- 원서명Reactive Programming in Kotlin: Design and build non-blocking, asynchronous Kotlin applications with RXKotlin, Reactor-Kotlin, Android, and Spring (ISBN 9781788473026)
- 지은이리부 차크라보티(Rivu Chakraborty)
- 옮긴이조승진
- ISBN : 9791161752976
- 30,000원
- 2019년 04월 30일 펴냄
- 페이퍼백 | 384쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 프로그래밍 언어
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
리액티브 프로그래밍 패러다임에 대해 알아보고 RxExtension, 그 중에서도 특히 RxKotlin을 사용해 기존 프로젝트를 개선하거나 손쉽게 새로운 기능을 개발할 수 있도록 도와주는 책이다. RxKotlin에서 자신만의 연산자를 만들거나 테스트 방법까지 다루며, 스프링과 안드로이드의 통합도 다룬다.
이 책에서 다루는 내용
█ 리액티브 프로그래밍 패러다임과 기존 프로젝트 향상 방법
█ RxKotlin 2.0과 ReactiveX 프레임워크
█ 안드로이드에서 RxKotlin 사용하기
█ RxKotlin에서 사용자 지정 연산자 생성
█ 코틀린과 스프링 프레임워크 5.0
█ reactor-kotlin 확장
█ 스프링, 하이버네이트, RxKotlin을 사용해 Rest API 작성
█ TestSubscriber를 사용해 RxKotlin 애플리케이션 테스트
█ 플로어블(Flowable)과 백프레셔 관리
이 책의 대상 독자
장애 내성을 갖는 동시에 확장 가능한 분산 시스템을 만드는 데 관심이 있는 개발자를 대상으로 한 책이다. 이 책을 보기 위해서는 코틀린에 대한 기본 지식이 있어야 하지만 리액티브 프로그래밍에 대한 사전 지식은 필요로 하지 않는다.
이 책의 구성
1장, ‘리액티브 프로그래밍의 소개’에서는 리액티브 프로그래밍의 사고 패턴 및 원리를 이해할 수 있다.
2장, ‘코틀린과 RxKotlin을 사용한 함수형 프로그래밍’에서는 함수형 프로그래밍 패러다임의 핵심 개념을 알아보고 코틀린에서 사용 가능한 케이스를 살펴본다. 함수형 프로그래밍을 쉽게 이해할 수 있다.
3장, ‘옵저버블과 옵저버와 구독자’에서는 RxKotlin의 핵심인 옵저버블, 옵저버, 구독자의 기초에 대해 알아본다.
4장, ‘백프레셔와 플로어블 소개’에서는 프로듀서가 컨슈머를 앞지르는 것을 방지해주는 RxKotlin의 기술인 백프레셔를 사용할 수 있게 해주는 플로어블을 소개한다.
5장, ‘비동기 데이터 연산자와 변환’에서는 RxKotlin의 연산자를 소개한다.
6장, ‘연산자 및 오류 처리’에서는 연산자에 대한 이해를 높이고 연산자와 프로듀서를 결합, 또는 필터링하는 방법을 소개한다. 또한 RxKotlin에서 오류를 좀 더 효율적으로 처리하는 데 도움을 준다.
7장, ‘RxKotlin의 스케줄러를 사용한 동시성과 병렬 처리’에서는 RxKotlin의 스케줄러를 사용한 동시성과 병렬 처리를 알아본다. 스케줄러의 이점을 사용해 동시성 프로그래밍을 가능하게 한다.
8장, ‘RxKotlin 애플리케이션 테스트’에서는 애플리케이션 개발 시 가장 중요한 테스트를 다룬다. 리액티브 프로그래밍은 상태 대신 행위를 정의하기 때문에 RxKotlin에서의 테스트는 일반 테스트와 조금 다르다. 이 장에서는 테스트의 기본부터 배울 수 있다.
9장, ‘자원 관리와 RxKotlin 확장’에서는 코틀린에서 리소스를 관리하는 방법을 알아본다. 리소스는 데이터베이스 인스턴스, 파일, HTTP 접근 등 사용 후 종료close시켜 줘야 하는 어떤 것이라도 될 수 있다. 또한 RxKotlin에서 사용자 정의 연산자를 만드는 방법을 배운다.
10장, ‘Kotlin 개발자를 위한 스프링 웹 프로그래밍 소개’에서는 스프링과 하이버네이트를 사용하는 장점을 알아보고, 코틀린으로 API를 작성할 때 활용한다.
11장, ‘스프링 JPA와 하이버네이트를 사용한 REST API’에서는 리액터(Reactor) 프레임워크인 reactorkotlin 익스텐션을 소개한다. 코틀린에서 스프링을 사용해 리액티브 프로그래밍을 적용할 수 있다.
12장, ‘리액티브 코틀린과 안드로이드’에서는 안드로이드에서 코틀린으로 리액티브 프로그래밍을 시작한다.
목차
목차
- 1장. 리액티브 프로그래밍의 소개
- 리액티브 프로그래밍이란 무엇인가
- 함수형 리액티브 프로그래밍을 적용해야 하는 이유
- 리액티브 선언
- 리액티브 스트림 표준 사양
- 코틀린을 위한 리액티브 프레임워크
- RxKotlin 시작하기
- RxKotlin 다운로드와 설정
- RxJava의 푸시 메커니즘과 풀 메니커즘 비교
- ReactiveEvenOdd 프로그램
- ReactiveCalculator 프로젝트
- 요약
- 2장. 코틀린과 RxKotlin을 사용한 함수형 프로그래밍
- 함수형 프로그래밍 소개
- 함수형 프로그래밍의 기초
- 람다 표현식
- 순수 함수
- 고차 함수
- 인라인 함수
- ReactiveCalculator 클래스에 함수형 프로그래밍 적용
- 코루틴
- 코루틴 시작하기
- 시퀀스 생성하기
- 코루틴을 사용한 ReactiveCalculator 클래스
- 함수형 프로그래밍: 모나드
- 단일 모나드
- 요약
- 3장. 옵저버블과 옵저버와 구독자
- 옵저버블
- 옵저버블이 동작하는 방법
- Observable의 다른 팩토리 메서드
- 구독자: Observer 인터페이스
- 구독과 배치
- 핫, 콜드 옵저버블
- 콜드 옵저버블
- 핫 옵저버블
- 다양한 구독자
- AsyncSubject 이해
- PublishSubject 이해
- BehaviorSubject 이해
- ReplaySubject 이해
- 요약
- 옵저버블
- 4장. 백프레셔와 플로어블 소개
- 백프레셔 이해
- 플로어블
- 플로어블과 옵저버블 사용 구분
- 플로어블을 언제 사용할까
- 옵저버블을 언제 사용할까
- 플로어블과 구독자
- 처음부터 플로어블 생성하기
- 옵저버블로 플로어블 만들기
- BackpressureStrategy.MISSING와 onBackpressureXXX()
- onBackpressureBuffer() 연산자
- onBackpressureDrop() 연산자
- onBackpressureLatest() 연산자
- 원천에서 백프레셔를 지원하는 플로어블 생성
- ConnectableFlowable
- 프로세서
- 버퍼, 스로틀링, 윈도우 연산자
- buffer() 연산자
- window() 연산자
- throttle() 연산자
- 요약
- 5장. 비동기 데이터 연산자와 변환
- 연산자
- 필터링 연산자
- debounce 연산자
- distinct 연산자: distinct, distinctUntilChanged
- elementAt 연산자
- 배출 필터링하기: filter 연산자
- first, last 연산자
- ignoreElements 연산자
- 변환 연산자
- map 연산자
- 배출 캐스팅: cast 연산자
- flatMap 연산자
- defaultIfEmpty 연산자
- switchIfEmpty 연산자
- startWith 연산자
- 정렬 연산자: sorted 연산자
- 데이터 모으기: scan 연산자
- 축소 연산자
- 배출량 계산(count 연산자)
- 배출 누적: reduce 연산자
- 컬렉션 연산자
- 오류 처리 연산자
- 유틸리티 연산자
- 요약
- 6장. 연산자 및 오류 처리
- 프로듀서(옵저버블/플로어블) 결합
- startWith 연산자
- 배출을 집핑하기: zip 연산자
- combineLatest 연산자
- 옵저버블/플로어블 병합: merge 연산자
- 프로듀서 이어 붙이기(옵저버블/플로어블)
- 프로듀서 임의 결합
- 그룹핑
- flatMap, concatMap 세부 사항
- flatMap 연산자가 적합한 경우
- concatMap 연산자가 적합한 경우
- switchMap 연산자 이해
- 배출 건너뛰거나 취하기
- 배출 건너뛰기(skip, skipLast, skipUntil, skipWhile)
- take 연산자(take, takeLast, takeWhile, takeUntil)
- 에러 처리 연산자
- onErrorReturn: 에러 발생 시 기본값 반환하기
- onErrorResumeNext 연산자
- 에러 발생 시 재시도하기
- HTTP 예제
- 요약
- 프로듀서(옵저버블/플로어블) 결합
- 7장. RxKotlin의 스케줄러를 사용한 동시성과 병렬 처리
- 동시성 소개
- 병렬 실행과 동시성
- 스케줄러는 무엇인가
- 스케줄러의 종류
- Schedulers.from
- 스케줄러 사용법: subscribeOn, observeOn 연산자
- 구독 시 스레드 변경: subscribeOn 연산자
- 다른 스레드에서 관찰: observeOn 연산자
- 요약
- 8장. RxKotlin 애플리케이션 테스트
- 단위 테스트 소개와 중요성
- 단위 테스트가 중요한 이유
- 코틀린에서 JUnit 테스트 작성하기
- 코드 테스트하기
- RxKotlin에서 테스트
- 구독자 차단
- 차단 연산자
- 첫 번째 배출된 아이템 가져오기: blockingFirst()
- single 또는 maybe에서 단일 아이템 얻기: blockingGet
- 마지막 아이템 얻기: blockingLast
- 모든 배출을 이터러블로 가져오기: blockingIterable 연산자
- 모든 배출을 순회하기: blockingForEach
- TestObserver와 TestSubscriber 소개
- TestScheduler 이해
- 요약
- 단위 테스트 소개와 중요성
- 9장. 자원 관리와 RxKotlin 확장
- 자원 관리
- 자신만의 연산자 작성하기
- 변환자로 연산자 합성
- 요약
- 10장. 코틀린 개발자를 위한 스프링 웹 소개
- 스프링, 스프링의 역사와 기원
- 스프링의 역사와 기원
- 의존성 주입과 IoC
- 스프링 주석 기반 설정
- 스프링: AOP
- 스프링 부트 소개
- 스프링 부트를 사용해 Rest API 만들기
- 요약
- 스프링, 스프링의 역사와 기원
- 11장. 스프링 JPA와 하버네이트를 사용한 REST API
- 스프링 부트, 하이버네이트 JPA를 사용한 REST API
- 리액터를 이용한 리액티브 프로그래밍
- 프로젝트에 리액터 추가
- 플럭스와 모노 이해
- 요약
- 12장. 리액티브 코틀린과 안드로이드
- 안드로이드 스튜디오에서 코틀린 설정
- 안드로이드에서 ToDoApp 개발
- 레트로핏 2를 사용한 API 호출
- 레트로핏과 RxKotlin 사용하기
- 안드로이드 이벤트를 리액티브로 만들기
- 안드로이드의 RxBinding 소개
- 코틀린 익스텐션즈
- 요약
도서 오류 신고
정오표
정오표
[ p.126~127 : 코드 일부]
[p.137 : 출력 결과 스크린샷]
init 1
->
MyItem Created 1
Rec MyItem8(id=1)
->
MyItem9(id=1)