도서소개
최근 모바일 기기 사용이 늘면서 시스템에서 처리할 이벤트나 데이터가 극단적으로 증가하고 있다. 이에 따라 대용량 데이터의 저장과 업데이트가 쉴 새 없이 이뤄지고 있고 심지어 이 데이터가 실시간으로 반영되기를 원한다. 이와 같은 변화는 기존 프로그래밍 방식으로는 처리하기가 어려워서 그 해결책으로 리액티브 프로그래밍이 주목받고 있다. 리액티브 프로그래밍은 데이터가 변경되는 흐름에 따라 자동으로 전파되는 프로그래밍 방식으로, 주로 GUI 입출력, 시간 경과에 따라 상태가 변화하는 처리, 비동기 통신을 하는 애플리케이션에 사용하기 적합하다.
이 책에서 다루는 RxJava은 이러한 요구 사항를 충족하는 자바 라이브러리로, 원래 서버 측의 비동기 처리를 단순화하고자 마이크로소프트가 공개한 Reactive Extensions를 넷플릭스가 자바에 도입한 것이다. RxJava는 서버 사이드뿐만 아니라 많은 이벤트 처리를 다뤄야 하는 안드로이드(Android)와도 궁합이 잘 맞아 안드로이드 개발에 인기가 높아지고 있다.
이 책은 리액티브 프로그래밍을 처음 접하는 사람을 위해 Reactive Streams부터 람다식과 비동기 처리까지 리액티브 프로그래밍의 기초를 다루며, 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를 사용한 예제
찾아보기
해시태그
#RxJava #리액티브 #프로그래밍 #데이터에 #실시간으로 #반응하는 #새로운 #패러다임을 #배우자