Java8のStreamの目的と書きやすさや可読性、並行処理の効果について

さて、前回Java8のStreamの使い方をざっと見てみたのですけど、はてなブックマークのコメントで「Javaが使われている領域でこんな言語拡張は必要か」「可読性が損なわれていて単なる自己満足ではないか」のようなコメントがついていました。
実際どうなのか考えてみます。

Java8のStreamの目的

では、いまJavaが使われている領域を考えてみましょう。
Javaがいまよく使われているのは、クライアントサイドではなくサーバーサイドです。とくに、直接アクセスをうけつけるサーバーではなく、分散データ処理のためのHadoopやHBase、全文検索エンジンLuceneなど、バックエンド処理を行う製品のシェアが大きいように見えます。
TwitterGoogleでも、Javaで書かれたバックエンドが動いているようです。Facebookも分析系ではJavaを使っているようです。
大手サービスでバックエンドでの事例が多いとはいえ、手元をみると、TomcatGlassFishなど、Javaで書かれたアプリケーションサーバーが動いています。
このようにJavaは、インフラ系のサーバーを記述するためやデータ処理のために多く使われています。


そしていま、サーバーだけでなく携帯端末まで、すべてのコンピュータはマルチコア化してきています。
そのような中で、パフォーマンスのよいプログラムを書くためには、マルチコアを活かした並行処理が書ける必要があります。
つまり、Javaが使われている領域を考えれば、並行処理が書きやすくなる必要があるわけです。

続きを読む