1.1 리액티브 프로그래밍
- 데이터 흐름을 먼저 정의하고 데이터가 변경되었 때 연관되는 함수나 수식이 업데이트 되는 방식
- 일종의 옵저버 패턴
- 엑셀 수식으로 생각 하면 좋음
- 연 매출액 = 1월 매출 + 2월 매출 + 3월 출 에서 2월 매출이 변경 되었다고 가정
- 명령형 프로그래밍은 변경이 발생했다는 통지를 받아서 연말 매출액을 새로 계산해서 당겨오는 pull방식
- 리액티브 프로그래밍은 데이터 소스가 변경된 데이터를 밀어주는 push방식
1.1.2 리액티브 프로그래밍 개념 잡기
- 컴퓨터 프로그램에서는 크게 세 가지 종류가 있음
1. 변환 프로그램으로 주어진 입력값을 바탕으로 겨로가를 계산하는 프로그램
2. 상호 작용 프로그램으로 프로그램이 주도하는 속도로 사용자 혹은 다른 프로그램과 상호작용
3. 리액티브 프로그램은 주변의 환경과 끊임없는 상호 작용을 함
프로그램이 주도하는 것이 아니라 환경이 변하면 이벤트를 받아 동작
상호 작용 프로그램 - 자신의 속도에 맞춰서 일하고 대부분 통신을 담당
리액티브 프로그램 - 외부 요구에 반응에 맞춰 일하고 대부분 정확한 인터럽트 처리 담당
RxJava : 리액티브 프로그래밍을 할수 있게 해주는 JVM위에서 동작하게 하는 자바 라이브러리
.NET에서는 리액티브 확장 이라고 함.
1.1.3 Hello RxJava
디펜던시 설정
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile 'org.slf4j:slf4j-api:1.7.25'
compile 'io.reactivex.rxjava2:rxjava:2.1.3'
}
intellij에서 처음 그래들 프로젝트를 생성하면 repositories에 mavenCentral만 설정되어잇어서 오류 남
그래서 jcenter()를 추가해 줘서 오류 해결
public class FirstExample {
public void emit() {
Observable.just("Hello", "RxJava2!!").subscribe(System.out::println);
}
public static void main(String[] args) {
FirstExample demo = new FirstExample();
demo.emit();
}
}
실행 결과
Hello
RxJava2!!
Observable클래스
- 데이터의 변화가 발생하는 데이터 소스
- 개별적인 월간 매출액 데이터에 속함
just함수
- Hello와 RxJava2를 발행
subscribe함수
- Obserbvable 구독
- Observalbe은 subscribe함수를 호출해야 변화한 데이터를 구독자에게 발행
- 옵저버 패턴과 동일
참고 도서 : http://www.yes24.com/Product/Goods/45506284?scode=032&OzSrank=2
마블 다이어그램 :https://brunch.co.kr/@lonnie/20
jcenter에 대한 설명 : https://blackdroid.tistory.com/5