今回から、具体的なJava SE 8の新機能について紹介していきます。はじめに紹介するのは、やはりJava SE 8の機能の中で最も注目されているProject Lambdaです。

 とはいっても、Project Lambdaで策定している仕様を1回で紹介するには範囲が広過ぎます。そこで、今回はProject Lambdaの中で、最も基本的な部分であるラムダ式を中心に紹介していきます。

Project Lambdaの成り立ち

 前回、紹介したようにJava SE 7のリリースが遅れた要因の1つに、Project Lambdaがあります。

 Project Lambdaの成り立ちについては、本連載の2010年3月の「クロージャからProject Lambdaへ」で言及しました。しかし、それから随分時間が経ってしまいましたし、その後もやはり紆余曲折あったので、改めてここでまとめてみましょう。

Project Lambda前史

 Project Lambdaではラムダ式が導入されていますが、それより前に、Javaにクロージャを導入する動きがありました。

 クロージャについて言及されたのは2005年のJavaOneにおいてでした。2005年といえば、まだJava SE 6がリリースされる前です。その時に、Java SE 7向けの機能として言及されたのです。

 それを受けて、2006年8月にGilad Bracha氏、Neal Gafter氏、James Gosling氏、Peter van der Ahe氏の4氏がJavaへのクロージャの導入案を提案したのです。彼らの提案は4氏の頭文字をとって、BGGAと呼ばれていました(その後、Closures for the Java Programing Languageに名称が変更されています)。

 この提案によって、Javaのコミュニティーで大激論が起こってしまったのです。

 特に、BGGAを実質的に引っ張っていたGafter氏と、クロージャ導入に反対の立場のJoshua Bloch氏との議論は有名です。というのも、彼らがJavaOneの名物セッションであるJava Puzzlersのスピーカーで、公私ともに仲がよいことで知られていたからです。

 しかし、この議論の後、彼ら2人でJava Puzzlersを行うことはなくなってしまいました。

 BGGAに触発されて、他にもクロージャの提案が行われています。

 たとえば、Joshua Bloch氏はDoug Lea氏、Bob Lee氏と共にCICE(Concise Instance Creation Expresions)を提案しています。CICEはクロージャは導入せずに、無名クラスの簡易記法を提案しています。結果的には、Project Lambdaのラムダ式はCICEの提案に近いものになっています。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら