ソフト開発

ソフト開発のトピックス-PR-

詳解 Java SE 8 第2回 ラムダ式

2014/03/28
櫻庭 祐一=横河電機 (筆者執筆記事一覧

 今回から、具体的な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 Ahé氏の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の提案に近いものになっています。

  • Facebookでシェアする
  • はてなブックマーク
  • Evernoteでクリップする
  • 印刷する

今週のトピックス-PR-

この記事に対するfacebookコメント

nikkeibpITpro

▲ ページトップ

執筆者一覧

イベントINFO -PR-

最新号

注目の書籍

好評発売中!

Xperia Z1 SOL23活用ガイドブック

auの「Xperia Z1 SOL 23」を徹底的に使いこ なすためのガイドブッ ク