RxJava란?

HEETAE HEO·2022년 6월 24일
0
post-thumbnail
post-custom-banner

RxJava

RxJava는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 구성하기 위한 라이브러리인 Reactive Extensions의 Java Vm 구현입니다.

데이터/이벤트의 시퀀스를 지원하도록 관찰자 패턴을 확장하고 낮은 수준의 스레딩, 동기화,스레드 안정성 및 동시 데이터 구조와 같은 문제를 추상화하면서 선언적으로 시퀀스를 함께 구성할 수있는 연산자를 추가합니다.

명령형 프로그래밍과 함수형 프로그래밍

둘의 차이점을 알아보겠습니다.

중심적 시각을보면 명령형 프로그래밍은 어떻게에 초점을 두고 함수형 프로그래밍은 무엇에 초점을 둔다

예시로 설명드리겠습니다.

다른 분이 블로그에서 사용하신 예제를 가져와 보겠습니다. 

명령형 프로그래밍의 경우

횡단보도까지 약 99m 이동(성남대로331번길) ,
횡단보도를 이용하여 경기성남분당경찰서 방면으로 횡단,
횡단보도까지 1개의 횡단보도를 지나 약 612m 이동,
횡단보도를 이용하여 메르세데스벤츠코리아더클래스효성분당전시장 방면으로 횡단,
네이버까지 약 50m 이동(불정로).

함수형 프로그래밍의 경우

출발: 정자역 주소는 경기도 성남시 분당구 성남대로 333,
도착: 네이버 주소는 경기도 성남시 분당구 불정로 6.

말 그대로 명령형은 이렇게 네이버 사옥에 간다에 초점을 두고
함수형은 출발지와 도착지의 주소를 입력하여 네비게이션을 이용한다에 초첨을 두고있습니다. 즉 매개변수를 넣어 사용한다라는 것이 정확할 것입니다.

간단하게 코드로 보여드린다면

return a+b+c // 명령형 프로그래밍 
return sum(a,b,c) // 함수형 프로그래밍

반응형 프로그래밍이란?

반응형 프로그래밍은 시간 순으로 들어오는 모든 데이터의 흐름을 스트림으로 처리하며, 하나의 데이터 흐름으로 변형되기도 하고 여러 데이터 흐름이 하나의 데이터 흐름으로 변경될 수 도 있습니다.

코드

public void reactiveProgramming() {

    PublishSubject<Integer> items = PublishSubject.create();
    
    items.onNext(1);
    items.onNext(2);
    items.onNext(3);
    items.onNext(4);

    items.filter(item -> item % 2 == 0)
            .subscribe(System.out::println);

    items.onNext(5);
    items.onNext(6);
    items.onNext(7);
    items.onNext(8);
}

//결과
//6
//8

publishSubject는 구독 시점 이후의 데이터만 옵저버에 전달되기 때문에 6,8만 출력됩니다.

reference

https://velog.io/@haero_kim/Android-대체-사람들이-RxJava-거리는-게-뭐야-Reactive-X-단-번에-이해하기

profile
Android 개발 잘하고 싶어요!!!
post-custom-banner

0개의 댓글