Java Architecture for XML Binding

Java Architecture for XML Binding（JAXB）は、Javaのクラスを XMLで表現可能にする仕様である。JAXBには主に2つの機能がある。すなわち、JavaのオブジェクトをXMLにシリアライズすることと、逆にXMLからJavaオブジェクトにデシリアライズすることである。言い換えれば、JAXBはメモリ上のデータをXML形式に変換して保存することができ、そのためにプログラム内の各クラスにXMLロード/セーブルーチンを実装する必要がない。

JAXBは仕様が複雑で頻繁に変更される場合に特に便利である。その場合、Javaの定義の変更に合わせてXML Schemaの定義を更新することは、時間もかかるしバグを作りこみやすい作業となる。

JAXBはJakarta EEのAPIの一種であり、Java Web Services Development Pack (JWSDP) の一部でもある。WSITの基盤の一部にもなっている。JAXBはJava 1.6にも含まれている。

JAXB 1.0は、Java Community ProcessのJSR 31において2003年に開発された。続いて2006年、JAXB 2.0がJSR 222において開発され、2017年9月にMaintenance Release 3がリリースされている。リファレンス実装はjava.netにCDDLライセンスで公開されている。

利用 
"xjc" ツールは、XML Schemaや他のスキーマファイル形式（Java 1.6では、RELAX NG、XML DTD が実験的にサポートされている）をクラス表現に変換するのに使われる。クラス群は、javax.xml.bind.annotation.* の名前空間（例えば@XmlRootElementや@XmlElement）からアノテーションを使ってマークアップされる。XMLリストシーケンスは、java.util.Listの属性を使って表現される。マーシャルとアンマーシャルを行うコードはJAXBContextのインスタンスを通して生成される。

さらに、JAXBには "schemagen" ツールがある。これは基本的に "xjc" の逆を行うもので、アノテーション付きのクラス群のコードからXML Schemaを生成する。

データ型の既定バインディング 
Javaのデータ型の種類はXML Schemaのものより豊富である。以下の表はJAXBにおいて、XMLのデータ型をどのようにJavaのデータ型にマッピングしているかを示したものである。

脚注

関連項目 
 XMLBeans – Apacheソフトウェア財団によるJAXBと類似・関連する技術

参考文献 

 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

Javaプラットフォーム
Java specification requests
長大な項目名