RxJava是 ReactiveX 在JVM上的一個實作,ReactiveX使用Observable序列組合異步和基于事件的程式。更多關于ReactiveX的資料,可以檢視 ReactiveX 介紹 頁面。
RxJava介紹
RxJava 是輕量級的
RxJava盡力做到非常輕巧。它僅關注Observable的抽象和與之相關的高層函數,實作為一個單獨的JAR檔案。
RxJava 是一個多語言實作
RxJava 支援Java 6或者更新的版本,以及其它的JVM語言如
Groovy,
Clojure JRuby Kotlin和
Scala。RxJava 可用于更多的語言環境,而不僅僅是Java和Scala,而且它緻力于尊重每一種JVM語言的習慣。
RxJava 第三方庫
下面是可與RxJava協作的第三方庫:
- Hystrix - 用于分布式系統的一個延時和容錯處理架構
- Camel RX - 一個用于 Apache Camel 的 RxJava 相容層
- rxjava-http-tail - 讓你可以跟蹤HTTP日志,就像使用
一樣tail -f
- mod-rxvertx - Extension for VertX - 使用 RxJava 封裝的VertX庫
- rxjava-jdbc - 使用RxJava流式處理JDBC連接配接,還支援語句的函數式組合
- rtree - 使用RxJava實作的一個純記憶體的可變的R-tree和R*-tree
使用指南
你可以在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 [email protected]: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。