【レポート】

リリースまで1年、Java SE 6"Mustang"の概要を一足早く把握する

杉山貴章  [2005/08/16]

6月に行われたJavaOneカンファレンスにおいて、Sun MicrosystemsはJavaプラットフォームの次期バージョンであるMustang(Java SE 6: Java Platform, Standard Edition 6)を2006年の夏頃にリリースすると発表した。まだ1年も先のことになるが、Mustangの新機能や変更点などについてはすでにかなりの部分が明らかになってきている。本記事では、現段階で公開されている情報を元にMustangの概要を解説する。

Mustangついては、JSR(Java Specification Requests) 270として仕様の策定が進められている。ただしこれはアンブレラJSRであるため、定められているのはどのAPIを取り込むかということであり、個々のAPIについての具体的な部分はそれぞれのJSRで規定される。

Mustangの掲げる主な目標は以下の点にある。

  • 互換性と安定性および品質の向上
  • Easy of Developmentの実現
  • WebサービスおよびXMLサポート機能の拡張
  • リソース管理や診断機能の強化
  • デスクトップ環境の強化

ここでは具体的にどのようなAPIの導入や機能の拡張が行われる予定なのかを紹介していきたい。

言語仕様/コアライブラリの変更

MustangではJavaクラスファイルのフォーマットが若干変更される。新しい仕様についてはJSR 202で策定中であり、この変更にはクラスファイルサイズの上限アップやクラスリテラルの追加などが含まれる。また、Java MEのようにクラスのベリフィケーションが分離できるようになる。

コアライブラリについてはJ2SE 1.5のときのような大きな変更は行われない予定である。細かなクラスの追加やバグの修正などのアップデートは行われるが、パッケージレベルの追加や削除などはないということである。

Easy of Developmentの実現

Mustangには、EoD( Easy of Development )を実現するためにツールの作成などをサポートする数々のAPIが追加される予定である。その代表的なものがJavaアプリケーションからJavaプログラムをコンパイルするための機能を提供するJava Compiler API(JSR 199)や、アノテーションプロセッサ作成する機能を含むPluggable Annotation Processing API(JSR 269)である。

またjavadocについても仕様が変更され、いくつかの新しいカテゴリが導入される。これはAPIの規模がjavadocが作成された当初に想定していたよりも巨大になっている現状を踏まえての修正であり、JSR 260として策定が進められている。

さらにMustangではスクリプト言語のサポートも強化される。具体的には、Mozilla RhinoベースのJavaScriptエンジンを実装することによってJavaプログラムJavaScriptを埋め込むことができるようになる(JSR 223)

WebサービスおよびXMLサポート機能の拡張

MustangではXML技術をベースとしたWebサービス機能の大幅な強化を目指している。その核となるのがJAXB(Java Architecture for XML Binding) 2.0およびJAX-WS(Java API for XML-Based RPC) 2.0のサポートである。

JAXB 2.0はJSR 222で仕様が策定されているXMLデータとJavaオブジェジェクトをマップするためのバインディング技術で、JAXB 1.0(JSR 31)の後継バージョンにあたる。JAXB 2.0ではJavaからXML Schemaへのバイディングをサポートしているため、JavaとXMLとのラウンドトリップが可能になるなどの利点がある。JAX-WS 2.0はJAX-RPC 1.0(JSR 101)の後継にあたるXMLベースでRPCを中心としたWebサービスをサポートするAPIで、JSR 224として標準化されている。JAXB 2.0ベースのデータバインディングやSOAP 1.2、WSDL 2.0、WS-I Basic Profile 1.1のサポート、WebServiceメタデータ(JSR 181)のサポートなどがその主な特徴といえる。

またこれらのAPIに関連して、XML電子署名サービスのためのAPI(JSR 105: XML Digital Signature APIs)やXMLファイルにJavaプログラムからストリーム経由でアクセスするためのAPI(JSR 173: Streaming API for XML)などもサポートすることになる。

その他、データベース技術関連の変更としてJDBC(Java Database Connectivity)の次期バージョンであるJDBC 4.0も導入される予定である。JDBC 4.0ではJDBCドライバの自動認識のサポートや新しいアノテーションやインタフェースの追加、SQL2003仕様のサポートなどが行われるため、より容易にDBMSとの連携が行えるようになる(JSR 221)

リソース管理機能の強化

