간편결제, 신용카드 청구할인
북피니언 롯데카드 30% (20,790원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (23,760원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (26,730원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (27,630원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (23,760원)
(최대할인 4만원 / 2만원 이상 결제)
Close

RxJava 시작하기 : RxJava로 시작하는 리액티브 프로그래밍

원제 : Learning RxJava
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 48
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

33,000원

  • 29,700 (10%할인)

    1,650P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
  • 추가혜택
    배송정보
    주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서(25)

    • 사은품(1)

    책소개

    리액티브 프로그래밍을 배워야 하는 이유와 RxJava의 필수적인 연산자들을 언제 어떻게 사용해야 하는지 알아본다.
    RxJava의 기본이 되는 옵저버블과 구독자와 함께 고급 주제인 동시성과 백프레셔를 다뤄보고 실제적으로 어떻게 복잡한 구현에 적용할 수 있는지 알려준다.

    출판사 서평

    [이 책에서 다루는 내용]

    - Flowable, Single, Maybe, Completable을 포함해 핵심적인 변화를 가져올 RxJava2의 리액티브 타입에 대해 배운다.
    - 리액티브 프로그래밍의 동작방식과 반응형으로 사고하는 법을 배운다.
    - 옵저버블을 쉽게 설명하고 옵저버블을 어떻게 데이터와 이벤트 시퀸스로 표현하는지 알아본다.
    - 데이터와 이벤트 시퀸스를 변환, 필터링 및 조합하는 다양한 Rx연산자에 대해 알아본다.
    - 멀티캐스팅을 활용해 데이터를 다양한 지점으로 푸시하는 방법과 데이터를 전달하고 캐시하는 방법에 대해 알아본다.
    - RxJava에서 동시성과 병렬화가 작동하는 방식과 어떻게 기존의 복잡한 작업을 손쉽게 구현하는지 알아본다.
    - 안드로이드에서 RxJava와 Retrolambda를 사용해 더 나은 사용자 경험을 제공하는 반응형 안드로이드 앱을 만들어본다.
    - 코틀린의 확장 함수, 데이터 클래스 및 기타 기능을 사용해 RxJava의 사용을 더욱 자연스럽게 만들어본다.

    [이 책의 대상 독자]

    이 책은 자바의 핵심 기능과 객체지향 프로그래밍에 대한 기초 지식을 갖고 있는 자바 개발자를 대상으로 한다. 변수, 유형, 클래스, 속성, 메서드, 제네릭, 상속, 인터페이스, 정적 클래스/속성/메서드에 익숙해야 한다. 자바 표준 라이브러리가 제공하는 컬렉션(리스트, 세트, 맵)과 hashcode()/equals()를 사용한 객체의 동등성에 대해서도 잘 알아야 한다. 위에서 언급한 주제 중 하나라도 모르는 내용이 있다면 허버트 쉴트(Herbert Schildt)의 [Java- A Beginner's Guide, Sixth Edition](McGraw-Hill Education, 2014)을 통해 자바의 기초를 공부할 수 있다. 또한 조슈아 블로크(Joshua Bloch)의 [이펙티브 자바 2판](인사이트, 2014) 역시 대부분의 자바 개발자의 책장에서 찾아볼 수 있는 고전이다. 이 책은 블로크가 인용하는 베스트 프랙티스를 지키기 위해서 노력할 것이다.
    동시성에서 대해서 미리 알 필요는 없으며 RxJava 관점에서 다룰 것이다.

    [이 책의 구성]

    1장, '반응형으로 사고하기'에서는 RxJava에 대해 소개한다.
    2장, '옵저버블과 구독자'에서는 옵저버블과 옵저버를 포함하는 RxJava의 핵심 유형에 대해 설명한다.
    3장, '기본 연산자'에서는 신속하게 로직을 표현하고 생산성을 높여주는 핵심 연산자에 대해 철저하게 알아본다.
    4장, '연산자 결합'에서는 다양한 방법으로 여러 개의 옵저버블 소스를 결합하는 방법을 배워본다.
    5장, '멀티캐스팅, 전달 및 캐싱'에서는 여러 옵저버의 중복 작업을 방지하기 위한 스트림 통합과 전달 및 캐싱에 대해 알아본다.
    6장, '동시성과 병렬처리'에서는 RxJava가 애플리케이션에서 유연하고 강력하게 동시성을 제공하는 방법에 대해 알아본다.
    7장, '스위칭, 스로틀링, 윈도잉 및 버퍼링'에서는 빠르게 배출하는 옵저버블을 백프레셔 없이도 처리하는 방법에 대해 알아본다.
    8장, '플로어블과 백프레셔'에서는 플로어블을 바탕으로 백프레셔를 활용하고 생산자가 컨슈머의 처리 속도보다 빠르게 배출하는 것을 막는다.
    9장, '트랜스포머와 커스텀 연산자'에서는 리액티브 로직을 재활용하는 방법과 자신만의 RxJava 연산자를 생성하는 법에 대해 배운다.
    10장, '테스트와 디버깅'에서는 효과적인 도구를 통해 RxJava 애플리케이션을 테스트하고 디버깅하는 방법에 대해 배운다.
    11장, '안드로이드에서의 RxJava'에서는 지식을 안드로이드에 적용하는 방법과 RxAndroid 확장을 통해 안드로이드 앱을 최적화한다.
    12장, '새로운 코틀린에 RxJava 사용하기'에서는 코틀린의 기능을 활용해 RxJava의 표현력을 향상시킨다.

    목차

    1장. 반응형 사고
    RxJava와 리액티브 익스텐션의 간략한 역사
    반응형으로 사고
    RxJava를 배워야 하는 이유
    -책에서 배우게 될 내용
    설정
    -중앙 저장소 탐색
    RxJava 간단히 알아보기
    RxJava 1.0과 RxJava 2.0? 어떤 것을 사용해야 할까?
    언제 RxJava를 사용할 것인가?
    요약

    2장. 옵저버블과 구독자
    옵저버블
    -옵저버블은 어떻게 작동하는가?
    -Observable.create() 사용
    -Observable.just() 사용
    Observer 인터페이스
    -옵저버 구현과 구독
    -람다를 사용해 간결히 표현하는 옵저버
    콜드 옵저버블과 핫 옵저버블
    -콜드 옵저버블
    -핫 옵저버블
    -ConnectableOvservable
    다른 옵저버블 소스
    -Observable.range()
    -Observable.interval()
    -Observable.future()
    -Observable.emtpy()
    -Observable.never()
    -Observable.error()
    -Observable.defer()
    -Observable.fromCallable()
    Single, Completable 그리고 Maybe
    -Single
    -Maybe
    -Completable
    해지처리
    -옵저버 내부에서 디스포저블 다루기
    -CompositeDisposable 사용
    -Observable.create()를 통한 해지처리
    요약

    3장 기본 연산자 101
    억제 연산자
    -filter()
    -take()
    -skip()
    -takeWhile()과 skipWhile()
    -distinct()
    -distinctUntilChanged()
    -elementAt()
    변환 연산자
    -map()
    -cast()
    -startWith()
    -defaultIfEmpty()
    -switchIfEmpty()
    -sorted()
    -delay()
    -repeat()
    -scan()
    감축 연산자
    -count()
    -reduce()
    -all()
    -any()
    -contains()
    컬렉션 연산자
    -toList()
    -toSortedList()
    -toMap()과 toMultiMap()
    -collect()
    복구 연산자
    -onErrorReturn()과 onErrorReturnItem()
    -onErrorResumeNext()
    -retry()
    액션 연산자
    -doOnNext(), doOnComplete() 그리고 doOnError()
    -doOnSubscribe()와 doOnDispose()
    -doOnSuccess()
    요약

    4장. 연산자 결합
    병합 연산자
    -Observable.merge()와 mergeWith()
    -flatMap()
    연결 연산자
    -Observable.concat()과 concatWith()
    -concatMap()
    Ambigous 연산자
    지핑 연산자
    최근 배출 결합 연산자
    -withLatestFrom()
    그루핑 연산자
    요약

    5장. 멀티캐스팅, 전달 및 캐싱
    멀티캐스팅의 이해
    -연산자를 이용한 멀티캐스팅
    -멀티캐스팅의 사용 시점
    자동 연결
    -autoConnect()
    -refCount()와 share()
    재전송 및 캐싱
    -재전송
    -캐싱
    서브젝트
    -PublishSubject
    -서브젝트를 사용할 때
    -서브젝트를 잘못 사용할 때
    -서브젝트 직렬화
    -BehaviorSubject
    -ReplaySubject
    -AsyncSubject
    -UnicastSubject
    요약

    6장. 동시성과 병렬처리
    동시성이 필요한 이유
    동시성 요약
    -병렬처리 이해
    RxJava의 동시성 소개
    -애플리케이션의 활성 상태 유지
    스케줄러에 대한 이해
    -계산 스케줄러
    -IO 스케줄러
    -새로운 스레드
    -싱글 스케줄러
    -트램펄린
    -ExecutorService
    -스케줄러 시작과 종료
    subscribeOn() 이해
    -subscribeOn()의 뉘앙스
    observeOn() 이해
    -UI 이벤트 스레드에 대해 observeOn() 사용
    -observeOn()의 주의 사항
    병렬처리
    unsubscribeOn()
    요약

    7장. 스위칭, 스로틀링, 윈도잉 및 버퍼링
    버퍼링
    -고정 크기 버퍼링
    -시간 기반 버퍼링
    -경계 기반 버퍼링
    윈도잉
    -고정 크기 윈도잉
    -시간 기반 윈도잉
    -경계 기반 윈도잉
    스로틀링
    -throttleLast()/sample()
    -throttleFirst()
    -throttleWithTimeout()/debounce()
    스위칭
    키 입력 그루핑
    요약

    8장. 플로어블과 백프레셔
    백프레셔에 대한 이해
    -백프레셔가 필요한 예제
    -플로어블 소개
    -플로어블과 백프레셔를 사용해야 하는 경우
    플로어블과 구독자의 이해
    -구독자
    플로어블 생성하기
    -Flowable.create()와 BackpressureStrategy 사용
    -Observable을 Flowable으로 변환(또는 그 반대)
    -onBackpressureXXX() 연산자 사용
    -onBackPressureBuffer()
    -onBackPressureLatest()
    -onBackPressureDrop()
    Flowable.generate()의 사용
    요약

    9장. 트랜스포머와 커스텀 연산자
    트랜스포머
    -ObservableTransformer
    -FlowableTransformer
    -트랜스포머에서 상태공유 피하기
    to()를 사용해 이해하기 쉽게 전환하기
    연산자
    -ObservableOperator 구현
    -FlowableOperator
    Single, Maybe 및 Completable을 위한
    커스텀 트랜스포머 및 연산자
    RxJava2-Extras와 RxJava2Extensions 사용하기
    요약

    10장. 테스트와 디버깅
    JUnit 설정
    블로킹 구독자
    블로킹 연산자
    -blockingFirst()
    -blockingGet()
    -blockingLast()
    -blockingIterable()
    -blockingForEach()
    -blockingNext()
    -blockingLatest()
    -blockingMostRecent()
    TestObserver와 TestSubscriber 사용
    TestScheduler를 통한 시간 조작
    RxJava 코드 디버깅
    요약

    11장. 안드로이드에서의 RxJava
    안드로이드 프로젝트 만들기
    -Retrolambda 설정
    -RxJava 및 기타 라이브러리의 구성
    RxJava와 RxAndroid 사용
    -RxBinding의 사용
    다른 RxAndroid 바인딩 라이브러리
    안드로이드에서 RxJava의 라이프 사이클과 주의 사항
    요약

    12장. 새로운 코틀린에 RxJava 사용
    코틀린 사용 이유
    코틀린의 구성
    -그레이들에서 코틀린의 구성
    -메이븐에서 코틀린의 구성
    -RxJava 및 RxKotlin의 구성
    코틀린의 기초
    -코틀린 파일 만들기
    -속성과 변수 할당
    -확장 함수
    -코틀린 람다
    확장 연산자
    RxKotlin의 사용
    SAM
    let()과 apply()
    -let() 사용
    -apply() 사용
    튜플과 데이터 클래스
    ReactiveX와 코틀린의 미래
    요약

    본문중에서

    리액티브 프로그래밍은 신기술 또는 라이브러리 그 이상이며, 문제를 해결하기 위한 완전히 새로운 사고 방식이다. 리액티브 프로그래밍이 효과적이고 혁신적인 이유는 우리의 세계를 일련의 상태 대신 끊임없이 움직이는 것으로 구성하기 때문이다. 상태보다 쉽게 동작의 복잡성과 동적인 특성을 신속하게 포착할 수 있기 때문에 코드를 사용해 사물을 표현하는 방식에 새로운 가능성이 열린다.
    자바와 객체지향 프로그래밍을 처음 배웠을 때는 유용하다고 생각했지만 충분히 효과적이라고 느끼지는 못했다. OOP는 유용하지만, 더 높은 생산성을 위해서는 다른 무언가와 짝을 지을 필요가 있다고 생각했기 때문에 C#와 스칼라를 유심히 지켜봤다. 불과 몇 년 뒤 자바 8이 출시됐는데, 그때 처음으로 함수형 프로그래밍을 사용해 볼 수 있었다.
    그러나 여전히 뭔가가 빠진 느낌이 들었다. 나는 도미노 효과처럼 어떤 값의 변경값을 전달하는 데이터와 이벤트를 발생시키는 이벤트의 개념에 매료됐다. 그리고 자바 8의 스트림과 같이 유창하고 함수형 방식으로 이벤트를 모델링할 수 있는 방법이 없을까 하고 고민했다. 언젠가 이런 생각을 밝혔을 때 누군가가 리액티브 프로그래밍을 소개해줬다. 그 당시 살펴봤던 것은 RxJava 옵저버블이었는데, 언뜻 보기에는 자바 8의 스트림과 매우 흡사해 보였다. 두 가지는 비슷하게 보였지만 옵저버블은 데이터뿐만 아니라 이벤트도 푸시한다. 그 순간, 나는 찾고 있던 것을 정확히 발견할 수 있었다.
    나뿐만 아니라 많은 사람에게 RxJava 습득의 장애물이 되는 것은 문서가 부족하다는 것이다. 나는 종종 실험적인 질문을 스택 오버플로에 남겼으며, 깃허브(GitHub)에서 모르는 이슈에 대해 철저히 살펴봤다. 회사에서 마주치는 문제에 RxJava를 사용해보면서 병렬화 및 동시성과 같은 주제에 대한 생각을 공유하는 여러 블로그 글을 작성했다. 놀랍게도 이런 글은 트래픽을 폭발적으로 증가시켰다. 이러한 주제에 대해 다루는 곳이 드물었기 때문에 이런 반응은 놀랄 만한 일이 아니었다. 나의 두 번째 저서 출간과 관련해 Packt에서 연락이 왔을 때, 다른 많은 업무가 있었음에도 그 기회를 받아들였다. 어쩌면 RxJava의 문서화 문제를 이 책으로 한 번에 해결할 수 있을지도 모른다. 이 책은 모든 기본 개념과 유스 케이스, 유용한 트릭 및 '깨달음'을 제공할 것이며, 이를 통해 RxJava가 더 이상 고급 주제에만 머물러 있지 않게 한다. 나는 RxJava가 어려운 문제든 쉬운 문제든 효과적으로 쉽게 해결할 수 있게 해주기 때문에 모든 기술 수준의 전문 개발자가 접근할 수 있어야 한다고 생각한다. 조금 더 추상적인 이해를 필요로 할 수도 있지만, 즉각적인 생산성 향상은 이 작은 장애물을 가치 있게 해준다.
    내가 아는 한 이 책은 최초로 RxJava 2.0을 다루고 있으며, 2.0은 RxJava 1.0과 많은 차이점이 있다. 지금 여러분이 읽고 있는 이 책은 내가 원했던 포괄적이고 단계적인 가이드를 제공한다. 핵심을 생략하거나 충분한 설명 없이 코드를 제시하지 않으려고 노력했다. 여러분이 RxJava의 가치를 빨리 발견하고 그것을 적용하기 위한 시도가 성공적이기를 빈다.
    ('지은이의 말' 중에서)

    자바 개발자에게 널리 알려진 [리팩토링](한빛미디어, 2012)을 저술한 마틴 파울러가 수석 과학자로 근무하고 있는 ThoughtWorks에서는 새로운 기술이 IT 업계에 미칠 영향을 매년 분석하고 있다. RxJava의 근간이 되는 ReactiveX는 2017년 'Adopt' 판정을 받았는데, 이는 업계에서 사용을 권장하며 프로젝트에서 사용하고 있다는 뜻으로 '적극 권장' 정도로 볼 수 있다(https-//www.thoughtworks.com/radar/languages-and-frameworks/reactivex). 이 책에서 다루는 RxJava가 아니더라도 리액티브 프로그래밍은 분명히 배워둘 가치가 있는 영역이며, 더 많은 서비스나 라이브러리 등에서 사용될 것임이 분명하다. 하지만 프로젝트에 도입하려 해도 역시 리액티브 프로그래밍은 쉽지 않은 주제이다.
    개인적으로는 리액티브 스타일의 프로그래밍에 익숙해지는 데 1년 정도가 소요됐다. 이제는 대략 에러 로그만 봐도 어디가 문제이고 무엇이 빠졌는지 신속히 판단할 수 있다. 하지만 리액티브 프로그래밍은 프로그래밍에 대한 접근 방식 자체의 변화가 필요하기 때문에 여전히 쉽지 않다. 초기에는 기존과 동일한 방법으로 문제를 처리하다가 여러 가지 크고 작은 실수가 있었다. 아마 여러분도 도입 결정 후 실제로 프로젝트를 진행하다가 많은 문제와 마주칠 것이다. 이때 옆에 든든한 멘토가 있다면 얼마나 다행일까? 하지만 소프트웨어 영역에서의 일반적인 멘토십은 스스로 깨우침(self-taught)을 얻을 수 있도록 도와주는 방식이 대부분이다. 그렇기 때문에 독자들이 문제에 직면했을 때 이 책이 많은 도움이 될 것이다. 공식 문서는 초보자가 쉽게 이해할 수 있도록 작성되지 않았다. 이 책은 RxJava를 좀 더 쉽게 시작하는 데 도움을 줄 것이다.
    대부분의 역서는 번역이 끝나기가 무섭게 기억에서 빠르게 잊혀져 아쉬웠다. 그러던 참에 2019년 한 해에만 두 개의 리액티브 프로그래밍 책을 번역하게 되어 내심 반가웠다. 개인적으로 공부하던 주제이고, 때마침 새로운 증권 서비스에 도입하려고 하던 시점이어서 더욱 반가웠다.
    더 많은 개발자가 리액티브 프로그래밍의 장점을 이해하고 사용자가 늘어나, 보다 개선됐으면 하는 기대를 담아 본다.
    ('옮긴이의 말' 중에서)

    저자소개

    토마스 닐드(Thomas Nield) [저] 신작알림 SMS신청 작가DB보기
    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    사우스웨스트항공 스케줄 이니셔티브의 비즈니스 컨설턴트이자 RxJavaFX 및 RxKotlin의 메인테이너이다. 경력 초창기부터 기술과 비즈니스 분석에 대한 관심이 많았다. 자바, 코틀린, 파이썬, SQL 및 리액티브 프로그래밍에 익숙해진 뒤 O'Reilly의 저자이자 연사가 됐으며, 오픈소스의 컨트리뷰터도 겸하고 있다. 배운 것을 공유하고 새로운 기술을 다른 사람에게 전파하는 데 열정을 쏟는다. 그리고 일반적으로 친숙하지 않거나 두려워하는 것에 한결 더 쉽게 다가가도록 만드는 일을 즐긴다. 현재 가장 관심 있는 분야는 데이터 과학, 리액티브 프로그래밍, 코틀린 언

    펼쳐보기
    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    라인에서 근무 중인 소프트웨어 엔지니어다. 자바, 스프링, 자바스크립트, 파이썬, 객체지향 TDD, DDD에 큰 관심을 갖고 웹 서비스를 개발하고 있다. 개발자 문화를 사랑하고 세상에 영향을 줄 수 있는 무엇인가를 만들어 내기 위해 노력한다.

    이 상품의 시리즈

    프로그래밍 언어 시리즈(총 26권 / 현재구매 가능도서 25권)

    펼쳐보기

    이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

      리뷰

      0.0 (총 0건)

      구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

      리뷰쓰기

      기대평

      작성시 유의사항

      평점
      0/200자
      등록하기

      기대평

      0.0

      교환/환불

      교환/환불 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

      교환/환불 가능 기간

      고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

      교환/환불 비용

      고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

      교환/환불 불가사유

      반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
      배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

      소비자 피해보상

      소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
      교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

      기타

      도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

      배송안내

      • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

      • 배송비

      도서(중고도서 포함) 구매

      2,000원 (1만원이상 구매 시 무료배송)

      음반/DVD/잡지/만화 구매

      2,000원 (2만원이상 구매 시 무료배송)

      도서와 음반/DVD/잡지/만화/
      중고직배송상품을 함께 구매

      2,000원 (1만원이상 구매 시 무료배송)

      업체직접배송상품 구매

      업체별 상이한 배송비 적용