RxJava文档和教程 - RxJava入门指南

优质
小牛编辑
143浏览
2023-12-01

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示例:

  1. <dependency>
  2. <groupId>io.reactivex</groupId>
  3. <artifactId>rxjava</artifactId>
  4. <version>1.0.10</version>
  5. </dependency>

Ivy示例:

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

SBT示例:

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

Gradle示例:

  1. compile 'io.reactivex:rxjava:1.0.10'

如果你没有使用构建系统,想直接下载JAR文件的话可以在这里找到:

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

编译构建

检出和构建RxJava的源码,使用以下命令:

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

要执行一个完整的构建,使用这个命令:

  1. $ ./gradlew clean build

构建命令的输出大概是这样的:

  1. $ ./gradlew build
  2. :rxjava:compileJava
  3. :rxjava:processResources UP-TO-DATE
  4. :rxjava:classes
  5. :rxjava:jar
  6. :rxjava:sourcesJar
  7. :rxjava:signArchives SKIPPED
  8. :rxjava:assemble
  9. :rxjava:licenseMain UP-TO-DATE
  10. :rxjava:licenseTest UP-TO-DATE
  11. :rxjava:compileTestJava
  12. :rxjava:processTestResources UP-TO-DATE
  13. :rxjava:testClasses
  14. :rxjava:test
  15. :rxjava:check
  16. :rxjava:build
  17. BUILD SUCCESSFUL
  18. Total time: 30.758 secs

执行完整的构建的话,你会看到单元测试的执行,输出类似于这样:

  1. > 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。