我看到许多框架/库声称它们可以帮助在Java语言中构建响应式应用程序,例如: Akka、Vert.x、RxJava、Reactor、QBit等。
他们似乎有不同的方法,功能,优点,缺点,等等。我找不到详细的比较。有关于这些框架的文档,但这不足以让我理解它们之间的区别。
主要的Java反应式框架之间有什么不同?
可以驱动选择Java反应式框架的应用程序需求是什么?
谢谢您抽时间见我。
发布于 2015-11-12 23:26:22
我在RxJava上工作,最近我在Akka-Streams和Reactor上做了一些evaluations。
据我所知,所有的库都聚合到一个名为Reactive-Streams的概念中,因此您可以在实现之间来回切换。
我认为RxJava是所有库中最通用的,对其他库没有依赖,并且对并发性并不固执己见。它在Android上非常流行,主要是因为它得到了其他库/框架的支持,比如Retrofit。1.x分支没有实现Reactive-Streams,但它有包装器,而2.x本身就与Reactive-Streams兼容(目前在预览中可用)。许多流行的基于JVM的编程语言都有相应的适配器(Scala、Kotlin、Clojure等)。
Reactor是Reactive-Streams兼容的,因为它是较新的库。它们对很多其他库都有依赖/支持。当涉及到并发和流中的排队时,他们选择了一组不同的权衡(即LMAX Disruptor风格)。关于运算符,它和RxJava之间有一些来回,我们已经开始讨论共享运算符的池。
Scala在很大程度上是由类似Scala的概念主导的;我在让它工作时遇到了一点小问题。它背后的团队参与了Reactive-Streams规范的开发,还有一个Akka-Streams库被宣传为支持Reactive-Streams,然而,访问它是很麻烦的,因为它的fluent API与Akka参与者模型严重交织在一起。
如果您是在服务器/桌面/Android端,RxJava通常是一个很好的选择(我相信文档中的内容比其他更好),它的目标是高吞吐量的异步操作。如果你更倾向于延迟方面,Reactor可能是更好的选择。我不太了解Akka-Streams的用法,但我在一年前看到过一个基准测试,一个围绕Akka构建的web服务器的性能超过了Tomcat和Netty+RxJava。
https://stackoverflow.com/questions/33671578
复制相似问题