【コラム】
前回は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」に登録してください。
毎日コミュニケーションズはプライバシーマークを取得しています。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【ネタバレもありの徹底解明コラム】『サザエさん』タマの意外な事実 [17:30 5/27] ホビー |
|
鍼灸(しんきゅう)師が教える。オフィスで口臭予防ツボ・ベスト3 [17:00 5/27] キャリア |
|
[梶浦由記]米「アニメ・エキスポ」に2度目の参加決定 [17:00 5/27] ホビー |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第107回 今回のお題は…「chemical」 [17:00 5/27] キャリア |
|
[乃木坂46]キャプテン桜井が“ライバル”AKB総選挙予想 1位まゆゆ、2位はさしこ、3位たかみな [16:58 5/27] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。