【東京】JJUG ナイトセミナー 「Reactive Streams特集」 に参加してきました。 #jjug
はじめに
https://jjug.doorkeeper.jp/events/26547
@makingさんから、@okapiesさんと一緒に「Reactive Streams」について話してくれと頼まれましたので、参加してきました。
元々は、@cero_tさんが発端らしいです。
初めは、マイナーなネタならそんなに人集まらないだろうと思ってたのですが、キャンセル待ちが100人超えするくらいまで期待されてて正直びっくりしました。
当日のアンケートシステム、とても良かったので次回以降改善されるのを期待してます。
資料
@okapiesさんの資料は、こちらです。
私の資料は、こちらです。
http://grimrose.github.io/jjug-2015-reactive-streams/
利用したサンプルコードは、こちらです。
https://github.com/grimrose/jjug-2015-reactive-streams
元々は、Vert.x3でやろうと思ってましたが、ReactorかRxJavaでと言われたので、使ったことがあるRxJavaを選びました。
確かに、当日のアンケートを見るとVert.x3、Ratpackの認知度が低すぎて、RxJavaを選択しておいてよかったと思いました。
ドキュメントの多さは、やはりRxJavaに分があるのですが、Reactorもかなり充実しています。
個人的には、MongoDB Reactive Streams Java Driverがチュートリアルとして、充実してると感じました。
初めてJavaでAkkaを使ってみたのですが、いろいろツライ印象しか受けませんでした。
あれなら、素直にScalaで使ったほうが分かりやすいと思います。
おわりに
Reactive Streamsについては、それぞれのRuntimeの世界を繋ぐ為の仕様という認識が一番分かりやすいと思います。
実際の泥臭い部分は、Runtimeが頑張ってくれますが、何をやっているのか、どうやって実現しているのかを知っておくのは大切です。
どのRuntimeもReactive Streams向けに変換するライブラリがありますので、そのソースコードを読むのも勉強になると思います。
JDK9にどこまで採用されるか分かりませんが、データフロー制御についての共通インターフェースが採用されると、java.util.concurrentと併せて、非同期処理をもっと使いやすくなると思います。
JVMでデータフロー制御でお困りの方は、使ってみてはいかがでしょうか。
JJUGのスタッフ、参加者の皆様、@okapiesさん、ありがとうございました。