Reactive Programming/RxJava

Rx java 시작.

Machine_웅 2022. 12. 20. 14:04
728x90
반응형

https://github.com/ReactiveX/RxJava

 

GitHub - ReactiveX/RxJava: RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based p

RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. - GitHub - ReactiveX/RxJava: RxJava – Reactive E...

github.com

 

https://reactivex.io/documentation/operators

 

ReactiveX - Operators

Introduction Each language-specific implementation of ReactiveX implements a set of operators. Although there is much overlap between implementations, there are also some operators that are only implemented in certain implementations. Also, each implementa

reactivex.io

 

 

  • RxJava 는 ReactiveX(Reactive Extensions)를 Java로 구현한 라이브러리이다.
  • ReactiveX 는 관찰 가능한(Observable) 스트림을 사용하는 비동기 프로그래밍을 위한 API이다.
    (공홈 헤드 문구이다. - An API for asynchronous programming with observable streams.)
  • Reactive Programming 은 데이터 흐름과 변화의 전파와 관련있는 선언적 프로그래밍 패러다임이다.
    (위키백과 출처라 그런지 설명이 너무 어렵다. - Reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change)

 

RxJava도, 상위 개념들도 모두 한 문장으로 정의내리기엔 개념이 어렵다. 반응형 프로그래밍이란 대체 무엇이길래 ReactiveX와 RxJava, RxAndroid 등을 만드는 배경이 되었을까.

반응형 프로그래밍(Reactive Programming) 를 다시 말해보면 주변 환경과 끊임없이 상호 작용을 하는 프로그래밍 을 의미한다. 환경이 변화면 이벤트를 받아 동작하도록 만드는 프로그래밍 기법이다. 그럼 기존에는 주변 환경과 상호 작용을 하지 않았을까? 여기 간단한 예시가 있다.

기존의 명령형 프로그래밍에서는 a=b+c 에서 a는 b+c의 연산이 끝난 이후에 그 결과를 통해 값이 할당될 것이다. 만약 이후에 b나 c의 값이 변하더라도 a에는 영향을 주지 않기 때문에 문제가 생길 수 있다. 반면 리액티브 프로그래밍에서는 b나 c의 값이 변동되더라도 b+c 연산을 다시 할 필요 없이 자동으로 업데이트된다.

이제 반응형 프로그래밍에서는 데이터가 변하면 알아서 캐치해서 반영한다는 것은 알겠다. 하지만 구체적으로 어떻게 돌아가는 것인지 궁금해진다. 이에 대한 궁금증을 풀기 위해 명령형 프로그래밍 방식과의 차이를 조금 더 딮하게 비교해보자.

 

 

그래서, RxJava는?

다시 읽어보면 ‘관찰 가능한’ 스트림을 사용한다는 이야기가 조금은 이해가 간다. RxJava는 개발자들이 직면하는 문제들- 예를 들어 동시성 문제, 다중 이벤트 처리, 백그라운드 처리 등의 문제를 아름답게 해결할 수 있도록 도와준다. 안드로이드 개발의 경우 화면(UI)을 변경할 수 있는 것은 메인 쓰레드 뿐이기 때문에 비동기 처리를 하는 일이 빈번하다. Rx를 이용하면, 어렵고 실패 확률이 높았던 이런 작업들을 쉽게 할 수 있다. 또, 새로운 프로세스가 추가되어거나 삭제되어야 한다면 로직의 큰 변경 없이 간단히 수정할 수 있다.

 

안드로이드 프로젝트에 Rx 적용하기

안드로이드에 RxJava를 적용하려면 build.gradle에 추가해주어야 한다. 2020년 10월 11일 기준 RxAndroid는 3.0.0, RxJava는 3.0.7 버전이 최신 버전이다.

https://github.com/ReactiveX/RxJava

dependencies {
    implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
    implementation 'io.reactivex.rxjava3:rxjava:3.0.7'
}

 

 

https://blog.yena.io/studynote/2020/10/11/Android-RxJava(1).html 

 

[Android] RxJava 시작하기

RxJava, RxAndroid 시작하기 안드로이드 개발을 하다보면 언젠가는 RxJava와 만나게 된다. 이미 몇 년 전부터 많은 프론트 개발자들이 사랑사용해 온 라이브러리이기 때문이다. 현재 회사 프로젝트에

blog.yena.io

 

 

반드시 읽어볼것

https://12bme.tistory.com/570

 

[RxJava] RxJava 프로그래밍(1) - 리액티브 프로그래밍

서버 다수와 통신하게 되면 API 호출 각각에 콜백을 추가하게 된다. 콜백이 늘어나면 애플리케이션의 복잡성도 증가(callback hell)하게 된다. RxJava는 자바로 리액티브 프로그래밍을 할 수 있는 라이

12bme.tistory.com

 

728x90
반응형