Введение

Jakarta XML Binding (JAXB; ранее Java Architecture for XML Binding) – это программный фреймворк, позволяющий разработчикам Java EE сопоставлять Java-классы с XML-представлениями. JAXB предоставляет две основные функции: возможность сериализации Java-объектов в XML и обратную операцию – десериализацию XML обратно в Java-объекты. Иными словами, JAXB позволяет хранить и извлекать данные в памяти в любом формате XML, без необходимости реализации специфических процедур загрузки и сохранения XML для структуры классов программы. Это аналогично xsd.exe и XmlSerializer в .NET Framework. JAXB особенно полезен, когда спецификация сложная и подвержена изменениям. В таких случаях регулярное изменение определений XML-схем для поддержания их синхронизации с определениями Java может быть трудоемким и чреватым ошибками. JAXB является одним из API в платформе Java EE (ранее Java EE), частью Java Web Services Development Pack (JWSDP) и одним из основополагающих компонентов WSIT. Он также входил в состав платформы Java SE (в версиях Java SE 6–10). Начиная с Java SE 11, JAXB был исключен. Подробности см. в JEP 320. JAXB 1.0 был выпущен в 2003 году и разработан в рамках Java Community Process как JSR 31. В 2006 году JAXB 2.0 был выпущен под JSR 222, а Maintenance Release 2 – в декабре 2009 года. Эталонные реализации этих спецификаций были доступны под лицензией открытого исходного кода CDDL на java.net.

Использование

Инструмент "" может быть использован для преобразования XML-схемы и других типов файлов схем (начиная с Java 1.6, RELAX NG, XML DTD и WSDL поддерживаются экспериментально) в представления в виде классов. Классы помечаются с использованием аннотаций из пространства имен, например, , а последовательности XML-списков представляются атрибутами типа . Marshallers и Unmarshallers создаются посредством экземпляра JAXBContext. Кроме того, JAXB включает в себя инструмент "", который по сути выполняет обратную операцию "", создавая XML-схему из набора классов, снабженных аннотациями.

Ограничения по умолчанию типа данных

В таблице ниже приведено сопоставление типов данных XML Schema (XSD) и типов данных Java в JAXB. XML Schema Type Java Data Typexsd:stringjava.lang.Stringxsd:integerjava.math.BigIntegerxsd:positiveIntegerjava.math.BigIntegerxsd:intintxsd:longlongxsd:shortshortxsd:decimaljava.math.BigDecimalxsd:floatfloatxsd:doubledoublexsd:booleanbooleanxsd:bytebytexsd:QNamejavax.xml.namespace.QNamexsd:dateTimejavax.xml.datatype.XMLGregorianCalendarxsd:base64Binarybyte[]xsd:hexBinarybyte[]xsd:unsignedIntlongxsd:unsignedShortintxsd:unsignedByteshortxsd:unsignedLongjava.math.BigDecimalxsd:timejavax.xml.datatype.XMLGregorianCalendarxsd:datejavax.xml.datatype.XMLGregorianCalendarxsd:gjavax.xml.datatype.XMLGregorianCalendarxsd:anySimpleTypejava.lang.Objectxsd:anySimpleTypejava.lang.Stringxsd:durationjavax.xml.datatype.Durationxsd:NOTATIONjavax.xml.namespace.QName

Версии

Java SE 9: JAXB 2.3.0 (в модуле java.xml.bind; этот модуль помечен как устаревший)
Java SE 8: JAXB 2.2.8
Java SE 7: JAXB 2.2.3 (JSR 222, выпуск технической поддержки 2)
Java SE 6: JAXB 2.0 (JSR 222)