JAXB

Java Architecture for XML Binding (JAXB) permite a los desarrolladores Java asignar clases de Java a representaciones XML. JAXB proporciona dos características principales: la capacidad de serializar las referencias de objetos Java a XML y la inversa, es decir, deserializar XML en objetos Java. En otras palabras, JAXB permite almacenar y recuperar datos en memoria en cualquier formato XML, sin la necesidad de implementar un conjunto específico de rutinas de carga y guardado de XML para la estructura de clases del programa. Es similar a xsd.exe y XmlSerializer en .NET Framework.

JAXB es particularmente útil cuando la especificación es compleja y cambiante. En tal caso, cambiar regularmente las definiciones de XML Schema para mantenerlas sincronizadas con las definiciones de Java puede llevar mucho tiempo y ser propenso a errores.

JAXB es una parte de la plataforma Java SE y una de las APIs de la plataforma Java EE, y es parte del Java Web Services Development Pack (JWSDP). También es uno de los fundamentos para WSIT. JAXB es parte de la versión 1.6 SE.

JAXB 1.0 fue desarrollado bajo el Java Community Process como JSR 31.[1]​ A fecha de 2006, JAXB 2.0 está siendo desarrollado bajo JSR 222.[2]​ Las implementaciones de referencia para estas especificaciones están disponibles bajo la licencia de código abierto CDDL en java.net.

Uso

La herramienta "xjc" se puede utilizar para convertir un XML Schema y otros tipos de archivo de esquemas (en Java 1.6, RELAX NG, XML DTD y WSDL son compatibles experimentalmente) a representaciones de clase.[3]​ Las clases son marcadas usando anotaciones del espacio de nombres javax.xml.bind.annotation.*, por ejemplo, @XmlRootElement y @XmlElement. Las secuencias de listas XML se representan con atributos de tipo java.util.List. Los serializadores y deserializadores se crean a través de una instancia de JAXBContext.

Además, JAXB incluye la herramienta "schemagen" que en esencia puede llevar a cabo la inversa de "xjc", creando un XML Schema a partir de un conjunto de clases anotadas.

Asociaciones de tipos de datos por defecto

La siguiente tabla muestra las asignaciones de tipos de datos XML Schema (XSD) a tipos de datos Java en JAXB.[4]

Tipo de XML Schema Tipo de dato Java
xsd:string java.lang.String
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:anySimpleType (for xsd:element of this type) java.lang.Object
xsd:anySimpleType (for xsd:attribute of this type) java.lang.String
xsd:duration javax.xml.datatype.Duration
xsd:NOTATION javax.xml.namespace.QName

Versiones

  • Java SE 9: JAXB 2.3.0[5]​ (en el módulo java.xml.bind; este módulo está marcado como obsoleto[6]​)
  • Java SE 8: JAXB 2.2.8[5]
  • Java SE 7: JAXB 2.2.3 (JSR 222, maintenance release 2)[7]
  • Java SE 6: JAXB 2.0 (JSR 222)[8]

Véase también

  • XML data binding
  • JiBX – uno de los binders de datos XML más rápidos.[9][10]
  • XMLBeans – una tecnología similar y complementaria a JAXB de Apache Software Foundation.
  • TopLink – un mapeador objetos a relaciones y de objetos a XML de Oracle que soporta JAXB 1.0
  • EclipseLink MOXy – implementación de código abierto de JAXB y servicios de mapeo de objeto a XML de la Eclipse Foundation.

Referencias

  1. «JSRs: Java Specification Requests. JSR 31: XML Data Binding Specification». Consultado el 15 de febrero de 2011. 
  2. «JSRs: Java Specification Requests. JSR 222: Java Architecture for XML Binding (JAXB) 2.0». Consultado el 15 de febrero de 2011. 
  3. «xjc - Java Architecture for XML Binding». Consultado el 15 de febrero de 2011. 
  4. «Using JAXB Data Binding: Standard Data Type Mapping». 
  5. a b https://javaee.github.io/jaxb-v2/doc/user-guide/release-documentation.html#deployment-which-jaxb-ri-is-included-in-which-jdk
  6. «Deprecated module java.xml.bind». 
  7. «Java SE7: Java XML Technology Enhancements». Consultado el 21 de marzo de 2012. 
  8. «Java SE 6: Features and Enhancements». Consultado el 21 de marzo de 2012. 
  9. Dennis Sosnoski. «XML and Java technologies: Data binding, Part 2: Performance». Archivado desde el original el 11 de marzo de 2011. Consultado el 15 de febrero de 2011. 
  10. «XML Binding Frameworks in the Context of Service-Oriented Architecture». Archivado desde el original el 16 de julio de 2011. Consultado el 15 de febrero de 2011. 

Enlaces externos

  • JAXB home page Reference Implementation on Project GlassFish
  • previous JAXB home page
  • A JAXB Tutorial by Wolfgang Laun
  • JSR 222 (JAXB 2.0)
  • JSR 31 (JAXB 1.0)
  • The Java EE 5 Tutorial - Binding between XML Schema and Java Classes JAXB chapter of the Java EE 5 Tutorial
  • JAXB Wizard Archivado el 31 de mayo de 2012 en Wayback Machine.
  • Using JAXB with complex schema guide (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). and JDeveloper.

Artículos

  • Generate an XML Document from an Object Model with JAXB 2 Archivado el 29 de octubre de 2020 en Wayback Machine.
  • JAXB 2.0
  • XML and Java technologies: Data binding, Part 2: Performance
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q518797
  • Wd Datos: Q518797