RxJava入門指南

weixin_34127717發表於2016-03-21

RxJava是 ReactiveX 在JVM上的一個實現,ReactiveX使用Observable序列組合非同步和基於事件的程式。更多關於ReactiveX的資料,可以檢視 ReactiveX 介紹 頁面。

RxJava介紹

RxJava 是輕量級的

RxJava盡力做到非常輕巧。它僅關注Observable的抽象和與之相關的高層函式,實現為一個單獨的JAR檔案。

RxJava 是一個多語言實現

RxJava 支援Java 6或者更新的版本,以及其它的JVM語言如 Groovy, Clojure, JRuby, KotlinScala。RxJava 可用於更多的語言環境,而不僅僅是Java和Scala,而且它致力於尊重每一種JVM語言的習慣。

RxJava 第三方庫

下面是可與RxJava協作的第三方庫:

使用指南

你可以在Maven Central http://search.maven.org 找到用於Maven, Ivy, Gradle, SBT和其它構建工具需要的二進位制檔案和依賴資訊.

Maven示例:

<dependency>
    <groupId>io.reactivex</groupId>
    <artifactId>rxjava</artifactId>
    <version>1.0.10</version>
</dependency>

Ivy示例:

<dependency org="io.reactivex" name="rxjava" rev="1.0.10" />

SBT示例:

libraryDependencies += "com.netflix.rxjava" % "rxjava-scala" % "1.0.10"

Gradle示例:

compile 'io.reactivex:rxjava:1.0.10'

如果你沒有使用構建系統,想直接下載JAR檔案的話可以在這裡找到:

https://repo1.maven.org/maven2/io/reactivex/

編譯構建

檢出和構建RxJava的原始碼,使用以下命令:

$ git clone git@github.com:ReactiveX/RxJava.git
$ cd RxJava/
$ ./gradlew build

要執行一個完整的構建,使用這個命令:

$ ./gradlew clean build

構建命令的輸出大概是這樣的:

$ ./gradlew build
:rxjava:compileJava
:rxjava:processResources UP-TO-DATE
:rxjava:classes
:rxjava:jar
:rxjava:sourcesJar
:rxjava:signArchives SKIPPED
:rxjava:assemble
:rxjava:licenseMain UP-TO-DATE
:rxjava:licenseTest UP-TO-DATE
:rxjava:compileTestJava
:rxjava:processTestResources UP-TO-DATE
:rxjava:testClasses
:rxjava:test
:rxjava:check
:rxjava:build

BUILD SUCCESSFUL

Total time: 30.758 secs

執行完整的構建的話,你會看到單元測試的執行,輸出類似於這樣:

> Building > :rxjava:test > 91 tests completed

故障排除

有一位開發者上報了下面這個錯誤:

Could not resolve all dependencies for configuration ‘:language-adaptors:rxjava-scala:provided’

他在從.gradle/caches.m2/repository/org/scala-lang/移除了舊版本的 scala-library之後解決了這個問題,然後執行了一次完整構建。(檢視詳細資訊)

在構建RxJava時你可能會遇到下面的錯誤:

Failed to apply plugin [id ‘java’]
Could not generate a proxy class for class nebula.core.NamedContainerProperOrder.

這是JVM的問題,詳細資訊可以參考 GROOVY-6951 。如果遇到這個問題,可以在構建RxJava之前執行 export GRADLE_OPTS=-noverify,或者升級你機器上的JDK。