首先,我不得不说,我对反应性编程没有多少经验。
由于JDK 9 (流及其嵌套接口)中只有少数几个接口,因此JDK 9显然不包括像RxJava这样的反应性库。
在Javadoc中,有一些实现Publisher、Subscription和Subscriber的示例。但这些似乎是相当低的水平,没有任何反应操作者或处理背压。
那么,将这些接口包含到JDK中有什么意义呢?
反应性库的供应商是否应该使用它们,以便它们的Java实现(如RxJava)使用一组公共接口?(类似于JPA和Hibernate?)
发布于 2017-09-23 18:13:10
它主要允许Java本身在未来的一些版本(如反应性JDBC、网络、IO等)内部使用反应性编程。在概念上,它也是一个新的互操作集合点,然而,这种集合点已经存在,通过它的Java 6需求针对更多的用户使用这种集合点。
正如您所提到的,拥有这4个接口和SubmissionPublisher本身的使用是有限的。如果Java有类似于Kotlin和C#的扩展方法,那么接口的包含可能会产生更多有趣的影响。
不幸的是,这也意味着现有的库必须使用桥接器在Java 9流和反应性流之间进行转换,并且/或用Java 9流API重新实现整个库--淘汰任何没有Java 9的人(即Android)。
主要的库已经有这样的桥接器(RxJava 2 Jdk 9互操作,堆芯互操作),而反应流将有它的自己的桥最终。还有一个为Java 9特性编写的原型反应库。
发布于 2017-09-23 17:34:45
流量接口的目的是提供“无阻塞背压异步流处理的标准”。已经有很多解决方案可以实现这一点(比如Rx),但是通过引入公共接口,可以最大限度地提高互操作性。
背压是关键,背压是,如果生产者给予回调,消费者可以以比生产者所能处理的更快的速度调用该回调。
通过在同一个线程上运行它们,可以很容易地阻止压力的产生,这样消费者和生产者就可以互相阻塞。
这种流动界面将使我们实现无阻塞的背压。
其中的细节将在此链接中详细解释(以及如何使用接口的信息):https://aboullaite.me/java-9-new-features-reactive-streams/
https://stackoverflow.com/questions/46382341
复制相似问题