Post

Rxjava 실습하면서 알아보기

Rxjava 실습하면서 알아보기

오늘은 비동기 프로그래밍을 구현할 수 있는 Reactive Extensions을 java에서 적용할 수 있는 Rxjava를 설치하고 Visual studio Code 환경으로 실습해보려 합니다.

Rxjava는 비동기 프로그래밍을 구현할 수 있는 Reactive Extensions의 java 라이브러리입니다.

maven

java의 빌드 도구인 maven을 설치해야 rxjava 라이브러리를 의존성으로 사용할 수 있습니다.

물론 rxjava는 gradle도 지원합니다.

mac에서 maven을 설치하려면 아래와 같이 터미널에 입력합니다.

1
brew install maven

만약 우분투라면 apt로 설치해야 합니다.

1
sudo apt install maven

vscode

vscode에서 Java Extension Pack를 설치하면 별도의 에디터없이 간단하게 java 프로젝트를 시작할 수 있습니다.

1
>Java: Create Java Project

vscode의 보기 매뉴에서 명령 팔레트를 열어서 위와 같이 입력합니다.

pom.xml

빌드 정보를 기술하는 pom.xml으로 rxjava jar 파일을 내려받으려고 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>io.reactivex.rxjava2</groupId>
      <artifactId>rxjava</artifactId>
      <version>2.2.0</version>
      <name>RxJava</name>
      <description>Reactive Extensions for Java</description>
      <url>https://github.com/ReactiveX/RxJava</url>
      <dependencies>
          <dependency>
              <groupId>io.reactivex.rxjava2</groupId>
              <artifactId>rxjava</artifactId>
              <version>2.2.0</version>
          </dependency>
      </dependencies>
</project>

위와 같이 작성하고, 아래 명령어를 터미널에서 수행합니다.

1
mvn -f pom.xml dependency:copy-dependencies

./target/dependency 디렉토리에 reactive-streams-1.0.2.jar 파일을 내려받을 수 있습니다.

물론 jar 파일을 내려받지 않고, 아래와 같이 간단히 gradle이나 maven 의존성 추가해도 됩니다.

1
compile 'io.reactivex.rxjava2:rxjava:2.2.0'
1
2
3
4
5
<dependency>
    <groupId>io.reactivex.rxjava2</groupId>
    <artifactId>rxjava</artifactId>
    <version>2.2.0</version>
</dependency>

.classpath

내려받은 jar 파일을 프로젝트와 연결해줍니다.

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="output" path="bin"/>
	<classpathentry kind="lib" path="target/dependency/rxjava-2.2.0.jar"/>
	<classpathentry kind="lib" path="target/dependency/reactive-streams-1.0.2.jar"/>
</classpath>

classpath에 lib를 추가해줍니다.

hello world!

이제 hello world를 작성하려 합니다.

1
2
3
4
5
6
7
8
9
package app;

import io.reactivex.*;

public class App {
    public static void main(String[] args) {
        Flowable.just("Hello world").subscribe(System.out::println);
    }
}

“Hello world”라는 문자열을 Flowable로 변환해서 구독하여 출력하는 코드입니다.

Ctrl+F5로 코드를 수행하거나, main 메소드 위에 출력되는 run 버튼을 누르면 수행됩니다. (mac인 경우에는 fn+control+F5입니다.)

Flowable

Flowable은 rxjava2부터 나온 개념으로서 Backpressure buffer를 지원하는 Observable입니다.

이로 인하여 Flowable으로 흐름 제어를 할 수 있습니다.

1
2
3
4
5
6
7
8
9
package app;

import io.reactivex.*;

public class App {
    public static void main(String[] args) {
        Observable.just("Hello world").subscribe(System.out::println);
    }
}

작은 범위에서는 위의 코드와 같은 역할을 하지만, Observable는 흐름 제어 함수를 사용하지 못한다는 차이점이 존재합니다.

This post is licensed under CC BY 4.0 by the author.