-
RxJava 프로그래밍Rxjava 2019. 4. 21. 19:11...더보기
본 글은 RxJava 프로그래밍을 공부하고, 공부한 내용을 정리하기 위해 작성한 글입니다.
참고한 책은 한빛 미디어의 RX Java 프로그래밍입니다.
- What is Reactive?
- 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식이 업데이트되는 방식.
본 다이어그램으로 보면
위에 있는 도형 - 데이터
flip - 함수
밑에 있는 도형 - 달라진 데이터
라고 필자는 이해하였다.
- 리액티브 프로그래밍은 변경된 데이터를 밀어주는 (push) 방식, 일종의 옵서버 패턴이라고 생각하면 된다.
( 필자는 push 방식과 옵서버 패턴이 무엇일까 궁금해서 찾아보았다.)- Observer Pattern이란?
- 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다.
- 주체자와 구독자의 관계 = 1 : N
(더 자세한 내용을 알고 싶으면 https://cloudstudying.kr/lectures/239에서
- Observer Pattern이란?
- Push 방식이란?
- 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 새로운 데이터를 보내주는 방식.
- 리액티브 같은 함수형 프로그래밍의 이점
Side Effect가 적다.( 멀티 스레드 환경에서도 안전하다.)
- RxJava를 만들게 된 이유
- 동시성
: 클라이언트의 요청을 처리할 때 다수의 스레드를 생성하고 그것의 결과를 취합하여 최종 리턴하는 방식이 필요함. - 조합
: Java 8에서 제공하는 CompletableFuture(작업이 완료될 때까지 기다렸다가 최종 결과를 얻음) 같은 클래스가 제공되지 않아서 비동기 흐름을 조합할 방법이 드물었다. - 콜백 지옥
: 콜백이 콜백을 부르는 방법의 개선이 필요함.
- 동시성
- 그래서 RxJava는 필터링(filter), 변환(map), 조합(reduce)을 이용해 위 3가지 이유를 해결하였다.
Ref)
* ReactiveX Flip 마블 다이어그램 - http://reactivex.io/documentation/observable.html
* Observer Pattern - https://cloudstudying.kr/lectures/239
LIST'Rxjava' 카테고리의 다른 글
[RxJava] RxJava 기본 구조 (0) 2019.05.17 - What is Reactive?