Введение
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.
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 Java 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 JEP 320. JAXB 1.0 was released in 2003, having been developed under the Java Community Process as JSR 31. In 2006 JAXB 2.0 was released under JSR 222 and Maintenance Release 2 released in December 2009. Reference implementations for these specifications were available under the CDDL open source license at 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)
Java SE 8: JAXB 2.2.8
Java SE 7: JAXB 2.2.3 (JSR 222, maintenance release 2)
Java SE 6: JAXB 2.0 (JSR 222)