私は RxJava に取り組んでおり、最近 Akka-Streams と Reactor でいくつかの評価を行いました。
私が知る限り、すべてのライブラリーはReactive-Streamsと呼ばれる単一の概念に収束しているため、実装間を行き来することができます。
RxJavaはすべての中で最も汎用的であり、他のライブラリへの依存関係がなく、同時実行性について意見が分かれていないと思います。主に Retrofit などの他のライブラリ/フレームワークによるサポートにより、Android で非常に人気があります。1.x ブランチは Reactive-Streams を実装していませんが、そのためのラッパーがありますが、2.x はネイティブに Reactive-Streams に準拠しています (現在プレビューで利用可能)。多くの一般的な JVM ベースのプログラミング言語には、それ用のアダプターがあります (Scala、Kotlin、Clojure など)。
Reactorはより新しいライブラリであるため、Reactive-Streams に準拠しています。それらには、他の多くのライブラリに対する依存関係/サポートがあります。彼らは、並行性とストリームでのキューイングに関して、別の一連のトレードオフを選択しました (つまり、LMAX ディスラプター スタイル)。オペレーターに関して RxJava との間でいくつかのやり取りがあり、オペレーターの共有プールを持つことについて話し始めました。
Akkaは、Scala に似た概念に大きく支配されています。私はそれを機能させるのに少し問題がありました。その背後にあるチームは Reactive-Streams 仕様の開発に関与しており、Reactive-Streams をサポートすることが宣伝されている Akka-Streams ライブラリがありますが、その流暢な API は Akka アクター モデルと深く絡み合っているため、アクセスするのは面倒です。
サーバー/デスクトップ/Android 側にいる場合、RxJava は一般的に適切な選択であり (他のものよりも文書化されていると思います)、高スループットの非同期操作を目的としています。レイテンシー側にいる場合は、Reactor の方が適している可能性があります。私は Akka-Streams の使用法についてはあまり知りませんが、1 年前に Akka を中心に構築された Web サーバーが Tomcat および Netty+RxJava よりも優れたベンチマークを見ました。