進化したJAXB 2.0でJavaからXMLを操作する

文:Peter V. Mikhalenko(special to TechRepublic)  翻訳校正:原井彰弘
2007-12-17 19:09:01
  • このエントリーをはてなブックマークに追加
最新特集【一覧】

 Java Architecture for XML Binding (JAXB) 1.0によって、JavaアプリケーションからXMLコンテンツを操作することはより簡単になった。

 JAXBを用いると、XMLドキュメントのXSDスキーマをもとにしてXMLからJavaBeansオブジェクトへのバインディングが行えるようになり、Javaプログラマが簡単かつ自然な方法でXMLを扱えるようになるのである。JAXBはすでに大規模で著名なスキーマの処理にも用いられており、正しく動作することが確認されている。

 JAXB 2.0では新機能が追加され、より多様な環境のもとでJAXBアプリケーションの開発やデプロイが行えるようになった。一方で、JAXB 2.0はJAXB 1.0と後方互換性もあり、過去に開発されたアプリケーションを利用することも可能になっている。

JAXB 2.0のセットアップ方法

 JAXB 2.0の実装はJava Web Services Developer Pack (Java WSDP) 2.0に含まれている。そのため、JAXB 2.0を利用するにはまずJava WSDP 2.0をダウンロードする必要がある。また、JAXB 2.0では(JDK 5.0の新機能である)ジェネリクスが用いられている。従って、JDK 5.0がインストールされていない場合はインストールする必要がある。

JAXB 2.0の新機能

 JAXBの最新バージョンには、XMLドキュメントのマーシャリングおよびアンマーシャリングを補助する機能が新たに加えられている。XMLドキュメントのマーシャリングとは、XMLスキーマをもとに生成したJavaのクラスを用いて、XMLドキュメントを作成することである。一方、アンマーシャリングとは、XMLドキュメントをJavaでの表現形式に変換し、要素や属性値を取得することを意味する。

 JAXB 2.0では、JavaのオブジェクトをXMLドキュメントやXMLスキーマに変換することが可能になる。それ以外にも、JAXB 2.0には以下のような新機能や利点がある。

  • 実行時に必要とされるライブラリのサイズが小さくなり、その結果メモリの消費量も減少した
  • スキーマから生成されるJavaのクラスの数が、JAXB 1.0と比較して大きく減らされた。たとえば、トップレベルのcomplexTypeに関しては、今まではインタフェースと実装クラスが生成されたが、JAXB 2.0では値クラスが生成される。また、トップレベルの各要素に関しても、今まではインタフェースと実装クラスが生成されていたが、JAXB 2.0ではFactoryクラスメソッドが生成されるようになっている
  • XMLスキーマに完全対応した
  • ジェネリクスに対応した
  • JAXP 1.3の妥当性検証機能によって置き換えられたため、UnMarshallerインタフェースのsetValidating()メソッドが非推奨になった
  • javax.xml.bind.annotationパッケージを用いたJavaからXMLへのバインディング機能がサポートされた

JAXB 2.0の動作メカニズム

 JAXB 2.0を用いたXMLドキュメントの処理方法を理解するために、ここでは「バインディングコンパイラ」と「バインディングランタイムフレームワーク」について注目しよう。これら2つのコンポーネントはJAXBの中核となっており、バインディングコンパイラはXMLスキーマからJavaクラス群を生成する役割を、一方バインディングランタイムフレームワークはマーシャリングやアンマーシャリング、妥当性検証の役割を担っている。

バインディングコンパイラ

 JAXBバインディングコンパイラ(xbj)を用いると、XMLスキーマからJavaのクラスを生成することが可能になる。XMLスキーマが、その構造に合致するJavaのクラス群に変換されるのである。この変換の際、各クラスにはXMLスキーマとの対応を示すJAXBアノテーションが付加され、一致したXMLドキュメントの処理を行う場合にランタイムフレームワークによって利用される。

 また、マーシャリング機能とアンマーシャリング機能は、XMLデータをJavaのオブジェクトとして簡単に操作できる機能を提供する。これらの機能を用いると、Simple API for XML Processing(SAX)やDocument Object Model(DOM)はもちろんのこと、XMLスキーマの細かい仕様すら理解していなくてもXMLデータを操作できるようになる。

 次ページに示すのは、サンプルのXMLドキュメントである。これから、このドキュメントを例に処理を行う方法を説明する。

  • 新着記事
  • 特集
  • ブログ