RxJava1 和 RxJava2 之间的差异

2022-09-02 02:37:41

我一直在寻找RxJava1 https://github.com/ReactiveX/RxJava/releases 和RxJava2的文档 https://github.com/ReactiveX/RxJava/wiki/Reactive-Streams,似乎独特的不同之处在于RxJava 2具有Java Stream。

还有其他不同吗?

我一直在使用版本1.1.3,但我不确定是否值得迁移到RxJava2,因为我们已经在代码中使用了Java 8流。

问候。


答案 1

RxJava 1.x和2.x都被设计为Java 6+,因此我们不能在任何版本中支持Java 8 Streams。这是为了保持对无数Android设备和版本的支持,这些设备和版本永远不会更新到与Java 8兼容的运行时。如果你需要Java 8支持,可以考虑使用Pivotal的Reack-Core

两者之间的主要区别在于,2.x直接针对反应式流SPI,为此,它已从头开始完全重写。我们目前处于开发预览模式,您可以按照 2.x 分支自述文件所述访问该模式。

2.x的完全重写大大提高了我们的内存消耗和性能;这是一个比较各种版本和库的基准测试。

在 API 方面,我们计划继续支持 1.x 中存在的所有运算符,并可能在支持 1.x 之前,使用新版本将两个版本扩展几年。

由于2.x是一个新的架构,许多依赖的库(例如,改造)也必须更新;这可能不会在今年八月底之前发生,或者可能需要几个月的时间才能赶上。这是包含差异亮点的wiki页面


答案 2

由于我已经在我的示例项目中 实现了RxJava2 - 链接

以下是RxJava2和RxJava1之间的区别:

  1. 为了允许RxJava 1.x和RxJava 2.x并排,RxJava 2.x位于maven坐标下,类可以在下面访问。io.reactivex.rxjava2:rxjava:2.x.yio.reactivex

  2. 从 1.x 切换到 2.x 的用户必须重新组织其导入,但要小心。

  3. onCompleted -> onComplete- 不带尾随 d

  4. CompositeSubscription -> CompositeDisposable - CompositeDisposable已被删除CompositeSubscriptionSubscription

  5. Func1 -> Function

  6. Func2 -> BiFunction

  7. limit运算符已被删除 - 在 RxJava2 中使用take

RxJava 2.0 在 Reactive-Streams 规范之上完全从头开始重写。该规范本身已经从RxJava 1.x演变而来,并为反应式系统和库提供了通用的基线。

由于Reactive-Streams具有不同的体系结构,因此它要求对一些众所周知的RxJava类型进行更改。

RxJava2 具有比 RxJava1 更好的性能和更低的内存使用率

[资料来源:https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0 ]


推荐