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のデータ型にマッピングしているかを示したものである。

 XML Schema型 Javaデータ型xsd:string 	java.lang.String xsd:integerjava.math.BigInteger xsd:intint xsd:long 	long xsd:short 	short xsd:decimal 	java.math.BigDecimal xsd:float 	float xsd:double 	double xsd:boolean 	boolean xsd:byte 	byte xsd:QName 	javax.xml.namespace.QName xsd:dateTime 	javax.xml.datatype.XMLGregorianCalendar xsd:base64Binary 	byte[] xsd:hexBinary 	byte[] xsd:unsignedInt 	long xsd:unsignedShort 	int xsd:unsignedByte 	short xsd:time 	javax.xml.datatype.XMLGregorianCalendar xsd:date 	javax.xml.datatype.XMLGregorianCalendar xsd:g 	javax.xml.datatype.XMLGregorianCalendar xsd:anySimpleType 	java.lang.Object xsd:anySimpleType 	java.lang.String xsd:duration 	javax.xml.datatype.Duration xsd:NOTATION 	javax.xml.namespace.QName

 脚注 

 関連項目 
 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

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