XML/Webサービス関連機能と並んでMustangの目玉とされているのがリソース管理機能の強化であり、その核となるのがJMX(Java Management Extensions)の拡張である。JMX自身はJ2SE 5.0でもサポートされており、MustangではマイナーバージョンアップされたJMX 1.3が採用される。JMX 1.3では主に次の機能が新たに追加される予定である。

  • JMX Monitor API: プリミティブ型やStringクラス以外に、CompositeData中の特定のプロパティをモニタできる
  • MBean拡張メタデータ: MBeanのプロパティやノティフィケーションのDescriptorを記述できる
  • ユーザ定義MXBean: アプリケーション独自のMXBeanを定義できる。

なお、JMXの次期バージョンであるJMX 2.0(JSR 255)はDolphin(Java SE 7)で導入される予定になっている。

デスクトップ環境の強化

デスクトップ環境の強化についても特筆すべき点が多い。最も注目されているのが次期MS WindowsであるWindows Vista(開発コードLonghorn)のサポートである。例えばVistaのネイティブ・ルックアンドフィールであるAvalonの利用や、.NET CLR(Common Language Runtime)との共存が可能になるという。

JFC/Swing(Java Foundation Classes/Swing)に対する拡張として代表的なものは、ルックアンドフィールのアップグレードであり、先述のAvalonの他、GTKなどもサポートされるようになる。これらのルックアンドフィール使用時には、コンポーネントのレンダリングにネイティブのAPIを使用することになる。例えばAvalonの描画はWindowsのレンダリングエンジンを、GTKの場合にはGTKの提供するレンダリングエンジンを使用する。

レイアウトに関しては、レイアウトマネージャ使用時にコンポーネントのベースラインおよびコンポーネント間の距離を適切に取得できるように拡張される。これによってより適切なレイアウトを構成できるようになる。その他、よりダブルバッファリングの実装の改良や、ドラッグ・アンド・ドロップをより簡単に利用できるようにするなどの変更も加えられる。また、これらの変更を反映させたサンプルプログラムも新たに追加される。

Java2D APIについては、まずレンダリングの高速化のためにOpenGLやDirectXのパイプライン処理を見直しが行われる。またWindowsのネイティブコードに関しては、より効果的にDirect3Dを利用することでパフォーマンスが向上されるように修正される。

国際化関連のAPIについても変更が行われる。まず、新たにいくつかのロケールが追加される。日本語関連ではja_JP_JPという和暦のためのロケールが追加され、それに伴ってCalendarクラスが和暦をサポートするようになる。また、今後はロケールデータとしてCLDR(Common Locale Data Repository)が使用されるということである。その他、ロケール依存のクラスが拡張できるようにLocale Sensitive Services SPIが追加される。

その他の新機能

Mustangからは新しいアノテーションとして@SuppressWarningアノテーションが追加される。これはWarningを抑制する機能を持つ。

付属のツールについては、J2SE 5.0に付属しているJConsoleやJStackがより使い易く改良されるということである。またJVM Tool Interfaceについても機能が拡張される。その他、SolarisのDynamic Tracing(DTrace)をサポートし、DTraceからJVMの情報にシームレスにアクセスできるようになる。

インストーラの改善やJava Plug-inおよびJava Web Startソフトウェア関連の機能に対する拡張なども含まれている。特にJava Plug-in/Java Web Startではセキュリティ機能の強化やMozilla Firefoxブラウザのサポートなどが行われる。これによってよりJavaの実行環境の導入をより簡易に行うことができる。

まとめ

MustangではJ2SE 5.0のときのような大規模な仕様の変更は行われないが、非常に多くのAPIが追加されることになる。標準APIが豊富だという点は古くからJavaの特徴の一つとして数えられてきたが、Mustangではそれがさらに充実していくことになるだろう。利用できるAPIが増えればアプリケーション開発にかかるコストは削減でき、実装方法にも幅が出る。一方でAPIの巨大化により全貌を把握するのが困難になるという問題もあるため、早い段階でMustangの新機能を予習してリリースに備えておきたい。

Mustangの仕様は依然として策定中の段階であり、今後も多くの変更が加えられる可能性がある。Mustangの開発に関する最新情報はプロジェクトサイトから入手することができる。ここでは具体的な作業状況や最新のスナップショットも公開されている。今からリリースが待ち遠しいというユーザは、一足早く新機能を試してみるといいだろう。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

    求人情報

    人気記事

    一覧

    イチオシ記事

    新着記事

    特別企画

    一覧

    転職ノウハウ

    あなたの仕事適性診断

    4つの診断で、自分の適性を見つめなおそう!

    Heroes File ~挑戦者たち~

    働くこと・挑戦し続けることへの思いを綴ったインタビュー

    はじめての転職診断

    あなたにピッタリのアドバイスを読むことができます。

    転職Q&A

    転職に必要な情報が収集できます

    スカウト転職する

    企業からアプローチのメッセージが届きます。