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