Page 10 -
P. 10
1.1 RxJava와 리액티브 프로그래밍 RxJava
RxJava와 리액티브 프로그래밍이 무엇인지 간단히 살펴보겠습니다.
1.1.1 RxJava란
1
RxJava는 자바(Java)에서 리액티브 프로그래밍(reactive programming) 을 구현하는 데 사용하는
라이브러리입니다. 이벤트 처리와 같은 비동기 처리에 최적화됐으며, 2.0 버전부터 Reactive
Streams 사양을 구현합니다. Reactive Streams는 어떤 라이브러리나 프레임워크라도 데이터 스
트림을 비동기로 처리하는 공통 메커니즘을 인터페이스로 제공합니다. 따라서 RxJava 2.0부터는
Reactive Streams API를 의존하고 Reactive Streams를 제외한 다른 라이브러리는 의존하지 않
습니다. 참고로, RxJava는 자바 6 버전 이상과 안드로이드 2.3 버전(gingerbread) 이상을 지원
합니다. Reactive Streams에 관한 자세한 내용은 ‘1.2.1 Reactive Streams란’에서 설명합니다.
2
RxJava는 엄밀히 말해 함수형 리액티브 프로그래밍(Functional Reactive Programming, FRP) 은 아니
지만, 함수형 프로그래밍의 영향을 받아 함수형 인터페이스를 인자로 전달받는 메서드가 많습니
다. 이러한 함수형 인터페이스를 사용하는 메서드들을 조합하면 함수형 프로그래밍을 하는 것처
럼 데이터를 필터링하거나 변환하는 등의 처리를 유연하게 할 수 있습니다.
먼저 RxJava를 사용한 간단한 예제를 살펴봅시다. 예제 1-1은 ‘Hello’와 ‘World’ 두 문자열을 순
서대로 통지하고 통지받은 데이터를 출력합니다.
예제 1-1 Hello와 World를 출력하는 예제 _ L01_HelloWorldSample.java
public static void main(String[] args) {
// 데이터를 통지하는 생산자를 생성한다
Flowable<String> flowable = Flowable.just("Hello", "World"); // 1
// 통지받은 데이터를 출력한다
flowable.subscribe(data -> System.out.println(data)); // 2
}
1 역주 반응형 프로그래밍이라고 번역해도 무리가 없으나 아직 국내에서는 보편화되지 않은 용어여서 ‘리액티브 프로그래밍’으로 사용합니다.
2 역주 함수형 리액티브 프로그래밍이란 시간이나 시스템 외부 입력에 응답하는 프로그램을 함수적으로 표현한 방법입니다. 즉, 시간에 따른 값
을 나타내는 데이터형이라고 정의할 수 있습니다(참고 URL: http://bit.ly/2FGD1Xh, https://wiki.haskell.org/FRP).
018
RxJava 리액티브 프로그래밍(본문)최종.indd 18 2019-03-26 오전 11:26:30