SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Java 9で「変わること」と、Javaのこれまで

Java 9のリリースとこれまでのトレンドを振り返る

Java 9で「変わること」と、Javaのこれまで 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

「Reactive Streams」とは

  実は、筆者はReactiveという用語にあまりなじみがなく、違和感を持っていました。同じ考えの方もいらっしゃるかもしれません。しかし、サーバーサイドでの開発者であればPub/Subフレームワークと理解してもいいですし、クライアントアプリケーションの開発者であればObservableと理解すれば分かりやすいかと思います。ただし、既存の用語ではなく、Reactiveという言葉を用いてきたことからも、その用途は多少異なるといえます。

 例えば、Pub/Subはどちらかといえばシステム間の非同期メッセージングを想定していますが、「Reactive Streams」は同一のJava VM内を想定していると思われます。また、Observableそのものというよりは、Observableなオブジェクトを細かくコントロールしたいときに使うAPIといえるでしょう。

 AndroidではRxJavaというライブラリも使われているようです。これらのライブラリを使っている方であれば、より理解しやすいのではないでしょうか。

 Reactive Streams機能では、以下3つのインターフェースが重要な役割を果たしています。

  • Publisher
  • Subscriber
  • Processor

 「Publisher」はデータの提供元、もしくは発生元となるインターフェースです。そして、「Subscriber」がデータを処理または表示するためのオブジェクトです。この2つのインターフェースを使う事でデータの提供と処理をわけて管理でき、Publisherオブジェクトは、あらかじめ購読されているSubscriberオブジェクトにのみデータを提供することができるようになります。「Processor」は、SubscriberとPublisherを単に継承したものです。このインターフェースがあえて定義されているのは、図4のように、データの発生元からのデータについてフィルタや加工を非同期で行いつつ、それらの準備が整ったら最終的に表示、もしくは出力オブジェクトにデータを渡すケースが想定されているからです。

図4 Reactive Streamsの利用シーン例
図4 Reactive Streamsの利用シーン例

 AdnroidアプリのようにUIを止めることなくデータ処理をする必要があるクライアントアプリの場合、この仕組みが必要となります。従来の方法では、データ処理を同期的に行うことができないためコードが煩雑になりがちですが、この流れでデータ処理をすれば、すっきりとしたコードの記述が可能です。

 また、IoTのようにさまざまな機器から情報が大量が生成され、それを必要に応じて検知し、出力する場合にも有効な処理といえます。

最後に

 今回は、Javaのリリースの歴史とJava 9のリリースの概要について紹介しました。Java 9でリリースされたモジュール機能はこれまでのJavaと比べて、開発者自身においても、Javaという実行環境においても大きな変更といえるでしょう。次回以降は、これらの詳細な機能や利用方法などを紹介していきます。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Java 9で「変わること」と、Javaのこれまで連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10459 2017/10/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング