RxJava 探索(一)— 介绍

2018-11-25  本文已影响0人  Little丶Jerry

RxJava GitHub 主页

RxJava Wiki 主页

RxJava 是 ReactiveX 在 JVM 上的一个实现,ReactiveX 使用 Observable 序列组合异步和基于事件的程序。

更多关于 ReactiveX 的资料,可以看这里:

ReactiveX 探索(一)— Rx 介绍

ReactiveX 探索(二) — Rx 五大部件

一、RxJava 介绍

1.1 RxJava 是轻量级的

RxJava 尽力做到非常轻巧。它仅关注 Observable 的抽象和与之相关的高层函数,实现为一个单独的 JAR 文件。

1.2 RxJava 是一个多语言实现

RxJava 支持 Java 6 或者更新的版本,以及其它的 JVM 语言如 Groovy,Clojure,JRuby,Kotlin 和 Scala。RxJava 可用于更多的语言环境,而不仅仅是 Java 和 Scala,而且它致力于尊重每一种 JVM 语言的习惯。

1.3 RxJava 第三方库

下面是可与 RxJava 协作的第三方库:

二、入门指南

2.1 正式版本

你可以在 Maven Central 找到用于 Maven,Ivy,Gradle,SBT 和其它构建工具需要的二进制文件和依赖信息.

Maven 示例:

<dependency>
    <groupId>io.reactivex.rxjava2</groupId>
    <artifactId>rxjava</artifactId>
    <version>2.2.0</version>
</dependency>

Ivy 示例:

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

SBT 示例:

libraryDependencies += "io.reactivex" %% "rxscala" % "0.26.5"

libraryDependencies += "io.reactivex.rxjava2" % "rxjava" % "2.2.0"

Gradle 示例:

compile 'io.reactivex.rxjava2:rxjava:2.2.0'

如果你不是使用构建系统,而是想要直接下载 jar,请使用所需的版本创建这样的 Maven pom 文件,你需要使用 Java 6 或更高版本:

<?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>

然后执行:

$ mvn -f download-rxjava-pom.xml dependency:copy-dependencies

该命令将 rxjava - * .jar 及其依赖项下载到 ./target/dependency/

不想这么麻烦的话,可以直接在以下地址下载 JAR 文件:

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

2.2 快照版本 Snapshots

快照版本可通过 JFrog 获得:

repositories {
    maven { url 'https://oss.jfrog.org/libs-snapshot' }
}

dependencies {
    compile 'io.reactivex.rxjava2:rxjava:2.2.0-SNAPSHOT'
}

maven 快照版本和发布版本区别

2.3 编译构建 Building

检查和构建 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

2.4 故障排除

有一位开发者上报了下面这个错误:

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。

2.5 RxJava 2 对比 RxJava 1

上一篇下一篇

猜你喜欢

热点阅读