栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

RxJava API和Java 9 Flow API之间的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RxJava API和Java 9 Flow API之间的区别

这两个库之间的主要区别是什么?

Java 9 Flow API不是独立的库,而是Java Standard Edition库的组件,由从2015年初建立的Reactive
Streams
规范采用的4个接口组成。从理论上讲,它的包含可以实现JDK中的特定用法,例如孵化中的HttpClient,当然也可能是计划中的Async
Database Connection

SubmissionPublisher

RxJava是Java库,它使用ReactiveX样式的API设计来为响应(推送)数据流提供丰富的运算符集。版本2

Flowable
以及其他版本
XxxProcessor
,实现了Reactive Streams
API,该API允许
Flowable
其他兼容库使用实例,然后又可以将其中的任何实例包装
Publisher
为,
Flowable
以使用这些实例,并与它们组合丰富的运算符。

因此,Reactive Streams API是 最小的接口规范, 而RxJava 2是它的一个 实现
,再加上RxJava声明了大量的其他方法,以形成自己丰富而流畅的API。

RxJava 1在其他来源中启发了Reactive Streams规范,但无法利用它(必须保持兼容)。RxJava
2是完整的重写和单独的主要版本,可以包含和使用Reactive
Streams规范(由于Rsc项目,甚至可以在内部对其进行扩展),并且已经比Java 9早一年发布了。决定v1和v2都继续支持Java
6,因此支持许多Android运行时。因此,它不能直接利用Java 9现在提供的Flow
API,而只能通过桥接器。其他基于Reactive
Streams的库也需要和/或提供这种桥接。

RxJava 3可能针对Java 9 Flow
API,但这尚未确定,并且取决于后续Java版本带来的功能(即值类型),我们可能会在一年左右的时间内没有v3。

直到那时,还有一个名为Reactive4JavaFlow的原型库,它确实实现了Flow
API,并在其上提供了ReactiveX样式丰富的流畅API。

为什么有人会使用Java 9 Flow库而不是种类繁多的RxJava库,反之亦然?

Flow API是互操作规范,而不是最终用户API。通常,您不会直接使用它,而是将流传递给它的各种实现。在讨论JEP
266时,作者没有发现任何现有库的API足以使Flow API具有默认值(不同于rich

java.util.Stream
)。因此,决定用户现在必须依靠第三方实现。

您必须等待现有的反应式库通过它们自己的桥实现或要实现的新库来本地支持Flow API。

在Flow API上提供丰富的运算符集只是库要实现它的原因。数据源供应商(例如,反应性数据库驱动程序,网络库)可以开始通过Flow
API实现其自己的数据访问器,并依靠丰富的库来包装它们,并为它们提供转换和协调,而不必强迫所有人实施所有这些运算符。

因此,更好的问题是,您现在应该立即使用基于Flow API的互操作还是坚持使用反应式流?

如果您需要相对较快的工作时间和可靠的解决方案,建议您暂时坚持使用Reactive
Streams生态系统。如果您有足够的时间或想要探索事物,则可以开始使用Flow API。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号