RxJava:通过JVM可观察序列构建异步和基于事件的程序

RxJava

RxJava 是一个基于Reactive Extensions的JVM实现框架,它通过观察者队列的做法,将消息的异步处理与基于事件的编程进行很好地结合。

RxJava通过观察者模式的设计方案来实现数据/事件的队列,并且加入了operator机制,来让开发者更好地对队列进行自定义化地组合。同时,RxJava对底层的线程、同步化,线程安全、多线程数据结构等组件也进行了一定程度的抽象提取。

主要特点

  • 无任何依赖
  • Jar包大小小于 1MB
  • 支持Java 6以上版本与 Android 2.3 以上版本
  • 支持Java 8 lambda语法
  • Polyglot(ScalaGroovyClojure 和 Kotlin
  • 对并发源一视同仁(线程、线程池、事件循环、Fiber、Actor等等)
  • 支持异步与同步的执行流程
  • Virtual time与schedulers参数化的多线程同步操作

如果要想更进一步了解RxJava,参看 Wiki Home.

技术交流

版本相关

1.x版本API接口已经稳定,并且将在未来几年继续使用。1.x 这种小型升级版本(比如1.1、1.2等)将在如下几种情况下发生:

  1. 没有琐碎的新功能上线
  2. 有重要的提升
  3. 会引发行为或功能变更的关键性bug修复,例如早先版本不支持操作符反压(backpressure)。这样的功能可以向后兼容,但是表现的行为与之前没有任何区别。

1.x.y 这种补丁升级版本(比如1.0.0->1.0.1 , 1.3.1 -> 1.3.2 等)主要是用来修复一些bug或者一些非常细微的功能优化(比如加上一些方法重载)。标记为@Beata与#Exceperimental的结构也可能会伴随一个补丁版本加入进来,去对非稳定的功能进行一次快速的迭代试验。

@Beta

@Beta注解标记的类与方法是在之后有可能会被修改的,甚至可能会在一些主干或较小的版本发布里去掉,不过在补丁修正类版本中不会对其进行改动。如果你的代码是作为一个库提供出去的(换句话说,你这些代码所在的ClassPath使用场景是不在你的控制之中的),建议不要使用这些@beta的API,除非你可以进行重新打包(比如使用ProGuard、shading等等)

@Experimental

相比@Beta标签,被@Experimental标记的类与方法将更加有可能发生变化。他们随时可能会被修改,甚至在大大小小的版本乃至微小补丁版本中,都有可能被删除。在你的生产环境代码中,千万不要使用此标签标记的API,他们纯粹是用来进行测试与效果反馈的。

@Deprecated

@Deprecated标记的类与方法更加要引起注意,因为他们在下一个大的主干版本发布时就会被去掉,强烈建议停止使用。而至于被标记为@Beta与@Experimental的类与方法,它们在一个小的更新版本或者一个补丁版本有可能就会表删掉,但在此之前,他们会先被改成@Deprecated标签,并且至少会经历一个较小的版本。

rx.internal.*

所有在rx.internal.* 包结构中的API都是作为一个内部私有的API存在,在开发者使用时尽量不要使用它,因为它随时有可能会在任何一个版本时发生改变。

文档

部署依赖

Maven,Ivy,Gradle等等依赖配置详见http://search.maven.org.

Gradle操作例子:

Maven:

Ivy:

JFrog的SNAPSHOTS

构建

操作过程如下:

更详细的构建过程请参照wiki中的相关文档

Bugs与反馈

bug,疑问与讨论请参看Github讨论区

版权

Copyright 2013 Netflix, Inc.

获得Apache2.0许可;你必须遵守本许可的情况下使用本软件。

开源地址:https://github.com/ReactiveX/RxJava

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 收藏

资源整理者简介:凝枫

非典型性程序员,爱做一些和写程序毫不相干的事 个人主页 · 贡献了46个资源 · 1


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer