이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
리액티브 안드로이드 프로그래밍
RxJava로 안드로이드 애플리케이션 제작하기
베스트
프로그래밍 언어 top100 6주
가격
30,000
10 27,000
YES포인트?
1,500원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

이 분야의 이벤트

에이콘- 모바일 프로그래밍 시리즈

상세 이미지

책소개

목차

1장. 첫 “Hello World” RxJava 애플리케이션 만들기
애플리케이션 생성
디펜던시
최초의 사용자 인터페이스
레트로람다 사용
요약


2장. 기본 RxJava의 이해
옵저버블
핫 그리고 콜드 옵저버블
디스포저블
스케줄러
스케줄링 예제
옵저버블의 흐름 조사
플로어블
아이템 버리기
마지막 아이템 유지하기
버퍼링
컴플리터블, 싱글, 메이비 타입
컴플리터블
싱글
메이비
요약


3장. 주식 데이터를 가져오면서 레트로핏 사용법 배우기
레트로핏 설정
HTTP 요청
서비스 인터페이스
서비스 팩토리
서비스 생성
요청 데이터 변환
JSON 분석
데이터 불러오기
JSON 값 객체 변환
UI에 데이터 표현하기
주기적인 업데이트
UI에서 여러 레코드 처리
요약


4장. RxJava 1.0을 RxJava 2.0과 통합하기
버전 간 차이점
디펜던시 및 패키지 이름
함수형 인터페이스
플로어블
다른 RxJava 버전 통합
설정
RxJava 1.0 옵저버블 변환
요약


5장. SQLite와 스케줄러에 데이터 작성하기
스케줄러
스케줄러 타입
스케줄러 사용
병렬 처리 달성
StorIO를 이용한 데이터 입력
StorIO 설정
StorIO 구성
데이터 저장 흐름
요약


6장. 에러 핸들링과 SQLite 데이터 읽기
RxJava의 예외 처리
subscribe() 사용
onExceptionResumeNext() 사용
doOnError() 사용
기타 오류 처리 방법
안드로이드 UI의 오류 표시
중앙 집중식 에러 로깅
StorIO로 SQLite 데이터 읽기
리졸버 얻기
StockUpdate 항목에 대한 오프라인 대체
사용자에게 오류에 대해 알리기
누락된 삭제 리졸버
요약


7장. RxJava와 액티비티 생명 주기의 통합
안드로이드 생명 주기
생명 주기 검토
액티비티 설정
onCreate() 호출에 대해 알아야 할 사항
리소스 누수
메모리 누수
옵저버블 누수
구독 정리
디스포저블 사용
RxLifecycle 라이브러리 활용


8장. 커스텀 옵저버블 작성
커스텀 옵저버블을 만드는 방법
표준 Java API와의 통합
이미터 API와 통합
리액티브 방식으로 주식에 대한 트윗 읽기
설정
트위터를 위한 커스텀 옵저버블
UI에 트윗 표시
값 객체 업데이트
레이아웃 업데이트
기타 개선 사항
요약


9장. 고급 옵저버블 흐름 설명
옵저버블 벗기기
맵을 이용해 값 변환하기
FlatMap 옵저버블
값 전달
튜플
커스텀 클래스
업데이트된 흐름
아이템 결합
ZIP
최신 항목 결합
스트림 연결하기
필터링
주식 어댑터 청소
트윗 필터링
요약


10장. 고차원 추상화
메소드로 코드 추출
조건을 명시적으로 만들기
컨슈머 추출
FlatMap 추출
팩토리 메소드의 작성
변환 사용하기
정규 코드 추출
변환으로 코드 단순화
변환 클래스 생성
파일 기반 캐싱 예제
변환을 사용해 실행 시간 추적하기
옵저버블을 디버깅하기 위해 변환 사용하기
요약


11장. 서브젝트의 기본과 환경 설정 저장
서브젝트
PublishSubject
BehaviorSubject
ReplaySubject
AsyncSubject
애플리케이션에서 서브젝트 사용
RxPreferences 사용
설정에 서브젝트 연결
설정 액티비티 생성
흐름 업데이트
요약


12장. 구슬 다이어그램 읽는 법
구슬 다이어그램의 핵심 요소
다이어그램의 요소
RxMarbles 도구
연산자 분석
Map
FlatMap
onExceptionResumeNext()
GroupBy
SubscribeOn과 ObserveOn
BehaviorSubject
요약

저자 소개 2

타다스 수보니스

관심작가 알림신청
 
열세 살 때 코딩을 시작했다. 그 후 PHP, 자바스크립트, 파이썬, C++, Java로 프로그래밍했다. 비교적 최근인 2014년에는 안드로이드를 사용했다. 그러나 자바스크립트와 같이 더 부주의한 언어는 오랫동안 프라미스(Promise)가 있었지만 안드로이드는 비동기 프로그래밍에 대한 적절한 지원이 부족하다는 것을 알게 됐다. 게다가 자바의 표준 라이브러리는 함수형 프로그래밍 요소(map, filter)에 대한 지원이 부족했지만 구아바(Guava)와 같은 라이브러리로 쉽게 수정할 수 있었다. 이런 이유로 프라미스와 같은 기능과 인터페이스를 얻는 데 도움되는 라이브러리를 검색했
열세 살 때 코딩을 시작했다. 그 후 PHP, 자바스크립트, 파이썬, C++, Java로 프로그래밍했다. 비교적 최근인 2014년에는 안드로이드를 사용했다.
그러나 자바스크립트와 같이 더 부주의한 언어는 오랫동안 프라미스(Promise)가 있었지만 안드로이드는 비동기 프로그래밍에 대한 적절한 지원이 부족하다는 것을 알게 됐다. 게다가 자바의 표준 라이브러리는 함수형 프로그래밍 요소(map, filter)에 대한 지원이 부족했지만 구아바(Guava)와 같은 라이브러리로 쉽게 수정할 수 있었다.
이런 이유로 프라미스와 같은 기능과 인터페이스를 얻는 데 도움되는 라이브러리를 검색했다. 리액티브 방식으로 스트림을 처리하는 ReactiveX와 그 구현 제품군(RxJava 포함)을 발견하기까지 오래 걸리지 않았다. 이는 정확히 프라미스 같은 시스템 흐름은 아니었지만, 더욱 강력한 것임을 곧 깨달았다. 이후 일상적인 안드로이드 프로그래밍에 RxJava와 RxKotlin를 사용하고 있다.
전자공학을 전공했지만 소프트웨어에 대한 호기심이 많다. 대학 시절 프리랜서로 공공기관과 기업 SI를 통해 실무 경험을 쌓았다. 디자인에도 관심이 많아 웹 디자이너 생활도 했으며, 중소기업청 예비기술창업 중점 과제에 선정돼 ‘모바일 광고 플랫폼’ 스타트업 대표로 활동했다. 이후 삼성 SDS 연구소를 거쳐 지금은 LGU+ 빅데이터 담당에서 데이터엔지니어로 근무 중이다. 모든 것은 하나로 통한다는 신념으로 다양한 경험을 즐기며, 언젠가 올 그날을 위해 항상 준비하고 공부하는 중이다. 에이콘출판사에서 출간한 『리액티브 안드로이드 프로그래밍』(2018), 『MariaDB 성능 분석과 최적
전자공학을 전공했지만 소프트웨어에 대한 호기심이 많다. 대학 시절 프리랜서로 공공기관과 기업 SI를 통해 실무 경험을 쌓았다. 디자인에도 관심이 많아 웹 디자이너 생활도 했으며, 중소기업청 예비기술창업 중점 과제에 선정돼 ‘모바일 광고 플랫폼’ 스타트업 대표로 활동했다. 이후 삼성 SDS 연구소를 거쳐 지금은 LGU+ 빅데이터 담당에서 데이터엔지니어로 근무 중이다. 모든 것은 하나로 통한다는 신념으로 다양한 경험을 즐기며, 언젠가 올 그날을 위해 항상 준비하고 공부하는 중이다. 에이콘출판사에서 출간한 『리액티브 안드로이드 프로그래밍』(2018), 『MariaDB 성능 분석과 최적화』(2015), 『반응형 안드로이드 앱 UI 개발』(2015)을 번역했다.

품목정보

발행일
2018년 09월 21일
쪽수, 무게, 크기
328쪽 | 758g | 188*235*19mm
ISBN13
9791161752105
크기.체중의 한계
상세 설명 참조

줄거리

