JAXB y OpenCms (PARTE I): ¿Qué es JAXB?

21/05/2010       Sergio Raposo Vargas       Java, Programación

JAXB (Java Architecture for XML Binding) es una API desarrollada por Sun para la creación de una unión entre objetos Java y documentos XML. Esta api nos permite transformas documentos XML en objetos java (unmarshal) equivalentes y viceversa (marshal).
Por lo tanto nos permite trabajar con documentos XML de una forma mucho más simple y rápida que otras técnicas similares como DOM o SAX (usando librerías como XERCES o DOM4J).

JAXB proporciona un compilador que nos permite en base a un fichero XSD (XML Schema Definition) generar las clases Java correspondientes. De esta forma, en nuestros proyectos podemos trabajar con objetos java en lugar de tener que manipular documentos XML directamente. Esto reduce el número de horas de desarrollo y la complejidad de nuestros desarrollos.

El compilador que se encarga de esta generación es XJC. Mediante la consola podremos lanzar compilaciones de nuestros XSD, o usar un proceso ANT para crear procesos más automáticos.

Entre las características principales de JAXB, tenemos que garantiza datos válidos: Al generar las clases java en base a un fichero de definición (XSD o DTD), tenemos garantizado que los documentos xml generados con jaxb siguen una estructura correcta por lo que la validación de datos va intrínseca en él. Esto además ofrece mayor control sobre nuestros datos, por ejemplo, si disponemos de un campo que debe ser un valor numérico, usando JAXB lo tenemos asegurado con crear el objeto java con tipo Integer, de esta forma ese dato será siempre un valor numérico.

Otra característica principal es la rapidez de ejecución. Ya hemos comentado que existen otras técnicas para la manipulación de datos XML como son SAX y DOM. Se ha demostrado que una aplicación JAXB tiene la velocidad de un analizador de sintaxis SAX y la capacidad de almacenaje de datos de un analizador de sintaxis DOM, por tanto JAXB posee las principales características de ambas técnicas, incluso mejorando tanto la velocidad como la capacidad de almacenamiento.