RxJava 개념 알아보기

Ddudduu·2021년 12월 13일
0

회사에서 프로젝트를 진행하며 RxJava 를 처음 사용해봤는데,
프로젝트가 워낙 후루루루룩 진행되다 보니 뭐가 뭔지도 모르고 써보기만 했다.
제대로! 알아보고자 글로 남겨놓으려 한다.


RxJava 란?

  • Rx = Reactive Extension 의 줄임말이다.
  • RxJava = Reactive Extensions 의 Java VM 구현! (Java 로 구현했다~)

Reactive X (Reactive Extensions)

  • ReactiveX 홈페이지에서는 다음과 같이 설명한다.

ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences.

뭔 말인고.. 하니!

  • 비동기 처리와 observable 시퀀스를 활용한 event 기반 프로그램을 위한 라이브러리!
    (observable 은 나중에 아라보자..)
  • Reactive Programming 을 가능하게 도와주는 라이브러리, tool 정도로 생각하면 될 것 같다.
  • Java 에서 Reactive Programming 을 도와주는 라이브러리는 RxJava, Swift 에서 쓰는 건 RxSwift, JavaScript 에서 쓰는건 RxJs 등등등
    언어마다 라이브러리가 존재하는 식인듯!

비동기 처리❓❔

프로그래밍을 하다보면 비동기 동기 어쩌고저쩌고를 정말 많이 듣는데..! 이건 또 대체 무엇인가
ARABOZA

  • 동기 : A 작업이 완료 되어야 ▶️ B 작업이 수행된다.
  • 비동기 : A 작업 도중에도 B 작업이 수행될 수 있다.
    (= 끝날 때 까지 안 기다려도 됨!)
  • 비동기 처리가 필요한 이유❓
    ex) 서버에 데이터를 요청해, 화면에 보여주는 경우! 서버가 응답하기까지 시간이 오래 걸릴 수 있음.
    비동기 처리를 활용하면 응답할 때 까지 기다리지 않고 다른 작업을 수행할 수 있다!
    서버가 대답할때까지 기다렸다가 .. 언제 처리할래?
    => 네트워크 연결과 같이 오래 걸리는 작업에 적합!


그래서...

Reactive Programming 은??

꼬리에 꼬리를 물게되는 질문들.. 벗.. 꾹 참고 읽기 ...

  • Reactive = 반응형

  • Reactive Programming = 반응형 프로그래밍

  • 사용자가 버튼을 클릭하거나, 뭔가 입력하거나 화면 전환 등 변화에 반응할 수 있도록 하는 프로그래밍 방식이다. (데이터가 변경되면 어떻게 반응하고 처리할지 선언해 놓는 방식)

  • reactive Programming 소개서 를 보면

    Reactive programming is programming with asynchronous data streams.

Reactive Programming 은 비동기적 Data Stream 을 처리하는 프로그래밍이다.
라고 설명하고 있다.

데이터가 어떻게 변하고 어디로 이동하는 등, 이런 데이터의 흐름Data Stream 이라고 한다.

즉, Reactive Programming 은 데이터 변화, 이동을 관찰하며 비동기적으로 처리하는 방식이라고 정리할 수 있지 아늘까,,?
내맘대로 정리하기


  • 예시
    서버에서 업데이트 된 데이터를 가져와 화면에 다시 그려줘야 하는 경우를 생각해보자!

    원래대로라면,
    1) 서버에서 데이터 변경 2) 변경된 데이터 가져오기 3) UI 에 데이터 반영
    의 과정으로 해야 될 것이다.

    벗! Reactive Programming 을 활용하면 변경된 데이터를 관찰 (observe) 하기 때문에 알아서 업데이트된다.

    꼭 서버에서 받아오는 게 아니더라도, 값이 변경되면 이를 관찰하고 있다가 화면에 업데이트 해준다.


개념은 대강 이정도로 마무리하고, 다음에는 Marble Diagram 과 필수 요소? 들에 대해 적어볼까부다!

profile
Android

0개의 댓글