공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
페이스 북에서 생활코딩이라는 그룹에서 게시글들을 보던 중 우연히 RxJava 라는 것을
보게 되었고, 안드로이드를 개발하는 저에게 많은 도움이 될 거 같아서
RxJava 를 공부하기로 하였습니다. 열심히 공부하고 잘 정리해서
이 글을 보시는 분들께 많은 도움이 되도록 하겠습니다.
리액티브 프로그래밍
: 데이터의 흐름과 전달에 관한 프로그래밍 패러다임.
명령형 프로그래밍의 경우 주로 컴퓨터 하드웨어를 대상으로 하여
개발자가 작성한 코드가 정해진 절차에 따라 순차적으로 진행됩니다.
하지만 리액티브 프로그래밍의 경우는 데이터의 흐름을 먼저 정의하고
데이터가 변경되었을 때 연관되는 함수나 수식이 갱신되는 방식입니다.
엑셀처럼 수식을 미리 넣어놓고, 들어오는 데이터가 변경됨에 따라
수식에 대한 값들이 변경되는 것을 예로 들 수 있습니다.
자바 <-> 리액티브 프로그래밍의 관계
프러그래밍의 개념을 기존 PULL 방식에서 PUSH 방식으로 바꿈.
함수형 프로그래밍의 지원을 받음.
함수형 프로그래밍
함수형 프로그래밍은 부수 효과가 없습니다.
* 부수 효과란
콜백이나 옵저버 패턴이 스레드에 안전하지 않은 이유는 같은 자원에
여러 스레드가 경쟁 조건에 빠지게 되어서 원하는 결과와는 다르게
예측하지 못한 잘못된 결과가 나오기 때문입니다. 이것을 부수효과라 합니다.
함수형 프로그래밍은 부수효과가 없는 순수 함수를 지향합니다.
그렇기에 멀티 스레드 환경에서도 안전합니다.
=> 자바로 리액티브 프로그래밍을 하기 위해서는 함수형 프로그래밍의 지원이 필요.
위키에서 설명하는 리액티브 프로그래밍입니다.
RxJava
2013년에 넷플릭스의 기술 블로그에 처음 소개되었습니다.
* RxJava 버전1은 더 이상 업데이트가 되고 있지 않기 때문에
저처럼 이제 공부를 시작하는 분들은 RxJava2를 공부하시면 됩니다.
RxJava2 를 사용하기 위해 필요한 라이브러리
저는 이클립스에서 Maven Project로 만들어서 예제를 진행하겠습니다.
간단한 예제를 하나 보고 포스팅을 마치겠습니다.
먼저 메이븐 프로젝트를 생성하고, pom.xml 파일에 의존성을 추가해줍니다.
1 2 3 4 5 6 7 | <dependencies> <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.2.1</version> </dependency> </dependencies> | cs |
RxJavaEx.java
1 2 3 4 5 6 7 8 9 10 11 12 13 | package rx.java.chapter01; import io.reactivex.Observable; public class RxJavaEx { public static void main(String args[]) { Observable.just("hello", "world").subscribe(System.out::println); } } | cs |
실행결과
hello
world
-------------
System.out::print 로 하면
helloworld가 출력됩니다.
이상입니다.
다음 포스팅에서는 Observable클래스에 대해 알아봅니다.
*이 포스팅은 도서 RxJava 프로그래밍을 공부한 후 정리한 내용입니다.*
'RxJava2, RxAndroid2' 카테고리의 다른 글
[RxJava2] 리액티브 연산자 map(), flatMap(), filter(), reduce() (0) | 2018.09.27 |
---|---|
[RxJava2] 뜨거운 Observable, Subject 클래스 (0) | 2018.09.27 |
[RxJava2] Single 클래스 Observable 의 특수한 형태, Maybe 클래스란? (0) | 2018.09.27 |
[RxJava2] Observable의 팩토리함수들 : fromArray(), fromIterable(), fromCallable(), fromFuture(), fromPublisher() (0) | 2018.09.21 |
[RxJava2] Observable 클래스와 팩토리 함수들, just(), subscribe(), create() (0) | 2018.09.20 |