はじめに

どんなことでも、まず一番奇妙な部分を見つけて、それをじっくり調査しなさい。

――John Archibald Wheeler

さあ、これから楽しい時間を過ごしましょう。世界で最も存在感があり、広く使われている言語が進化しました。Javaは今まで、オブジェクト指向パラダイムというツールセットだけを開発者に提供してきました。これからは、アプリケーション開発における一般的な問題をエレガントに解決するための「もう1つの」ツールセットも使えます。これまではJVMを使う他の言語でしか実現できなかったようなことが、Javaでもとても効果的に実現できるようになりました。つまり、Javaプログラマはより大きな力を手に入れたのです。

私は、過去数十年間、C、C++、Java、C#、F#、Ruby、Groovy、Scala、Clojure、Erlang、JavaScriptなど、いくつもの言語によるプログラミングを経験しました。「この中で一番好きな言語はどれですか?」と聞かれることがあっても、私の答えは常に「お気に入りの言語があるというわけではなく、プログラムを行う方法である」ということで一貫しています。

私はプログラミングの科学とエンジニアリングに引き込まれ、プログラミングの技術に釘付けにされてしまいました。コーディングと文章を書くことには共通点が数多く存在します。アイデアを表現するための方法が複数存在するということです。Javaではオブジェクトを使ってコードを書けましたが、今後は設計やアイデアを実装するために他の手法も使えるようになったのです。

その手法は、Javaのコードをより表現力に富んだものとし、簡単に記述できてエラーが発生する可能性が少なく、そして容易に並列化できます。これはLisp、Clojure、Erlang、Smalltalk、Scala、Groovy、そしてRubyですでに10年以上に亘り使われていた手法でもあります。Javaにとってはただ新しいというだけではなく、より優れた方法でもあります。 ...

Get Javaによる関数型プログラミング ―Java 8ラムダ式とStream now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.