Reactive Programing 이란?

최윤성·2022년 3월 28일
0

컴퓨터 프로그램의 종류

  • 주어진 입력값을 바탕으로 결과를 계산하는 변환 프로그램

  • 상호작용 프로그램으로 프로그램이 작업을 주도하며 사용자 혹은 다른 프로그램과 상호작용

  • 리액티브 프로그램은 프로그램 자신의 주변환경과 끊임없이 상호작용을 하는데 프로그램이
    주도하는것이 아닌 환경이 변하면 이벤트를 받아 동작

데이터 흐름과 전달에 관한 프로그래밍 패러다임.

왜 사용할까?

결론적으로는 UX 경험을 향상시키기 위하여!

앱에서 메인스레드가 멈추거나 느려지지 않도록 해야한다.

하지만 메인스레드를 자유롭게 핸들링 하면서 유지하려면 무겁고 시간이 오래걸리는

작업은 백그라운드에서 해야한다. 백그라운드에서도 무거우면 서버에서.

네트워크 운영을 위한 비동기작업!

비동기 작업은 AsyncTask로도 가능?

가능. 하지만 2019년 11월 8일 공식적으로 AsyncTask가 Deprecated 되었습니다.

서버로부터 데이터를 가져오는 길고 긴 백그라운드 작업이 문제.

네트워크작업의 시간이 길경우 비동기적으로 처리한다해도 UI 가 예기치못하게 문제가 생겨 존재하지않거나
에러가 발생하여 충돌 또는 버그가 발생할 수 있는 근본적인 문제가있다.

하지만 AsyncTask는 전체적인 프로세스를 단순화 하지만 안드로이드의 생명주기를 신경쓰지 않는다.
그래서, 앞서말한 UI에 대한 내용이 보호되지 않는 단점이 있다.

명령형 프로그래밍과 다르다?

작성된 코드가 정해진 순서대로 실행됨 - 명령형 프로그래밍

데이터 흐름을 먼저 정의하고 데이터가 변경되었을때 연관되는 함수나 메서드가 업데이트 - 리액티브 프로그래밍

그래서 RX가 나왔다.

대부분 ReactiveX를 사용. 즉 Rx종류들은 하나의 ReactiveX Extensions!
RxJava: Java(JVM)를 위한 ReactiveX ExtensionsReactive programming(리액티브 프로그래밍) 패러다임을 자바에서 구현한 프로그래밍 라이브러리

RxKotlin: Kotlin을 위한 ReactiveX ExtensionsRxJava 라이브러리를 기반으로 포팅하여 코틀린을 위한 리액티브 프로그래밍의 특정 부분을 함수형 프로그래밍으로써 구현한 라이브러리

RxAndroid: Android를 위한 ReactiveX ExtensionsRxJava에 최소한의 클래스를 추가하여 안드로이드 앱에서 리액티브 구성요소를 쉽고 간편하게 사용하게 만드는 라이브러리

RxSwift: Swift를 위한 ReactiveX Extensions
profile
웹과 앱을 사랑하는 남자

0개의 댓글