リアクティブの世界の大きな問題のひとつであり、その理解しにくさは、リアクティブという言葉とその言葉の多様な解釈にある。講演を聞いたり、ブログを読んだりしてもリアクティブの意味が掴めなかったPeter Ledbrook氏は、リアクティブとは何かを調べ、その知識を共有しようと決めた。
リアクティブマニュフェストから始めた、Grailsの中心のコミッタのLedbrook氏は、リアクティブシステムの特徴を以下のようにまとめた。
そして、Ledbrook氏が次に取り上げるのがリアクティブストリームだ。氏はこれを、出力され続ける要素の流れと捉え、オブザーバーパターンを手がかりに理解できると考えている。オブザーバーパターンはイベントを出力するソースとイベントを監視するひとつ以上のオブザーバーで成り立つ。氏によれば、リアクティブとはオブザーバーパターンに、完了を検知し、エラーを伝播するイベントソースと、ソースとやり取りするリスナーを組み合わせたものだ。
リアクティブストリームは仕様であり、クロスプラットフォームの実装にはReactiveXがある。また、Ledbrook氏はProjectReactorとAkkaの名前も挙げている。ReactiveストリームAPIの3つの重要な特徴は下記の通り。
Ledbrook氏はリアクティブストリームの多くが同じコンセプトで実現されているが、ある種の複雑さが隠されている、と指摘する。I/Oが激しく、大量のデータを処理する必要がある場合がユースケースになるだろう。Java 8のストリームはリアクティブストリームと似ているが、リスナーからの通知がなく、リアクティブストリームのようにI/Oに適合して作られていない。