RxJava 처음 시작하기(2)

2018. 12. 10. 18:17리액티브 프로그래밍/RxJava

자바코드를 작성하기위한 파일은 기존의 자바 코드 파일을 생성하는 것과 동일합니다.

[New] - [Class] 에서 [Name]에 원하는 파일명을 입력후 <Finish> 해주면 됩니다.



package reactivejava;

import io.reactivex.Observable;

public class FirstExample {
	
	public void emit() {
		Observable.just("Hello", "RxJava 2!!").subscribe(System.out::println);
	}
	
	public static void main(String[] args) {
		FirstExample demo = new FirstExample();
		demo.emit();
	}
}


위 코드 내용을 입력후 실행해 봅시다.


Hello

RxJava 2!!


라는 결과가 출력 될 것입니다.

이것을 보고 우리는 추측을 할 수 있습니다.

RxJava는 Observable객체의 just() 메소드로 데이터를 저장하고, subscribe() 메소드로 동작을 지정한다 라는 것을요.


Observable 클래스는 데이터의 변화가 발생하는 데이터 소스 입니다. 자세한 내용은 추후에 다뤄 봅시다. 여기에서는 리액티브 프로그래밍이 Observable에서 시작한다는 사실만 기억해 둡시다.

-just() 함수

Observable 클래스의 가장 단순한 Observable 선언 방식입니다. 위 코드에서는 "Hello"와 RxJava 2!!!" 라는 두개의 문자열을 발행 했습니다. Integer와 같은 래퍼 타입부터 사용자 정의 클래스의 객체도 인자로 넣을 수 있습니다.


-subscribe() 함수

subscribe() 함수는 Observable을 구독 합니다. Observable은 subscribe() 함수를 호출해야 비로소 변화한 데이터를 구독자에게 발행합니다. 이 부분은 옵서버 패턴과 동일하다고 생각하면 됩니다. 반드시 데이터를 수신할 구독자가 subscribe() 함수를 호출해야 Observable에서 데이터가 발행됩니다. 이 부분은 중요한 부분이라 추후에 다시 나올 것입니다.


-System.out::println

수신한 데이터를 System.out.println을 통해 호출했습니다. System.out::println 부분은 Java8 의 메서드 레퍼런스를 활용했습니다. 만약 메서드 레퍼런스를 사용하지 않으면 data->System.out.println(data)와 같이 람다식으로 표현이 가능합니다. Observable이 발생하는 데이터는 data 인자로 들어옵니다.


어떤 언어든 간에 가장 처음 거치는 절차인 print() 과정을 진행해 보았습니다.

아직 아리송한 부분이 많습니다. 갑작스럽게 등장한 메소드 레퍼런스와, 람다식 은 물론, 처음보는 여러 함수들까지 공부할 부분들이 RxJava라는 비동기 프로그래밍 방법을 배우는 데 진입장벽을 높이고 있다고 생각합니다.


자바8의 람다 표현식과, 함수 레퍼런스를 활용하는 코드는 가독성을 좋게합니다. 어렵지 않은 내용이라고 책에 나와있지만 .. 어렵지않다라.. 잘모르겠네요..

앞으로의 예제들에 쭉 사용될 것이므로, 자연스럽게 람다 표현식과 함수 레퍼런스를 익혀보는것도 좋은것 같습니다.