회사에서 프로젝트를 진행하며 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 과 필수 요소? 들에 대해 적어볼까부다!