我看到许多框架/库声称它们可以帮助用 Java 构建响应式应用程序,例如:Akka、Vert.x、RxJava、Reactor、QBit 等。
他们似乎有不同的方法、特点、优缺点等。我找不到详细的比较。有关于每个框架的文档,但这不足以让我理解其中的差异。
主要的 Java 响应式框架之间有什么区别?
哪些应用程序需求可以推动选择 Java 响应式框架?
感谢您的时间。
我正在研究 RxJava 并且做了一些评价 http://akarnokd.blogspot.hu/2015/10/comparison-of-reactive-streams.html最近在 Akka-Streams 和 Reactor 上。
据我所知,所有库都集中在一个概念上,称为反应式流 https://github.com/reactive-streams/reactive-streams-jvm/这样您就可以在实现之间来回切换。
我相信RxJava是最通用的,对其他库的依赖为零,并且对并发性没有固执己见。它在 Android 上非常流行,主要是由于其他库/框架(例如 Retrofit)的支持。 1.x 分支没有实现 Reactive-Streams,但有它的包装器,而 2.x 本身就兼容 Reactive-Streams(目前在预览版中可用)。许多流行的基于 JVM 的编程语言都有其适配器(Scala、Kotlin、Clojure 等)。
Reactor兼容 Reactive-Streams,因为它是更新的库。他们对许多其他库有依赖/支持。当涉及流中的并发性和排队(即 LMAX Disruptor 风格)时,他们选择了一组不同的权衡。它和 RxJava 之间就运算符进行了一些讨论,我们已经开始讨论共享运算符池。
Akka高度受类似 Scala 的概念支配;我在让它工作时遇到了一个小麻烦。它背后的团队参与了 Reactive-Streams 规范的开发,并且有一个 Akka-Streams 库被宣传为支持 Reactive-Streams,但是访问它很麻烦,因为它的 Fluent API 与 Akka Actor 模型紧密交织在一起。
如果您在服务器/桌面/Android 端,RxJava 通常是一个不错的选择(我相信比其他的有更好的文档记录),并且针对高吞吐量异步操作。如果您更注重延迟,Reactor 可能是更好的选择。我对 Akka-Streams 的用法不太了解,但一年前我看到一个基准测试,其中围绕 Akka 构建的 Web 服务器优于 Tomcat 和 Netty+RxJava。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)