1장, ‘첫 “Hello World” RxJava 애플리케이션 만들기’에서는 RxJava의 초기 설정에 대해 간단히 다룰것이다. 아주 간단할지라도 리액티브 방식의 첫 번째 “Hello World” 메시지를 생성하는 데 사용한다. 이를 위해 RxJava 의존성과 레트로람다(Retrolambda)를 설정해 애플리케이션이 Java 8에서 람다lambda를 지원하도록 한다.
2장, ‘기본 RxJava의 이해’에서는 RxJava의 핵심 요소를 설명한다. 옵저버블, 구독자(Subscriber), 플로어블(Flowable) 등이 무엇인지 배운다. 이 기본 빌딩 블록은 이 책에서 광범위하게 사용한다.
3장, ‘주식 데이터를 가져오면서 레트로핏 사용법 배우기’에서는 인터넷 연결에 의존하지 않는 현대애플리케이션은 거의 없음을 이해한다. 가장 인기 있는 레트로핏 라이브러리를 사용해 HTTP 요청을 수행하는 방법과 데이터 처리의 기본 원리를 학습한다. 이 모든 작업은 원격 주식 시세 데이터를 가져와 UI에 표시하는 동안 수행한다.
4장, ‘RxJava 1.0과 RxJava 2.0의 통합’에서는 RxJava 2.0이 최근에 나온 것과 많은 라이브러리가 아직 RxJava 1.0에서만 사용할 수 있음을 설명한다. 여기서는 서로 다른 버전의 RxJava 연결 방법을 배운다.
5장, ‘SQLite에 데이터 쓰기와 스케줄러’에서는 데이터 저장에 가장 많이 사용되는 SQLite 데이터베이스를 이야기한다. RxJava를 사용하면 StorIO와 같은 라이브러리를 사용해 상호작용을 리액티브로 만들 수 있다. 추가로 개발자가 실제 계산이 실행되는 위치를 변경할 수 있도록 스케줄러를 다룬다.
6장, ‘오류 처리와 SQLite 데이터 읽기’에서는 코드를 작성하는 동안 가장 중요한 측면 중 하나인 오류 처리를 설명한다. RxJava에서 오류 처리를 수행하는 다양한 방법을 배운다. 또한 StorIO를 사용해 이전에 SQLite에 저장된 주식 데이터 읽는 법을 배운다.
7장, ‘RxJava와 액티비티 생명 주기 통합’에서는 안드로이드와 RxJava의 매우 중요한 측면인 리소스 부족에 대해 배울 것이다. 여기서 액티비티 생명 주기를 자세히 살펴보고 생명 주기(Activity Lifecycle) 메소드를 RxJava에 연결할 방법을 모색해 메모리와 스레드 누수 방지법을 학습한다.
8장. ‘커스텀 옵저버블 작성’에서는 커스텀 옵저버블 생성을 살펴본다. 트위터 업데이트의 끝없는 스트림을 소비하기 위해 커스텀 옵저버블을 만들어 이 작업을 수행한다. 이러한 업데이트는 기존 주식 시세 데이터 흐름에 통합돼 UI에 표시된다.
9장, ‘고급 옵저버블 흐름’에서는 RxJava에서 사용할 수 있는 여러 연산을 학습한다. .zip()과 .flatMap() 연산자의 작동 방식과 사용 방법을 알아본다. 또한 .groupBy() 및 .switchMap()과 같은 고급 연산자도 살펴볼 것이다.
10장, ‘고차원 추상화’에서는 코드가 쉽게 복잡해지기 때문에 리팩토링에 익숙해져서 코드를 단순화하고 불필요한 세부 사항을 추상화하는 데 매우 유용하도록 설명한다. 여기서 메소드 추출과 정적 메소드 팩토리, 기타 방법을 통해 고차원 추상화 달성에 도움되는 방법을 학습한다.
11장, ‘서브젝트의 기본과 환경 설정’에서는 저장 데이터 프로듀서(producer)와 컨슈머(consumer)처럼 동작하는 편리한 도구로 서브젝트(subject)를 다룬다. 서브젝트가 어떻게 작동하는지 배우게 될 것이고, 다른 유형의 서브젝트를 다룰 것이다. 11장 이후로 다양한 서브젝트 유형을 사용할 수 있고 어떤 사례가 적합한지 알 수 있다.
12장, ‘구슬 다이어그램 읽는 법’에서는 구슬 다이어그램의 예를 탐구하고 설명한다. 거의 모든 작업이 구슬 다이어그램으로 설명되므로 구슬 다이어그램과 이를 읽는 방법에 대한 지식은 RxJava 공식 문서를 읽으려 할 때 특히 유용할 것이다.

출판사 리뷰

