【コラム】
前回は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」に登録してください。
毎日コミュニケーションズはプライバシーマークを取得しています。
| 東大、ウイルスとバクテリアの重複感染が重篤症状になる仕組みの一部を解明 [18:51 5/21] |
| JAXA、準天頂衛星初号機「みちびき」がとらえた日食による月の影を公開 [18:15 5/21] |
| JAEA、水溶液中における四価セリウム(Ce(IV))の溶存錯体の化学構造を解明 [17:49 5/21] |
| JAXA、太陽観測衛星「ひので」が撮影した部分日食のX線画像・動画を公開 [17:45 5/21] |
| Freescale、車載パワートレイン向けマルチコアMCU「Qorivva」を発表 [16:50 5/21] |
|
ボーズ、ノイズキャンセル搭載「QuietComfort 3」のiOSリモコン付属モデル [01:01 5/22] 家電 |
|
[花咲くいろは]温泉街舞台の人気アニメが劇場版に 12年度に [00:00 5/22] ホビー |
|
[東京スカイツリー]初日20万人を想定 きょうオープン [00:00 5/22] エンタメ |
|
【インタビュー】凛「頑張ることはカッコ悪いことじゃない」 - TVアニメ『カードファイト!! ヴァンガード』新EDテーマ「情熱イズム」 [00:00 5/22] ホビー |
|
ジェイ・Z、バラク・オバマ大統領に自身のライブ・イベント出演を要請か [23:34 5/21] エンタメ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。