Jakarta XML Binding

{{Short description|Java EE software framework}}

{{Infobox software |website = {{Official URL}} |programming language = Java}}

Jakarta XML Binding (JAXB; formerly Java Architecture for XML Binding) is a software framework that allows Java EE developers to map Java classes to XML representations. JAXB provides two main features: the ability to marshal Java objects into XML and the inverse, i.e. to unmarshal XML back into Java objects. In other words, JAXB allows storing and retrieving data in memory in any XML format, without the need to implement a specific set of XML loading and saving routines for the program's class structure. It is similar to xsd.exe and XmlSerializer in the .NET Framework.

JAXB is particularly useful when the specification is complex and changing. In such a case, regularly changing the XML Schema definitions to keep them synchronised with the Java definitions can be time-consuming and error-prone.

JAXB is one of the APIs in the Jakarta EE platform (formerly Java EE), part of the Java Web Services Development Pack (JWSDP), and one of the foundations for WSIT. It was also part of the Java SE platform (in version Java SE 6–10). As of Java SE 11, JAXB was removed. For details, see [http://openjdk.java.net/jeps/320 JEP 320].

JAXB 1.0 was released in 2003, having been developed under the Java Community Process as JSR 31.{{cite web |url=http://jcp.org/en/jsr/detail?id=031 |title=JSRs: Java Specification Requests. JSR 31: XML Data Binding Specification |access-date=2011-02-15}} In 2006 JAXB 2.0 was released under JSR 222 and Maintenance Release 2 released in December 2009.{{cite web |url=http://jcp.org/en/jsr/detail?id=222 |title=JSRs: Java Specification Requests. JSR 222: Java Architecture for XML Binding (JAXB) 2.0 |access-date=2011-02-15}} Reference implementations for these specifications were available under the CDDL open source license at java.net.

Usage

The tool "{{mono|xjc}}" can be used to convert XML Schema and other schema file types (as of Java 1.6, RELAX NG, XML DTD, and WSDL are supported experimentally) to class representations.{{cite web |url=http://download.oracle.com/javase/6/docs/technotes/tools/share/xjc.html |title=xjc - Java Architecture for XML Binding |access-date=2011-02-15}} Classes are marked up using annotations from {{mono|javax.xml.bind.annotation.*}} namespace, for example, {{mono|@XmlRootElement}} and {{mono|@XmlElement}}. XML list sequences are represented by attributes of type {{mono|java.util.List}}. Marshallers and Unmarshallers are created through an instance of JAXBContext.

In addition, JAXB includes a "{{mono|schemagen}}" tool that can essentially perform the inverse of "{{mono|xjc}}", creating an XML Schema from a set of annotated classes.

Default data type bindings

The table below lists the mappings of XML Schema (XSD) data types to Java data types in JAXB.

{{cite web

| url = http://download.oracle.com/docs/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908

| title = Using JAXB Data Binding: Standard Data Type Mapping

}}

class="wikitable sortable" style="font-size: 100%; text-align: left; width: 35%;"
XML Schema Type

! Java Data Type

xsd:string

|java.lang.String

xsd:integer

|java.math.BigInteger

xsd:positiveInteger

|java.math.BigInteger

xsd:int

|int

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:unsignedLong

|java.math.BigDecimal

xsd:time

|javax.xml.datatype.XMLGregorianCalendar

xsd:date

|javax.xml.datatype.XMLGregorianCalendar

xsd:g

|javax.xml.datatype.XMLGregorianCalendar

xsd:anySimpleTypefor xsd:element of this type

|java.lang.Object

xsd:anySimpleTypefor xsd:attribute of this type

|java.lang.String

xsd:duration

|javax.xml.datatype.Duration

xsd:NOTATION

|javax.xml.namespace.QName

Versions

  • Java SE 9: JAXB 2.3.0 {{cite web |url=https://javaee.github.io/jaxb-v2/doc/user-guide/release-documentation.html#deployment-which-jaxb-ri-is-included-in-which-jdk |title=Which JAXB RI is included in which JDK?}} (in module java.xml.bind; this module is marked as deprecated {{cite web |url=https://docs.oracle.com/javase/9/docs/api/java.xml.bind-summary.html |title=Deprecated module java.xml.bind}})
  • Java SE 8: JAXB 2.2.8 {{cite web |url=https://java.net/jira/browse/JAXB/fixforversion/16521 |archive-url=https://web.archive.org/web/20150512171511/https://java.net/jira/browse/JAXB/fixforversion/16521 |url-status=dead |archive-date=May 12, 2015 |title=Jaxb 2.2.8 (JDK 8) |access-date=2015-03-01 }}
  • Java SE 7: JAXB 2.2.3 (JSR 222, maintenance release 2) {{cite web |url=http://docs.oracle.com/javase/7/docs/technotes/guides/xml/enhancements.html |title=Java SE 7: Java XML Technology Enhancements | access-date=2012-03-21}}
  • Java SE 6: JAXB 2.0 (JSR 222) {{cite web |url=http://www.oracle.com/technetwork/java/javase/features-141434.html |title=Java SE 6: Features and Enhancements | access-date=2012-03-21}}

See also

References

{{reflist|2}}

=Articles=

  • [http://www.techrepublic.com/blog/software-engineer/jaxb-20-offers-improved-xml-binding-in-java/ JAXB 2.0 offers improved XML binding in Java]
  • [http://ibm.co/2kt0SvB XML and Java technologies: Data binding, Part 2: Performance]

{{Jakarta EE}}

{{DEFAULTSORT:Xml Binding Architecture}}

Category:Java API for XML

Category:Java specification requests