길벗·이지톡

도서 IT 전문서 프로그래밍/오픈소스
r

데이터에 실시간으로 반응하고 비동기 처리가 가능한 리액티브 프로그래밍을 배우자

리액티브 프로그래밍의 기본 개념을 잡자! 

리액티브 프로그래밍 라이브러리의 표준 사양인 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를 사용한 예제

 

찾아보기

 

더보기접기

저자

ㆍ지은이 스다 토모유키

저자소개

 

SI 기업에서 10년 넘게 시스템 엔지니어로 일했으며 현재는 프리랜서다. 기업용 엔터프라이즈 시스템 개발뿐만 아니라 개인용 모바일 애플리케이션 개발과 IT 분야의 다양한 기사도 집필했다.


 

ㆍ옮긴이 이승룡

저자소개

솔루션 아키텍트로서 오픈 소스 기반 솔루션 개발 및 오픈 소스 컨설팅 업무를 하고 있으며 IT와 관련된 다양한 분야에 관심이 있다. 특히 오픈 소스에 관심이 많아 전자정부 표준프레임워크 에반젤리스트, 스프링 프레임워크 컨트리뷰터, 아파치 재단 커미터 등의 활동을 하고 있으며, 다양한 커뮤니티에서 테크니컬 라이터로도 활동하고 있다.

저서

모두의 네트워크 옮김

CentOS 7 예비학교 옮김


연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.