Skip to content

1. 简介

文档的PDF版本可在此处获取 |HERE|。

文档中的示例可在此处查看 |HERE|。

1.1. 背景

本文档并非面向初学者,而是面向具备扎实Java经验的用户。本文档参考了以下资料:

  1. [响应式编程] 文档
  1. Java 8 lambda 函数
  2. 《使用 Java 8 学习响应式编程》;
  3. 《Java 8实战》

与我以往撰写的文档不同,本文主要依靠示例,仅简要涉及理论。不过,每个示例都配有说明,且全篇内容具有逻辑连贯性。

ReactiveX 是一组用于简化异步编程及处理异步数据结果的库:

 
 
 

Rx 库已被实现为多种编程语言:

 

在此,我们将重点介绍以下库:

  • 面向 Java 世界的 RxJava;
  • RxAndroid,是针对 Android 环境的 RxJava 特化版本;
  • RxSwing,即针对 Swing 环境的 RxJava 专用版本;

响应式编程的概念乍看之下颇为复杂。正因如此,本文档主要面向非初学者。尽管如此,我已竭力对所用代码进行详细说明,初学者亦可通过本文档熟悉响应式编程。

1.2. 使用工具

以下示例已在以下环境中经过测试:

  • Windows 10 Pro 64位系统;
  • JDK 1.8(第1节);
  • IntelliJ IDEA 社区版(第 10.4 节);

1.3. 示例代码

以下示例的代码可在 [dvp/examples] 文件夹的 |此处| 找到。

 

[dvp/examples] 文件夹 [2] 是一个 Gradle 项目,其中包含本文档中的大部分示例。任何支持 Gradle 项目管理器的 IDE [http://gradle.org/] 均可打开该项目。IntelliJ IDEA 原生支持该功能。对于 Eclipse 或 NetBeans,则需要安装插件。使用 IntelliJ IDEA Community Edition 时,请按以下步骤操作:

[示例] 项目由以下 [build.gradle] [4] 文件进行配置:


buildscript {
    repositories {
        mavenCentral()
    }
}
 
apply plugin: 'java'
 
jar {
    baseName = 'exemples-01'
    version = '0.0.1-SNAPSHOT'
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    compile('io.reactivex:rxswing:0.25.0')
    compile('io.reactivex:rxjava:1.1.3')
    compile('com.fasterxml.jackson.core:jackson-databind:2.7.3')
}
 
task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}
  • 第 18–22 行:项目的 Gradle 依赖项(待下载的库);
  • 第 19 行:第 2 节中讨论的 Swing 示例所需的库;
  • 第 20 行:RxJava 库;
  • 第 21 行:一个 JSON 库;
  • 第 9–12 行:编译项目生成的 JAR 归档文件的特性;

要下载项目所需的依赖项,请按照以下步骤 [1-4] 操作: