JavaOne 2014で見えたJavaの現在、そして未来──Javaエバンジェリストの寺田佳央が総括

Oracle Java & Developers編集部
2014-11-21 16:00:00
  • このエントリーをはてなブックマークに追加

Java SE──バージョン8の導入効果は上々。Java SE 9の仕様策定もスタート。J2SE 1.5以前のアプリケーションは早めに新版への移行を

 Javaの大いなる可能性を再確認したところで、JavaOne 2014の基調講演で紹介されたJavaの最新動向を見ていきましょう。まずJava SEについては、前述のとおり、今年3月に過去最大の改善が施されたJava SE 8がリリースされました。


※クリックすると拡大画像が見られます

 それから8カ月が経過した現在、すでに世界中で80冊以上の関連書籍が出版され、本番環境への適用も始まっています。Javaはオープンかつ透明性の高いプロセスで仕様策定が行われているため、リリースのはるか以前から新機能を確認できます。こうしたことも、早期の書籍刊行を可能にしているのでしょう。日本でも、翻訳書を中心に関連書籍の刊行が始まっています。

ゴールドマンサックスがJava SE 8のラムダ式を活用して開発コストを削減。パフォーマンスは前バージョン比で40%向上

 ご存じのとおり、Java SE 8の最大の目玉はラムダ式の導入ですが、JavaOne 2014では、早速これを導入して高い成果を得た米国ゴールドマンサックスの事例が紹介されました。

 同社は自社アプリケーションの開発に利用しているコレクション・フレームワークのユニット・テスト・プログラムにラムダ式を導入しました。具体的には、社内のコーディング標準をJava SE 8に合わせて改訂し、これまで無名内部クラスで実装してきたコードをすべてラムダ式に置き換えたとのこと。それにより、約10万5000行のテスト・コードを約9万5000行に削減したといいます。つまり、ラムダ式を使うだけで大規模なコード資産を9%も削減できたわけです。それだけでなく、コードの可読性が高まったことでテスト・コードのメンテナンス性も大きく向上しました。ゴールドマンサックスはJCPのExecutive Committeeのメンバーであり、同社のエンジニアはラムダ式の仕様を策定する段階からかかわってきました。そのことが早期導入につながったのでしょう。

 パフォーマンスについても、大きな効果が報告されました。次に示すのは、「SPECJbb2013」によるベンチマーク結果の比較です。


※クリックすると拡大画像が見られます

 図にあるとおり、Java SE 7 Update40に対してパフォーマンスが約40%向上しています。Folk/Joinの改良やAtomic変数などの導入、並列処理ライブラリの改良、最適化機構の改善などが効いているようです。開発生産性の向上だけでなく、企業のITリソースの有効活用という面でも、Java SE 8は大きく貢献するということです。

引き続きJavaのセキュリティ・パッチを年4回リリース。セキュリティ強化のためにコンスタントなバージョンアップを

 オラクルはJavaのセキュリティも重視しており、今後も力を入れて対応していきます。現在は年に4回、セキュリティを強化するためのCritical Patch Updatesをリリースしています。すでに1年後までのリリース予定が決まっていますので、このパッチはぜひ優先して適用してください。

【Java SE Critical Patch Updatesの今後の提供予定】
  • 2015年1月20日
  • 2015年4月14日
  • 2015年7月14日
  • 2015年10月20日

 なお、Java SEのアップデート・リリースには、セキュリティ脆弱性などへの緊急対応によるCritical Patch Updatesのほかに、計画的な機能追加によるアップデート・リリースがあります。それぞれのアップデート・リリースにはナンバリングのルールが定められており、Critical Patch Updatesには5の倍数が、それ以外のアップデート・リリースには20の倍数が付与されます。Java SE 8の現在の最新バージョンは2014年10月14日にリリースされたJava SE 8 Update25で、これはCritical Patch Updatesに当たります。また、その1つ前のUpdate20では、Java SE Advanced※2のユーザーが利用できる「Advanced Management Console」などの新機能が追加されていますので、Java SE Advancedユーザーの皆さんはこちらのアップデート・リリースもぜひご活用ください。


※クリックすると拡大画像が見られます

※2 オラクルが有償で提供しているJava SEの商用サポート・ライセンス。ミッション・クリティカル・システムの稼働監視や障害対応を効率化するJava Flight Recorder/Mission Controlといったツールが提供される(関連記事)。

Java SE 9で検討されていること──-source、-targetオプションのルール変更に注意!

 Java SE 8の導入が本格化しつつある一方で、Java SEの今後に関する計画も着々と進んでいます。

 まず次期バージョンのJava SE 9ですが、その仕様策定においては次のようなことが検討されています。

  • Javaのモジュール化を図る「Project Jigsaw」の導入
  • HTTP 2.0やLightweight JSONのサポート
  • クラウドに最適化されたJVMの導入
  • Java SE Advanced向けの拡張機能の提供

 Javaにどの機能を取り込むべきかは、「JEP(JDK Enhancement Proposal。JDK拡張提案)」としてOpen JDKのWebサイト内で提案されています。今、どのような提案が出されているのかを知りたい方は、このWebページを定期的にチェックしてください。

Java SE 9からJ2SE 1.5以前のアプリケーションは実行不可に!

 JEPのページを見ると、すでに多くの提案が出ていることがわかりますが、実はこの中に非常に重要なものがあります。「JEP182: Policy for Retiring javac -source and -target Options」で、これはjavacの-source、-targetオプションのルール変更に関するものです。

 Java SEでは、-sourceオプションで開発に使ったJavaのバージョンを指定し、-targetオプションで実行に使用するJavaのバージョンを指定することにより、古いバージョンで作られたプログラムを新しいJVMで動かすことができます。例えば、Java SE 8では、警告が出るものの、JDK 1.4およびそれ以前のバージョンで作られたプログラムを実行することが可能です。

 しかし、JEP182の導入が予定されているJava SE 9からは、-source、-targetオプションでJ2SE 1.5以前のバージョンを指定できなくなります。つまり動かせなくなるわけです。国内には、まだそうしたアプリケーション資産を抱えている企業が少なくないと思います。できるだけ早い時期に、新しいJava SEに移行されることを強くお勧めします。


※クリックすると拡大画像が見られます

Java SE 10以降で検討されていること

 Java SE 10以降で検討されている機能についても説明がありました。主なものに次があります。

Project Valhalla:開発者が作成したクラスにValue型という新たな型を指定したり、ジェネリクスにおいてプリミティブ型を指定したりできるようになる。ヒープ・メモリ使用量の抑制や性能向上を目的とする

Project Panama:JRubyの実装者が提案している、JVMからネーティブ・ライブラリを呼び出すためのJNI(Java Native Interface)に代わる新機能。JavaやJVM上で動くライトウェイト言語から、より簡単にプラットフォーム・ネーティブの機能を使えるようにするのが目的

Java SEのリリース・ロードマップ

 Java SEのロードマップも明らかにされました。リリース予定は次のとおりです。


※クリックすると拡大画像が見られます

 ご覧のとおり、2015年はu40、u60という2つのアップデート・リリースが計画されており、2016年にJava SE 9のリリースが予定されています。Java SE 9では、先ほど触れたJEP182の追加が計画されていますので、それも踏まえて自社のアプリケーション資産のアップデート計画をご検討ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]