Avatar 창조적이고 생산적이고 싶은 개발자

#1 RxJava를 활용한 리액티브 프로그래밍

프로젝트 구성 및 maven 혹은 gradle에 대한 설정은 과감히 생략하도록 한다.
이미 다 알거라도 생각함.

RxJava 의존성 추가

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.25'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'io.reactivex.rxjava2:rxjava:2.2.8'
}

Hello World 출력하기

import io.reactivex.Observable;

public class FirstExample {

    private void emit() {
        Observable.just("Hello", "RxJava 2!!")
                .subscribe(System.out::println);
    }
    public static void main(String[] a) {
        FirstExample demo = new FirstExample();
        demo.emit();
    }
}

각 항목에 대한 설명

Observable

  • 데이터의 변화가 발생하는 데이터 소스를 의미합니다.
  • Observer들이 구독하는 대상이고 Observer에게 데이터를 발행해주는 역할을 한다고 생각하고 넘어가셔도 됩니다(앞으로 계속해서 Observable에 대한 내용을 설명할 예정입니다.)

just()

  • Observable의 선언 방식으로 변경없이 발행된 데이터를 그대로 구독자에게 전달한다고 생각하시면 됩니다.(자세한 내용은 나중에 올라올 포스팅을 참고해주세요)
  • 위 예제에서는 데이터 소스에서 ‘Hello’와 ‘RxJava 2!!’의 2개의 데이터를 발행하게 됩니다.
  • Generic에 명시된 타입에 맞는 데이터를 인자로 넣을 수 있습니다.

subscribe()

  • Observable에 구독자를 등록하는 함수입니다.
  • 일반적인 Observer pattern에서의 subscribe와 동일하다고 생각하면 됩니다
  • 데이터를 수신 할 구독자가 함수를 호출하게되면 Observable에서 데이터가 발행합니다

System.out::println

  • 수신한 데이터를 출력하도록 메소드 레퍼런스를 인자로 제공해 줍니다.
    • 혹시나 jdk8부터 지원하는 method reference를 잘모르신다면 링크를 참고해보세요

정리

자세한 설명을 하기에 앞서 우선 Hello world부터 작성하는 걸 목적으로 포스팅을 작성했습니다.
다음 포스팅에서는 Marble diagram을 읽는 방법에 대해서 알아보면서 본격적인 Reactive programming에 대해서 알아보겠습니다.