さて、前回Java8のStreamの使い方をざっと見てみたのですけど、はてなブックマークのコメントで「Javaが使われている領域でこんな言語拡張は必要か」「可読性が損なわれていて単なる自己満足ではないか」のようなコメントがついていました。
実際どうなのか考えてみます。
Java8のStreamの目的
では、いまJavaが使われている領域を考えてみましょう。
Javaがいまよく使われているのは、クライアントサイドではなくサーバーサイドです。とくに、直接アクセスをうけつけるサーバーではなく、分散データ処理のためのHadoopやHBase、全文検索エンジンのLuceneなど、バックエンド処理を行う製品のシェアが大きいように見えます。
TwitterやGoogleでも、Javaで書かれたバックエンドが動いているようです。Facebookも分析系ではJavaを使っているようです。
大手サービスでバックエンドでの事例が多いとはいえ、手元をみると、TomcatやGlassFishなど、Javaで書かれたアプリケーションサーバーが動いています。
このようにJavaは、インフラ系のサーバーを記述するためやデータ処理のために多く使われています。
そしていま、サーバーだけでなく携帯端末まで、すべてのコンピュータはマルチコア化してきています。
そのような中で、パフォーマンスのよいプログラムを書くためには、マルチコアを活かした並行処理が書ける必要があります。
つまり、Javaが使われている領域を考えれば、並行処理が書きやすくなる必要があるわけです。