【コラム】
前回はJava EEの今後の動向を紹介したので、今回はJava SEについて取り上げたい。Java 7(Java SE 7)については、この記事でJava SEチームのチーフエンジニアであるMark Reinhold氏による講演の内容を紹介している。まず最も気になるリリース時期だが、Reinhold氏によれば2010年の初めごろを予定しているとのことである。
以下では同氏の講演を含めてこれまでに明らかになっている情報を総合し、Java 7に取り込まれる新機能をまとめてみる。まず、すでにJSRを取得している仕様としては以下のものが挙げられる。
ほとんどが以前の記事でも取り上げているものだが、モジュラリティの強化についてだけは補足が必要だろう。当初、モジュラリティの強化としてはJSR 294とJSR 277の2 つのAPIが検討されていた。前者はSuperpackage、後者はJAM(Java Application Module)と書いた方がわかりやすいかもしれない。そして2008年の初めごろ、Sunは両者を統合して仕様を検討し直すと発表。事実上はJSR 277に一本化されることになった。しかしそのJSR 277は多くの問題について解決の糸口が見えないことから、Java 7への統合を見送ることが決まった。
一方OpenJDKコミュニティでは、JSR 294のエキスパートグループが中心となって、JSR 277よりも低いレイヤーにおけるモジュールシステムを構築する試みとして「Project Jigsaw」が新たに立ち上がっている。Project Jigsawの成果はJava 7に反映される予定だが、Reinhold氏によれば(リリースまでの時間が短いので)JSRとして正式に仕様化されるものではないとのことだ。
参考
JSR 166はJ2SE 5.0から導入された並列プログラミングのためのユーティリティだが、Java 7ではFork/JoinやPhasers、LinkedTransferQueue、ConcurrentReferenceHashMapなどの拡張機能が追加される予定。
JSR 292はJVM上で動作する動的言語の実装をサポートするための仕様である。その中心となるのがJVMに対するinvokedynamic命令の実装で、これによって動的に型が決まるメソッド呼び出しを容易に実現できるようになる。現在はEarly Draftが公開されており、invokedynamic命令の概要とそれを利用するためのAPIについて解説されている。また、JVM上の動的言語のためのアーキテクチャを作成する「The Da Vinci Machine Project」は、すでにOpenJDK上でinvokedynamic命令の動作に成功したことを発表している。
その他のAPIに関しては過去の記事を参照していただきたい。
参考
以下は、まだJSRを取得していないAPIや、既存APIに対する修正によって実現する予定の機能である。全てを挙げるとキリがないので、ここでは代表的なもののみピックアップしてみる。
例外のマルチキャッチとは、複数の種類の例外をひとつのcatchブロックで処理できるようにするもの。また安全な再スローとは、キャッチした例外をそのブロック内で再スローする場合にも、キャッチとスローの無限ループに陥らないようにする仕組みである。
"?"によるnullチェックとは、たとえば次のような記述でオブジェクトのnullチェックをできるようにするということらしい。これによってif文でのnullチェックを省略してプログラムをシンプルに書けるようになる。
public String getPostcode(Person person) {
return person?.getAddress()?.getPostcode();
}
またジェネリクスを使う場合により高度な型推論が行われるようになり、たとえば次のような記述が可能になるという。
Map<String, List<String>> anagrams = new HashMap<>();
おそらく多くのJava開発者が興味を持っているであろうクロージャについてだが、どうやら採用はJava 7の次のバージョンに持ち越される可能性が濃厚になってきたようだ。以下はMark Reinhold氏が挙げているJava 7に"含まれない"であろう機能の一部である。
ここにクロージャが含まれている理由は、現時点でまだ仕様が統一されていない上に、乗り越えるべき問題が多すぎるからだという。ただし依然としてクロージャを望む声も多く、またDevoxxの前週に開催されたSun Tech DaysではJames Gosling氏がクロージャを採用すべきだとの発言をしていることから、今後もまだ議論は継続しそうだ。
参考
JSR 295についても(プロパティサポートを含む)いくつかの問題が解決できないことから、議論は先のバージョンに持ち越されるとのこと。オペレータオーバーロードはC++のような無制限なものではなく、BigDecimalやコレクションを扱うための限定的な機能として提案されていたものだが、これも採用は見送られるようだ。
参考
これに加えて、前述のJSR 277やJSR 260 Javadoc Technology Update、言語レベルのXMLサポートなどといった機能も採用が見送られる予定。本連載ではほかに、JSR 303 Beans ValidationやJSR 275: Units Specification、JSR 310: Date and Time APIなどといったAPIもJava 7の新機能候補の一部として取り上げたことがあるが、これらについてはまだ確定的な情報は明らかになっていない。
正式リリースまで1年、引き続き動向をチェックしていきたい。
さて、60回に渡って続けてきた本連載も今回で終了となります。長い間ご愛読いただき、誠にありがとうございました。連載そのものは終了しますが、Javaに関する新しい動きがあった際には、その都度何らかの形で紹介していけるよう努めてまいります。今後ともどうぞよろしくお願いいたします。
提供:マイナビ
大学・大学院・短大・専門学生向けの就職情報サイト「マイナビ2010」「マイナビ2009」に今すぐ登録しよう! 大手企業からベンチャー企業までの約13,000社の企業情報を公開、エントリーが可能です。2010年卒予定の方は「マイナビ2010」に、2009年卒予定の方は「マイナビ2009」に登録してください。
毎日コミュニケーションズはプライバシーマークを取得しています。
| 【レポート】千葉高校生が快挙! 日本人初の部門最優秀賞受賞! - ISEF 2013 [11:59 5/20] |
| アシアル、モバイルアプリデベロッパー動向レポートの日本語版を公開 [11:36 5/20] |
| 【レポート】いよいよ審査! 密閉空間で1000人の審査員を迎えた代表8人--Intel ISEF 2013 [10:41 5/20] |
| Google App EngineにPHP登場 [09:22 5/20] |
| 2010年の脆弱性が2013年にも、Linux [09:20 5/20] |
|
東芝、23型の「REGZA PC D833」新デザインで1秒TV起動 - 2013年夏モデル [12:12 5/20] パソコン |
|
富士通、タブレットのカメラによる3次元ハンドジェスチャー認識技術を開発 [12:11 5/20] エンタープライズ |
|
東芝、タッチ対応「REGZA PC D813」など21.5型AVPCの2013年夏モデル [12:09 5/20] パソコン |
|
東京都・大田区で東京工科大学の学生が発案した「蒲田+デザイン」展 [12:09 5/20] クリエイティブ |
|
東芝、「dynabook REGZA PC」にハンドジェスチャ機能を搭載 - 実演動画あり [12:07 5/20] パソコン |