PR

 これ以外にもFCM(First Class Methods)などが提案されています。

 この当時の興味深い資料として、2008年にjava.netで行われたWhich Java 7 closure proposal do you support?というアンケートがあります。

 このアンケートには約2,000人が答えており、BGGAとクロージャは必要ないという意見に二分されていることが分かります。

 この激論に終止符を打ったのが、Java SEのチーフアーキテクトであるMark Reinhold氏です。

 Reinhold氏は2008年11月に開催されたDevoxxキーノートセッションで、Java SE 7へのクロージャ導入を見送ると発表したのです。

 これから1年後、2009年11月に開催されたDevoxxに再びMark Reinhold氏が登壇しました。Reinhold氏はJDK 7 Update and Java SE 7というセッションの中で、シンプルクロージャをJava SE 7に導入すると発表したのです。

 この発表を元に、2009年12月にOpenJDKのサブプロジェクトとしてProject Lambdaが発足したのです。

Project Lambdaの背景

 2008年に中止が決まったクロージャが、なぜ1年で方針が覆ったのでしょうか。

 その答えの1つが、CPUのマルチコア化のトレンドです。

 2000年代後半から、一般向けのCPUでもマルチコア化が進められてきました。現在ではPCではマルチコアが当然になり、スマートフォンでもマルチコアのCPUが増えてきています。

 2011年には、Intelが60コアのXeon Phiをリリースするなど、サーバー用途ではさらにマルチコア化、メニイコア化が進んでいます。

 このようにハードウエアが進化しているのですから、ソフトウエアも進化していく必要があります。

 複数のコアを効率よく動作させるためには、ソフトウエアのパラレル化が必要になります。

 もちろん、Javaはスレッドを使用して、パラレルに処理することが可能です。特にJ2SE 5.0で導入されたConcurrency Utilitiesを使用することで、簡単にスレッドプールを使用することができるようになり、パラレル処理を比較的容易に行うことができるようになりました。