Page 16 -
P. 16

그리고 개발 중이거나 실험적인 RxJava API가 있습니다. 이러한 API는 릴리스 시 변경될 가능성
               이 크므로 이러한 API에 의존하지 않고 프로그램을 구현하는 것이 안전합니다. 다음과 같은 애너
               테이션(annotation)이 붙어 있는 것은 개발 중이거나 실험적인 API입니다.


                 ●   @Beta
                 ●   @Experimental

               추가로 io.reactivex.internal로 시작하는 패키지에 있는 클래스는 RxJava 내부에서 기본으로 사

               용하는 클래스입니다. 따라서 향후에 특정 기능을 지원하려고 변경될 가능성이 크므로 구현 시 이
               러한 클래스에 의존하지 않는 것이 안전합니다.




               1.1.4 RxJava의 특징


               RxJava는 디자인 패턴인 옵저버(Observer) 패턴을 잘 확장했습니다. 옵저버 패턴은 감시 대상 객

               체의 상태가 변하면 이를 관찰하는 객체에 알려주는 구조입니다. 이 패턴의 특징을 살리면 데이
               터를 생성하는 측과 데이터를 소비하는 측으로 나눌 수 있기 때문에 쉽게 데이터 스트림을 처리할
               수 있습니다. 게다가 RxJava는 옵저버 패턴에 완료와 에러 통지를 할 수 있어서 모든 데이터 통지
               가 끝나거나 에러가 발생하는 시점에 별도로 대응할 수도 있습니다. 옵저버 패턴은 ‘3.1 RxJava와
               디자인 패턴’에서 자세히 설명합니다.

               RxJava의 또 다른 특징으로 쉬운 비동기 처리를 들 수 있습니다. Reactive Streams 규칙의 근간

               이 되는 Observable 규약이라는 RxJava 개발 가이드라인을 따른 구현이라면 직접 스레드(thread)
               를 관리하는 번거로움에서 해방될 뿐만 아니라 구현도 간단하게 할 수 있습니다. 또한, 동기 처리
               나 비동기 처리나 구현 방법에 큰 차이가 없는 것도 RxJava의 특징입니다.

               그리고 RxJava는 함수형 프로그래밍의 영향을 받아 함수형 인터페이스를 인자로 전달받는 메서
               드를 사용해 대부분의 처리를 구현합니다. 이는 입력과 결과만 정해져 있다면 구체적인 처리는 개
               발자에게 맡길 수 있으므로 더욱 자유로운 구현이 가능함을 의미합니다. 또한, ‘1.3.2 연산자’에서

               자세히 설명하는 함수형 프로그래밍의 원칙을 따르면 처리 작업의 영향 범위를 좁힐 수 있고 동시
               에 복잡하지 않게 비동기 처리를 할 수 있습니다.









         024





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