Rxjava란..?

h_hi·2021년 4월 22일
0

Rxjava

목록 보기
1/2

Rxjava란

Rxjava란 ReactiveX(Reactive Extensions)를 자바로 구현한 라이브러리입니다. 옵저버 패턴, 이터레이터 패턴, 함수형 프로그래밍의 장점과 개념을 접목한 반응형 프로그래밍 기법을 의미합니다. Rxjava는 이벤트 처리 및 비동기 처리의 구성에 최적화된 라이브러리입니다.

Rxjava 설정하기

Rxjava를 프로젝트에 설정하려면 모듈 레벨의 build.gradle 에 아래의 dependency를 추가합니다.

implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.7'

RxAndroid 는 Rxjava에 몇 가지 클래스를 추가해 안드로이드 개발을 쉽게 해주는 라이브러리입니다.

명령형 프로그래밍 vs 반응형 프로그래밍

명령형 프로그래밍(Imperative Programming)

명령형 프로그래밍은 작성된 코드가 순서대로 실행되는 방식의 프로그래밍입니다. 코드가 순서대로 실행되는 것은 개발자가 작성한 조건문, 반복문 또는 함수 호출 등에 의해 컴파일러가 다른 코드로 이동하는 것을 의미합니다.

반응형 프로그래밍(Reactive Programming)

반응형 프로그래밍이란 데이터의 흐름을 먼저 정의하고 데이터가 변경되었을 때, 연관되는 함수가 알아서 처리하는 것입니다. 즉, 프로그래머가 어떠한 기능을 직접 정해서 실행하는 것이 아닌, 시스템에 이벤트가 발생하였을 때 알아서 처리되는 것입니다.

기존의 명령형 방식을 pull 방식, 반응형 방식을 push 방식이라고도 합니다.
pull 방식은 데이터를 사용하는 곳(consumer) 에서 데이터를 직접 가져와 사용한다면, push 방식은 데이터의 변화가 발생한 곳에서 새로운 데이터를 consumer 에게 전달합니다.

Rxjava의 필요성

Rxjava는 동시성 문제, 다중 이벤트 처리, 백그라운드 스레드 처리 등에 대해 해결책을 제시합니다. 또한, 데이터들을 빠르게 처리하고 이와 동시에 데이터들을 병합, 필터링, 분할 및 변환 확장할 방법을 제시합니다. Rxjava는 기존에 작성한 비지니스 로직에 변경사항이 생겨도 큰 리팩토링 없이 쉽게 수정할 수 있습니다. 그러므로 Rxjava를 사용하면 프로덕션의 안정성을 유지하면서 애플리케이션을 전략적으로 진화시킬 수 있습니다.

마블 다이어그램

마블 다이어그램은 Rxjava에 대한 설명시 주로 사용됩니다. 데이터의 흐름을 시각화한 도표로 내용을 이해하는데 도움이 됩니다.
화살표는 타임라인을 의미하고, 화살표에 있는 막대는 데이터의 완료를 의미합니다. 가운데의 박스는 데이터의 변형을 의미하며, 아래의 화살표는 변형 결과의 타임라인 입니다. 엑스표는 에러를 나타냅니다.


Reference

옥수환, 아키텍처를 알아야 앱 개발이 보인다
http://reactivex.io/
[Herstroy] Rxjava 이해하기

profile
안드로이드, flutter 개발자

0개의 댓글