본문 바로가기

책정리/RxJava

리액티브 프로그래밍 소개 및 설정

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

 

RxJava 프로그래밍

8가지 핵심 개념으로 쉽게 이해하는 리액티브 프로그래밍 입문서버나 애플리케이션은 다양한 데이터를 처리하느라 늘 분주하다. 그런데 데이터양이 기하급수적으로 늘면서 기존의 프로그래밍 방식으로 이를 처리하기가 점점 어려워지고 있다. 이에 데이터의 입출력 흐름에 따라 많은 사용자 요청을 한꺼번에 그리고 동시에 처리하는 프로그래밍 기법을 연구하기 시작했고, ...

www.yes24.com

 

 

마블 다이어그램 :https://brunch.co.kr/@lonnie/20

 

RxJava, 마블 다이어그램

마블 다이어그램, Rx를 공부하면 필연적으로 마주하게 되는 도표다. 리액티브 세상에서 일어나는 모든 일들(비동기 데이터 흐름)은 마블 다이어그램으로 시각화된다. 따라서 이 도표를 익히는 것은 RxJava, RxSwift, RxJs, RxRuby 등 Rx의 다양한 포트들을 다루기 위한 첫걸음이라 할 수 있다. 이번 포스트에서는 마블 다이어그램에 대해서 살펴본

brunch.co.kr

 

jcenter에 대한 설명 : https://blackdroid.tistory.com/5

 

[안드로이드] Gradle(그래들)과 JCenter란

안드로이드 Gradle(그래들)과 JCenter 알아보기! 이번에는 프로젝트 하단의 안드로이드 gradle 이란? 안드로이드 jcenter ? 에 대해서 알아보겠습니다. 안녕하세요 블랙디입니다~! 지난 시간에는 프로젝트 상단의..

blackdroid.tistory.com