BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Java 8のリリースが延期,いまだ続くセキュリティ問題のために2014年まで

Java 8のリリースが延期,いまだ続くセキュリティ問題のために2014年まで

原文(投稿日:2013/04/24)へのリンク

Oracle で Java Platform Group のチーフアーキテクトを務める Mark Reinhhold 氏が 自身のブログ で,Java 8 のリリーススケジュールを4~6ヶ月遅らせるという Oracle の決定を発表した。

Rainhold 氏は "先頃,世間の注目を大いに集めた" セキュリティ上の脆弱性の連鎖に対する Oracle の "懸命の対応努力" について言及した上で,多数の技術者が Java 8 開発から離れてその問題に対処せざるを得なくなった,と説明している。"Java プラットフォームのセキュリティを維持することは,新機能の開発よりも常に優先されます。ですから必然的に,技術者を Java 8 の開発から離さなければなりません。” さらに氏は,コードの品質向上と脆弱性削減のため,Oracle が自身の開発プロセスを "アップグレード" したことも強調している。

氏によると,延期の最大の要因は JSR 335, すなわち Project Lambda に関するものだ。このプロジェクトには Java 言語にクロージャ (あるいは "ラムダ式" ) を導入するという使命がある。"ラムダ式が間に合わなくても,関心の高い機能は他にもあります。ですが全体として見た場合,圧倒的と言えるほどの魅力に欠けることは否めません。ラムダ式なしで年内にリリースしたとしても,幅広い採用を獲得することは従って無理です。そう思いませんか?"と Reinhold 氏は断言する。

延期か範囲縮小かの選択に直面したReinhold氏は,しかしながら第3の選択肢については否定する – "スケジュールを守るために品質を犠牲にすれば,過去の月並みな過ちを繰り返すことになるのは間違いありません。不完全な言語変更やAPI設計がフィックスされてしまうと,それらの機能 – あるいはプラットフォームそれ自体 – が別の新しいものに置き換えられるまで,何年もの間,数百万という開発者たちが,その欠陥を回避する作業を余儀なくされるのです。"

2013年9月に一般公開 (GA/General Availability),という当初のスケジュールは,2014年第1四半期まで延期されることになりそうだ。Java 8 の GA が延期されたのは,これで2回目になる。Java 7 の開発が今回と同じように遅れていた頃,Java 8 はもともと 2012年末の提供を目指していた。その後,2013年9月に再び延期され,Project Jigsaw がドロップすることになった。今回の遅延は JDK 9 にも影響する。現時点では JDK 8 の提供が2014年第1四半期に,JDK 9 が2015年から2016年初めに変更される見込みだ。Reinhold 氏はこのリリースで Project Jigsaw が復活する可能性を否定している。昨年7月に InfoQ がレポートした ように,Project Jigsaw は Java 8 からすでに外されている。

残された Java 8 の機能セット を眺めれば,Java 8 を代表する機能になるのが Project Lambda であることは確実だ。

Project Lambda は,他の言語モジュールとの間に多くの調整を必要とする。中でも並行処理フレームワークとジェネリックフレームワークとは,関連性が極めて大きい。この事実は,セキュリティ上の懸念に対処するために開発リソースを転用するという,Oracle の説明の信憑性を高めることになる。

ラムダ式の導入は,2004年の Java 5 でジェネリックスが導入されて以来,Java言語の文法的変更としては最大級のものになる。

クロージャは,人気を博しつつある "関数型プログラミング" パラダイムの基本を形成する機能だ。("クロージャ(closure)" と "ラムダ式(Lambda expression)" は理論的には違うものだが,Java のコンテキストでは区別なく使用されている。)クロージャの能力が最大限に発揮できるように,関連するライブラリにもいくつかの変更が導入されている。例えば新しい Stream API は,関数型プログラミングに不可欠な,命令のパイプライン機構を提供する。また Option クラスで null の可能性のある値をラップすることによって,いくつかのケースでは null 参照チェックが不要になり,クロージャを使った開発がよりシンプルになる。

クロージャはすでに Scala や Clojure,Ruby など一般的な JVM 言語や,C# や F# (.Net ベースの代表的な関数型言語) などの .Net 言語のほとんどでサポートされている。今回の Java 言語への追加は,多くの開発者に歓迎されることになるだろう。

この記事に星をつける

おすすめ度
スタイル

BT