JDK9にReactive StreamsがJSR前のJEPの状態だがDoug Leaさん手腕で導入されるのか?

先日開催された野毛倶楽部「Reavtiveの夜」で話題になった、Reactive StreamsがGithubで仕様を決めてすごいという話をご紹介しましたが、もう少し当日あった話を深掘りしてご紹介したいと思います。

guyon.hatenablog.jp

まず、Reactive Streamsについて簡単に言う下記の問題に対する解決方法の一つの仕様です。

Pub/Subを利用するときにSub側のノード数やトラフィックを監視して調整するのはキツイので、Sub側がバッファの余裕によってPub側にメッセージリクエストをしてメッセージをもらうという仕組みです。

f:id:guyon:20151014200731j:plain

f:id:guyon:20151014200931j:plain

詳細は岡本さんのブログや発表エントリーを参考にして頂くとよくわかります。

okapies.hateblo.jp

speakerdeck.com

スライドをベース(22ページあたりからがReactive Streamsの話)に当日お話を聞いたのですが、仕様策定には

  • Typesafe
  • NETFLIX
  • Pivotal
  • Redhat

などのベンダーが関わっており、ベンダーだけでなく個人で関っている方もいます。 Javaを使っていてこの方の功績にあやかっていない人はいないと思うのですが、JSR166を主導しjava.util.concurrentを導入までリードした「Doug Lea」さんです。

彼が、JDK9でReactive Streamsをサポートできるように猛烈な勢いで進めているそうです。

JEP draft: Concurrency Updates for JDK 9

上記がJSRへ一定のプロセスを踏んで昇格する前のJEPです。岡本さんの話によるとDong Leaさんは3ヶ月でこのJEPを完了させようとしているとのこと。目標は2015年11月。もう来月の話ですね。記憶が曖昧ですが、すでに実装も進んでいて存在すると言っていたような。

当日も「2日前にも更新されてますねー」というような現状を見てみたり、岡本さんからJEPに関するディスカッションやり取りや経緯の話を聞いて勢いを感じました。

本当にJDK9に入っても不思議じゃありませんね。岡本さんが「ランタイムを制するものがReactiveを制する」と言っていたように、JDK9に入ったらReactive Streamsに関わる運用要素の全て賄えるというわけではなく、それによって普及が加速しライブラリやサービスやプラットホームなどの大きめの粒度でイケているランタイムが出揃い、世界ユーザーのプロダクション導入が実績が出揃ってきて、デファクトの流れになるんじゃないでしょうか。

この波はすぐ先ではなく、もう少し先になるかもしれません。 また、JavaだけでなくScalaの波もあるので何がどう主流で採用されていくのかは「こうなのかなー」という個人的な想いはあっても読めません。

当日メモを取っていたわけではなく間違っている事を書いている可能性もあるので、指摘や補足をもらえると嬉しいです!

他にも面白かった話題があったので、思い出せれば別エントリーでご紹介できればと思います。