JAXB(
Java Architecture for XML Binding)は、
JavaのクラスをXMLで表現するための仕様です。この仕様により、
JavaオブジェクトとXMLデータの間で、データの変換と交換が容易に行えるようになります。具体的には、JAXBには主に二つの機能があります。
1.
マーシャリング(シリアライズ): JavaオブジェクトをXML形式に変換する機能です。メモリ上の
JavaオブジェクトをXML形式のデータとして保存したり、ネットワークを介して転送したりすることが可能になります。これにより、アプリケーション内で扱うデータをXML形式で外部とやり取りする際に、複雑な処理を記述する必要がなくなります。
2.
アンマーシャリング(デシリアライズ): XML形式のデータを
Javaオブジェクトに変換する機能です。XMLデータから
Javaオブジェクトを復元することで、外部から受け取ったXMLデータをアプリケーション内で利用できるようになります。
JAXBの利用は、特にXMLスキーマが頻繁に変更される場合に有効です。
Javaクラスの定義変更に合わせてXMLスキーマを更新する作業は、手間がかかり、エラーが発生しやすいためです。JAXBを使用することで、このような保守作業を効率化し、開発時の負担を軽減することができます。
JAXBの概要
Jakarta EE APIの一部: JAXBは
Jakarta EEのAPIの一部として提供されており、
Java Web Services Development Pack (JWSDP)にも含まれています。また、WSIT(Web Services Interoperability Technologies)の基盤としても利用されています。
Java SE 6以降のバージョンでは、標準APIとして組み込まれています。
JAXBの歴史: JAXBは、
Java Community Process (JCP) を通じて開発されてきました。JAXB 1.0はJSR 31で2003年に開発され、その後2006年にはJSR 222でJAXB 2.0が開発されました。2017年9月には、JAXB 2.0のMaintenance Release 3がリリースされています。JAXBの
リファレンス実装は、CDDLライセンスでjava.netにて公開されています。
JAXBの利用方法
JAXBは、主に以下のツールと
アノテーションを利用して、
JavaオブジェクトとXMLデータの相互変換を行います。
xjcツール: XMLスキーマ(XSD)や他のスキーマファイル形式(
Java 1.6では、
RELAX NG、XML DTDが実験的にサポート)から、
Javaクラスを生成するツールです。生成されたクラスには、javax.xml.bind.annotation名前空間の
アノテーション(例:@XmlRootElementや@XmlElement)が付与されます。XMLのリスト構造は、java.util.List型の属性で表現されます。
schemagenツール: xjcツールの逆で、
アノテーションが付与された
JavaクラスからXMLスキーマを生成するツールです。
JAXBContextクラス: マーシャリングとアンマーシャリングの処理を実行する際に、JAXBContextクラスのインスタンスを利用します。このインスタンスを通じて、
JavaオブジェクトとXMLデータの相互変換を行うためのコードが生成されます。
データ型の既定バインディング
Javaのデータ型は、XMLスキーマのデータ型よりも豊富です。JAXBでは、XMLスキーマのデータ型が
Javaのデータ型にマッピングされます。例えば、XMLの`xs:string`型は
Javaの`java.lang.String`型にマッピングされるなどのルールが定められています。
関連技術
JAXBと関連する技術として、以下のものがあります。
XMLBeans: Apacheソフトウェア財団が開発した、JAXBと類似した技術です。XMLデータを
Javaオブジェクトとして扱うためのフレームワークを提供しています。
参考文献・外部リンク
Generate an XML Document from an Object Model with JAXB 2
JAXB home page on Project GlassFish
従来の JAXB home page
JaxMe – Apacheソフトウェア財団によるJAXBのオープンソース実装
EclipseLink MOXy – Eclipse FoundationによるJAXBのオープンソース実装
JSR 222 (JAXB 2.0)
JSR 31 (JAXB 1.0)
JAXB chapter of the Java EE 5 Tutorial
*
JAXB Wizard
JAXBは、XMLデータと
Javaオブジェクトの変換を効率化する強力なツールです。Webサービスやエンタープライズアプリケーション開発において、XMLベースのデータ交換を容易にするために広く利用されています。