JDK 8がJDK 8 build b91でMilestone 7に到達した。M7はすべてのフィーチャーとユニットテストが実装され統合されているという、Feature Completeのマイルストーンだ。だが残念ながら、すべてのフィーチャーが間に合ったわけではない。3つのJEP (JDK Enhancement Proposal) がまだ開発中で、これらはJDK build b93で完成する見込みだ。とはいえ、Project Lambdaに関するすべてのJEPがリリースされたのは良い知らせだ。Java Platform GroupのチーフアーキテクトであるMark Reinhold氏は、Feature Completeは遅れているが以降のマイルストーンに影響はないと語っている。
以下がM7の一部として完了したJEPだ。
- 101 Generalized Target-Type Inference(汎用ターゲット型インターフェイス)
- 104 Annotations on Java Types(Java型のアノテーション)
- 107 Bulk Data Operations for Collections(コレクションのバルクデータ操作)
- 109 Enhance Core Libraries with Lambda(Lambdaによるコアライブラリ強化)
- 115 AEAD CipherSuites(AEAD暗号スイート)
- 118 Access to Parameter Names at Runtime(実行時のパラメータ名アクセス)
- 119 javax.lang.model Implementation Backed by Core Reflection(コアリフレクションによるjavax.lang.model実装)
- 120 Repeating Annotations(アノテーションの繰り返し)
- 123 Configurable Secure Random-Number Generation(コンフィギュラブルでセキュアな乱数生成)
- 126 Lambda Expressions & Virtual Extension Methods(ラムダ式と仮想拡張メソッド)
- 161 Compact Profiles(コンパクトなプロファイル)
- 162 Prepare for Modularization(モジュール化の準備)
- 171 Fence Intrinsics(メモリフェンスIntrinsics)
- 174 Nashorn JavaScript Engine(Nashorn JavaScriptエンジン)
- 176 Mechanical Checking of Caller-Sensitive Methods(Caller-Sensitiveメソッドの機械的チェック)
- 178 Statically-Linked JNI Libraries(静的リンクされたJNIライブラリ)
- 179 Document JDK API Support and Stability(JDK APIサポートおよび安定性の文書化)
- 184 HTTP URL Permissions(HTTP URLパーミッション)
- 185 JAXP 1.5: Restrict Fetching of External Resources(JAXP 1.5: 外部リソース取得の制限)
JEP 185は後から追加されたもので、XML APIのセキュリティ問題を解決するものだ。間に合わなかった3つのJEPは以下の通り。
- 140 Limited doPrivileged(限定したdoPrivileged)
- 155 Concurrency Updates(並行性の更新)
- 180 Handle Frequent HashMap Collisions with Balanced Trees(バランス木による頻繁なHashMap衝突のハンドリング)
JEP 140とJEP 180 は重要なセキュリティ改善だ。JEP 155はConcurrentHashMap APIとProject Lambda streams APIの整合をとるために必要なものだ。これらのJEPが完成すると、JDK 8はオフィシャルにFeature Completeになる。
JDK 8開発スケジュールは一連のマイルストーンで区切られている。多くは6週から8週で、だいたい週一でビルドされる。残りのマイルストーンは以下の通り。
- 2013/09/05 M8 (Developer Preview)
- 2014/01/23 M9 (Final Release Candidate)
- 2014/03/18 GA (General Availability)
Developer Previewはそれなりに安定しており、開発者コミュニティがテストするのにふさわしいビルドだ。Final Release Candidateはリリーステストのためのビルドだ。General Availabilityは最終リリースであり、製品に利用可能なビルドだ。