「Java Architecture for XML Binding」の版間の差分

削除された内容 追加された内容
最新版:2.0のMaintenance Release 3について記述
m編集の要約なし
1行目:
{{出典の明記|date=2021年6月}}
'''Java Architecture for XML Binding'''('''JAXB''')は、[[Java]]の[[クラス (コンピュータ)|クラス]]を [[Extensible Markup Language|XML]]で表現可能にする仕様である。JAXB には主に2つの機能がある。すなわち、Java の[[オブジェクト (プログラミング)|オブジェクト]]を XML に[[シリアライズ]]することと、逆に XML から Java オブジェクトにデシリアライズすることである。言い換えれば、JAXB [[記憶装置|メモリ]]上のデータを XML 形式に変換して保存することができ、そのためにプログラム内の各クラスにXMLロード/セーブルーチンを実装する必要がない。
 
JAXB は仕様が複雑で頻繁に変更される場合に特に便利である。その場合、Java の定義の変更に合わせて [[XML Schema]] の定義を更新することは、時間もかかるし[[バグ]]を作りこみやすい作業となる。
 
JAXB [[Java Platform, Enterprise Edition|JavaJakarta EE]] [[アプリケーションプログラミングインタフェース|API]] の一種であり、[[Java Web Services Development Pack]] (JWSDP) の一部でもある。[[Web Services Interoperability Technology|WSIT]] の基盤の一部にもなっている。JAXB Java SE version 1.6 にも含まれている。
 
JAXB 1.0 は、[[Java Community Process]] JSR 31 において2003年に開発された。続いて2006年、JAXB 2.0 JSR 222 において開発され、2017年9月にMaintenance Release 3がリリースされている<ref>{{cite news|title = The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 222|url =https://jcp.org/en/jsr/detail?id=222 | accessdate = 2019-2-16}}</ref>。[[リファレンス実装]]は java.net に[[CDDL]]ライセンスで公開されている。
 
== 利用 ==
"xjc" ツールは、[[XML Schema]]や他のスキーマファイル形式(Java 1.6 では、[[RELAX NG]]、XML [[Document Type Definition|DTD]] が実験的にサポートされている)をクラス表現に変換するのに使われる。クラス群は、javax.xml.bind.annotation.* の名前空間(例えば @XmlRootElement @XmlElement)から[[アノテーション]]を使ってマークアップされる。XML リストシーケンスは、java.util.List の属性を使って表現される。マーシャルとアンマーシャルを行うコードは JAXBContext のインスタンスを通して生成される。
 
さらに、JAXB には "schemagen" ツールがある。これは基本的に "xjc" の逆を行うもので、アノテーション付きのクラス群のコードから XML Schema を生成する。
 
== データ型の既定バインディング ==
Java のデータ型の種類は XML Schema のものより豊富である。以下の表は JAXB において、XML のデータ型をどのように Java のデータ型にマッピングしているかを示したものである。
 
{| class="wikitable" style="font-size: 100%; text-align: left; width: 35%;"
|-
! XML Schema
! Java データ型
|-
|xsd:string
98 ⟶ 99行目:
 
== 関連項目 ==
* [[XMLBeans]] – [[Apacheソフトウェア財団]]による JAXB と類似・関連する技術
 
== 参考文献 ==
{{参照方法|date=2021年6月|section=1}}
* [http://www.devx.com/Java/Article/34069 Generate an XML Document from an Object Model with JAXB 2]
 
106 ⟶ 108行目:
* [https://jaxb.dev.java.net/ JAXB home page] on Project [[GlassFish]]
* [http://java.sun.com/xml/jaxb/index.jsp 従来の JAXB home page]
* [http://ws.apache.org/jaxme/ JaxMe] – [[Apacheソフトウェア財団]]による JAXB の[[オープンソース]]実装
* [http://www.eclipse.org/eclipselink/ EclipseLink MOXy] – [[Eclipse Foundation]]による JAXB の[[オープンソース]]実装
* [http://www.jcp.org/en/jsr/detail?id=222 JSR 222] (JAXB 2.0)
* [http://www.jcp.org/en/jsr/detail?id=31 JSR 31] (JAXB 1.0)