1.1 RxJava와 리액티브 프로그래밍
😉 : 개인 공부 정리용으로 설명이 친절하지 않습니다
- Reactive Streams: 어떤 라이브러리나 프레임워크라도 데이터 스트림을 비동기로 처리하는 공통 메커니즘을 인터페이스로 제공합니다.
- RxJava:
- 자바에서 리액티브 프로그래밍을 구현하는데 사용하는 라이브러리로 2.0 버전부터 Reactive Streams 사양을 구현함
- 함수형 프로그래밍의 영향을 받아 함수형 인터페이스를 인자로 전달받는 메서드가 많음
- 기본 처리 방식 : 데이터를 통지하는 생산자를 생성하고 통지한 데이터를 소비자가 받아 처리하는 방식
- 데이터 스트림 : 데이터가 생성될 때마다 순서대로 보내는 데이터 흐름을 말함. 앞으로 발생할 가능성이 있는 데이터까지도 포함하는 데이터 집합체
- 리액티브 프로그래밍
- 데이터 스트림을 통해 전달받은 데이터를 받은 시점에 반응해 이를 처리하는 프로그램을 만드는 것
- 데이터를 생산하는 측이 데이터를 전달하는 것까지만 책임지고, 데이터를 소비하는 측이 전달받은 데이터로 무엇을 하는지는 몰라도 됨 → 따라서 소비하는 측의 처리를 기다릴 필요가 없음
RxJava의 특징
- 옵저버 패턴을 확장한 내용
- 옵저버 패턴 : 감시 대상 객체의 상태가 변하면 이를 관찰하는 객체에게 알려주는 구조
- 이 패턴을 통해 데이터를 생성하는 측과 데이터를 소비하는 측으로 나눠서 데이터 스트림을 쉽게 처리할 수 있음
- 쉬운 비동기처리
- Observable 규약을 따른 구현이라면 직접 스레드를 관리할 필요가 없을 뿐만 아니라 구현도 쉬움
- 동기 처리나 비동기 처리나 구현 방법에 큰 차이가 없음
- 함수형 프로그래밍의 영향을 받음
- 함수형 인터페이스를 인자로 받는 메서드를 사용해 대부분의 처리를 구현함 → 입력과 결과만 정해져 있다면 구체적인 처리는 개발자에게 맡길 수 있으므로 더 자유롭다.