데이터에 실시간으로 반응하고 비동기 처리가 가능한 리액티브 프로그래밍을 배우자
리액티브 프로그래밍의 기본 개념을 잡자!
리액티브 프로그래밍 라이브러리의 표준 사양인 Reactive Streams를
소개하고 RxJava를 시작하는 데 필요한 람다식과 비동기 처리에 관한 배경 지식은 물론 RxJava의 메커니즘과 핵심 연산자의 작동 원리, RxJava로
구현한 코드를 디버깅하거나 테스트하는 방법까지 RxJava 2.x로 리액티브 프로그래밍을 하는 데 필요한
기본 내용을 다룬다.
마블 다이어그램과 예제로 이해하자!
RxJava의 핵심 연산자들이 어떻게 작동하는지를 마블 다이어그램과
예제로 설명한다. Javadoc만으로는 이해하기 어려운 메서드의 작동 원리를 마블 다이어그램으로 시각화해
보여주고 연산자마다 예제를 제공하여 정확한 작동 원리를 파악할 수 있다. 이 예제들을 학습하면서 리액티브
프로그래밍의 개념을 확실히 이해하고 개발하는 데 필요한 적절한 연산자를 선택할 수 있을 것이다.
RxJava의
기본에 충실하자!
RxJava는 안드로이드 라이브러리와 기타 라이브러리를 포함하면 학습
범위가 너무 넓다. 안드로이드 라이브러리나 자체 연산자 개발 등의 확장 주제는 제외하고 RxJava의 기본 기능을 확실히 이해하고 사용하는 데 필요한 내용만 설명한다.
1장 RxJava의 기본
1.1 RxJava와 리액티브 프로그래밍
_1.1.1 RxJava란
_1.1.2 리액티브 프로그래밍이란
_1.1.3 RxJava의 개요
_1.1.4 RxJava의 특징
1.2 Reactive Streams
_1.2.1 Reactive Streams란
_1.2.2 Reactive Streams의 구성
_1.2.3 Reactive Streams의 규칙
1.3 RxJava의 기본 구조
_1.3.1 기본 구조
_1.3.2 연산자
_1.3.3 비동기 처리
_1.3.4 Cold 생산자와
Hot 생산자
_1.3.5
ConnectableFlowable/ConnectableObservable
_1.3.6 Flowable/Observable을 Cold에서 Hot으로 변환하는 연산자
1.4 마블 다이어그램
1.5 RxJava 예제
_1.5.1 환경 구축
_1.5.2 Flowable 사용 예제
_1.5.3 Observable 사용 예제
1.6 RxJava의 전체 구성
_1.6.1 RxJava의 기본 구성
_1.6.2 Single/Maybe/Completable
_1.6.3 RxJava의 확장 모듈
2장 RxJava를 사용하는 데 필요한 배경 지식
2.1 람다식
_2.1.1 함수형 인터페이스
_2.1.2 람다식 문법
_2.1.3 람다식과 익명 클래스의 차이점
2.2 비동기 처리
_2.2.1 비동기 처리 시 주의할 점
_2.2.2 비동기 처리 시 발생하는 문제에 대한 대응 방안
_2.2.3 java.util.concurrent.atomic 패키지
_2.2.4 정리
3장 RxJava의 메커니즘
3.1 RxJava와 디자인 패턴
_3.1.1 옵저버 패턴
_3.1.2 이터레이터 패턴
3.2 비동기 처리
_3.2.1 RxJava에서 비동기 처리
_3.2.2 연산자 내에서 생성되는 비동기 Flowable/Observable
_3.2.3 다른 스레드 간 공유되는 객체
3.3 에러 처리
_3.3.1 소비자에게 에러 통지하기
_3.3.2 처리 재시도
_3.3.3 대체 데이터 통지
3.4 리소스 관리
_3.4.1 using 메서드
_3.4.2 FlowableEmitter/ObservableEmitter
3.5 배압
_3.5.1 request 메서드
_3.5.2 observeOn 메서드와 배압
_3.5.3 MissingBackpressureException
_3.5.4 메서드로 통지할 데이터양 제어하기
4장 Flowable과 Observable의 연산자
4.1 Flowable/Observable을 생성하는 연산자
_4.1.1 just
_4.1.2 fromArray/fromIterable
_4.1.3 fromCallable
_4.1.4 range/rangeLong
_4.1.5 interval
_4.1.6 timer
_4.1.7 defer
_4.1.8 empty
_4.1.9 error
_4.1.10 never
4.2 통지 데이터를 변환하는 연산자
_4.2.1 map
_4.2.2 flatMap
_4.2.3 concatMap/concatMapDelayError
_4.2.4
concatMapEager/concatMapEagerDelayError
_4.2.5 buffer
_4.2.6 toList
_4.2.7 toMap
_4.2.8 toMultimap
4.3 통지 데이터를 제한하는 연산자
_4.3.1 filter
_4.3.2 distinct
_4.3.3 distinctUntilChanged
_4.3.4 take
_4.3.5 takeUntil
_4.3.6 takeWhile
_4.3.7 takeLast
_4.3.8 skip
_4.3.9 skipUntil
_4.3.10 skipWhile
_4.3.11 skipLast
_4.3.12 throttleFirst
_4.3.13 throttleLast/sample
_4.3.14 throttleWithTimeout/debounce
_4.3.15 elementAt/elementAtOrError
4.4 Flowable/Observable을 결합하는 연산자
_4.4.1 merge/mergeDelayError/mergeArray/mergeArrayDelayError/mergeWith
_4.4.2
concat/concatDelayError/concatArray/concatArrayDelayError/concatWith
_4.4.3 concatEager/concatArrayEager
_4.4.4 startWith/startWithArray
_4.4.5 zip/zipWith
_4.4.6 combineLatest/combineLatestDelayError
4.5 Flowable/Observable 상태를 통지하는 연산자
_4.5.1 isEmpty
_4.5.2 contains
_4.5.3 all
_4.5.4 sequenceEqual
_4.5.5 count
4.6 Flowable/Observable 데이터를 집계하는 연산자
_4.6.1 reduce/reduceWith
_4.6.2 scan
4.7 유틸리티 연산자
_4.7.1 repeat
_4.7.2 repeatUntil
_4.7.3 repeatWhen
_4.7.4 delay
_4.7.5 delaySubscription
_4.7.6 timeout
5장 Processor와 Subject
5.1 Processor/Subject
_5.1.1 Processor/Subject란
_5.1.2 Processor/Subject의 종류
5.2 PublishProcessor/PublishSubject
5.3 BehaviorProcessor/BehaviorSubject
5.4 ReplayProcessor/ReplaySubject
5.5 AsyncProcessor/AsyncSubject
5.6 UnicastProcessor/UnicastSubject
6장 RxJava의 디버깅과 테스트
6.1 디버깅과 테스트
6.2 ‘do’로 시작하는 메서드
_6.2.1 doOnNext
_6.2.2 doOnComplete
_6.2.3 doOnError
_6.2.4 doOnSubscribe
_6.2.5 doOnRequest
_6.2.6 doOnCancel/doOnDispose
6.3 ‘blocking’으로 시작하는 메서드
_6.3.1 blockingFirst
_6.3.2 blockingLast
_6.3.3 blockingIterable
_6.3.4 blockingSubscribe
6.4 TestSubscriber/TestObserver
_6.4.1 TestSubscriber/TestObserver 생성
6.5 TestScheduler
_6.5.1 주요 메서드
_6.5.2 TestScheduler를 사용한 예제
찾아보기
ㆍ지은이 스다토모유키
ㆍ옮긴이 이승룡
독자의견 남기기