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
   5   6   7   8   9   10   11   12   13   14   15