今回から、Java SE 8について紹介していきます。1回目の今回は、Java SE 8の成り立ちや、主な新機能について紹介します。

Java SE 8の成り立ち

 Java SE 8の成り立ちについて紹介するには、まずJava SE 7について言及しなければなりません。というのも、Java SE 8の主要な機能はもともとJava SE 7で導入される予定だったからです。

 しかし、Java SE 7のリリースは遅れに遅れていたのです。特にProject LambdaとProject Jigsawはなかなか議論が収束せず、いつ合意に達するか全く読めない状況でした。

 そこで、2010年9月にJava SEのチーフアーキテクトのMark Reinhold氏がblogで2つの案を提示したのです。

  • Plan A: すべてを含んだJava SE 7を2012年中旬にリリース
  • Plan B: Project LambdaやProject Jigsawなどを含まないJava SE 7を2011年中旬にリリース、Project LambdaやProject Jigsawを含んだJava SE 8を2012年下旬にリリース

 このエントリーには175ものコメントがつき、そのほとんどがPlan Bに賛成していました。

 その後、2010年のJavaOneでReinhold氏は正式にPlan Bにすることを決定しました。そして、Project LambdaとProject Jigsawを抜いたJava SE 7が2011年7月にリリースされたのです。

 もともとPlan Bでは、Java SE 8に以下のような機能が導入される予定でした。

  • Project Lambda
  • Project Jigsaw
  • Project Coinの一部
  • Type Annotation
  • Bulk-Data Operators
  • Swing Date Picker
  • Collection Literals

 ところが、2012年7月にReinhold氏が再びblogで、Project JigsawをJava SE 8からJava SE 9にスリップさせる提案がされました。この時期、Project JigsawのMLの議論も停滞気味であり、Java SE 8に間に合わないことは明白でした。

 Project Jigsawがスリップしたことにより、Java SE 8はProject Lambdaのためのリリースとなったわけです。

 また、その年のJavaOneで、Java SE 8のリリースを2012年下旬から2013年下旬にすると発表されています。これはもともとJava SEのメジャーバージョンアップが2年周期だったことにあわせるということでした。その後、Java SE 8のリリースはさらに2014年3月に延期されています。

 ところで、当初の導入予定だった機能のうちProject Coinの一部とCollection Literalsは見送られています。また、Swing Date Pickerも見送られました。

 その代わりに、Date & Time APIやNashorn、そしてJavaFXが新たにJava SE 8の機能として取り入れられています。

 Java SE 8のリリースは2014年3月18日に予定されています。現在はhttps://jdk8.java.net/にてRelease Candidateが公開されています。昨年6月の機能確定後は、予定通りビルドも進んでいるようなので、遅れることはないと思います。しかし、リリースされるまでは、予断を許さないですね。