안드로이드에 코드를 작성하기는 어렵다. 동시 작업과 병렬 작업을 포함한 고품질 코드를 작성하는 것은 더욱 어렵다. 이 코드가 예기치 않은 경합 조건(race condition) 없이 최고 성능으로 실행되도록 하려면 더 힘들다. 특히 오늘날처럼 대다수 애플리케이션(서버 또는 클라이언트)이 많은 원격 구성 요소와 모듈 또는 종속성과 상호작용할 때 특히 중요하다. 원격 작업이 실행되는 많은 경우(거의 모든 경우)에 프로그램은 I/O에서 대기하지 않고, 단지 응답을 기다리는 것보다 더 유용한 작업을 수행할 수 있도록 비동기로 작동해야 한다. 이 책에서 는 RxJava가 제공하는 다양한 도구를 초보 개발자에게 소개해 비동기 작업을 위한 강력하면서 고품질의 코드를 만들 수 있길 바란다. 이 작업은 높은 품질의 제품을 만들기 위해 고급 RxJava 기술을 이용할 비교적 간단한 애플리케이션을 만들면서 수행할 것이다. 먼저 1장, ‘첫 “Hello World” RxJava 애플리케이션 만들기’를 통해 안드로이드 환경에서 RxJava 초기 설정을 알아본다. 그 후 주식 데이터 처리와 표시를 시작하면서 RxJava 2.0을 단계별로 학습한다. 이와 함께 개발자는 적절한 스케줄러를 선택하고 원격 요청에 대해 레트로핏(Retrofit) 라이브러리를 사용하는 방법을 배운다. 8장, ‘커스텀 옵저버블 작성’에서 우리는 트위터의 스트리밍 데이터를 주식 데이터와 결합, 처리하기 위한 통합을 추가할 것이다. 이를 위해 커스텀 옵저버블과 flatMap 생성처럼 고급 RxJava 기술을 활용할 것이다.
그런 다음 커스텀 RxJava 옵저버블 작성법을 배우며 RxJava 코드를 이해하고 유지 보수하기 쉬운 방법을 모색한다. 끝으로 우리는 개발자가 RxJava 문서를 더 쉽게 이해할 수 있도록 구슬 다이어그램(marble diagram)에 대해 간략하게 설명할 것이다.
이 책을 읽은 후에 다양한 종류의 I/O 작업을 관리하거나 기능적 패러다임을 따르는 리액티브 방식의 일반적인 처리를 수행하기 위해 강력하고 재사용 가능하며 이해하기 쉬운 코드를 작성하도록 다양한 RxJava 기술을 쓸 수 있게 된다.

안드로이드 개발은 예전보다 참고할 도서와 자료가 많다. 그만큼 대중화됐고 개발자 누구나 개발하기 쉬워졌다는 의미다. 그럼에도 불구하고 안드로이드 개발은 여전히 매력적인 분야이며 파급력이 강하기도 하다. 하지만 많은 소스가 초창기 안드로이드 코드를 기준으로 설명하고 있어 코드의 낭비나 효율성이 떨어지는 제품들이 존재한다. 안드로이드 기기와 모바일 환경이 다양화되면서 이미 검증된 오픈소스를 활용하거나 리액티브 같은 신기술을 활용하는 것이 개발을 더 빠르고 정확하게 할 수 있는 방법이 될 수 있다. 이 책에서는 간단한 예제를 따라 하면서 리액티브 프로그래밍을 익힐 수 있게 도와주고 있다 .
원서에서는 일부 예제에서 야후(Yahoo)의 API를 활용해 정보를 받아오도록 설명하고 있다. 하지만 현재 야후의 사정으로 해당 API 서비스는 종료됐다. 전체적인 이해의 흐름을 돕기 위해 해당 부분을 삭제하지 않고 그대로 번역했다. 걱정할 필요는 없다. 이 책의 학습 목적은 API 호출이 아닌 리액티브 안드로이드 프로그래밍이기 때문이다. 대부분의 API 호출 방식은 유사하며, 해당 개발자 사이트를 참고하면 쉽게 따라 할 수 있다. 수많은 API 제공 업체들은 야후와 같이 없어지기도 하고 호출 방식이 바뀌기도 한다는 점을 이해하고 제품의 유지 보수 관점에 대해서도 고민해보길 바란다.


리뷰/한줄평0

리뷰

첫번째 리뷰어가 되어주세요.

한줄평

첫번째 한줄평을 남겨주세요.