Page 15 -
P. 15

그래서 관련 단체들이 모여 데이터 스트림을 비동기로 다루는 최소한의 API를 정하고 제공했습니
                    다. 그리하여 2015년 4월 자바 기반의 Reactive Streams for JVM 버전 1.0.0을 릴리스하게 됩
                    니다.                                                                               1

                    RxJava 1.x 버전은 Reactive Streams가 만들어지기 전부터 있어서 Reactive Streams를 지원
                    하지 않았고, Reactive Streams를 지원하는 RxJava 2.0 버전은 2016년 10월에 릴리스됐습니                   RxJava의 기본
                    다. 2.0 버전은 기본 구조를 유지하면서도 내부를 완전히 새롭게 구현해 1.x 버전보다 성능이 개

                    선됐습니다. Reactive Streams가 RxJava의 영향을 강하게 받아서 근본적인 구조(데이터 스트
                    림 관리, 생산자와 소비자의 관계 등)는 1.x 버전과 큰 차이가 없으나 나중에 설명할 배압(back
                           4
                    pressure)  사양에 따라 사용하는 API가 변경됐습니다. 그러므로 1.x 버전에서 2.x 버전으로 전환
                    할 때는 단순하게 패키지나 클래스 이름을 바꾸는 것 외에도 이러한 API 변경 사항도 반영해야 합
                    니다. 또한, RxJava 2.x 버전은 내부 구현을 처음부터 다시 설계해 작업했기 때문에 RxJava 1.x
                    버전의 구현 코드를 RxJava 2.x 버전으로 간단히 전환할 수 없습니다.

                    그리고 2.x 버전부터는 Reactive Streams를 구현하므로 다른 라이브러리를 의존할 필요가 없던
                    1.x 버전과는 다르게 Reactive Streams의 jar 파일이 반드시 필요합니다.

                    그 외에도 1.x 버전과 2.x 버전은 표 1-1과 같이 루트 패키지가 다릅니다.

                       표 1-1 루트 패키지
                     버전          패키지
                     1.x         rx

                     2.x         io.reactivex


                    따라서 RxJava의 두 버전을 같은 프로젝트에 함께 사용할 수는 있으나 프로젝트 내부에서
                    RxJava에 의존하는 다른 라이브러리를 사용한다면 라이브러리가 어떤 버전을 지원하느냐에 따라

                    두 버전을 함께 사용하지 못할 수도 있습니다. 또한, 1.x에서 2.x 버전으로 업그레이드하는 도중
                    같은 일시적인 상황이 아니라면 운영과 유지보수를 생각했을 때 두 버전을 함께 사용하는 것은 바
                    람직하지 않습니다.

                    RxJava 1.x 버전 개발과 지원은 2018년 3월에 종료됐으므로 이 책에서는 2.x 버전을 다루겠습
                    니다.





                    4   역주  배압이란 정해진 임계값에 도달하면 이미 버퍼에 있는 요청의 내부 처리가 들어오는 요청을 따라잡을 때까지 버퍼에 넣는 것을 일시적으
                       로 정지하거나 막는 것을 말합니다. 역압이라는 용어로 번역되기도 합니다.

                                                                                                  023





     RxJava 리액티브 프로그래밍(본문)최종.indd   23                                                      2019-03-26   오전 11:26:30
   10   11   12   13   14   15   16   17   18   19   20