El API JAXB

JAXB proporciona a una manera r�pida, conveniente de crear uniones de dos v�as entre los documentos XML y los objetos Java. Dado un esquema, que especifica la estructura de los datos XML, el compilador JAXB genera un conjunto de clases de Java que contienen todo el c�digo para analizar los documentos XML basados en el esquema. Una aplicaci�n que utilice las clases generadas puede construir un �rbol de objetos Java que representa un documento XML, manipular el contenido del �rbol, y regenerar los documentos del �rbol, todo ello en XML sin requerir que el desarrollador escriba c�digo de an�lisis y de proceso complejo.

.��Por qu� usar JAXB?

Usar JAXB para una aplicaci�n de proceso de datos tiene muchos benficios porque una aplicaci�n JAXB:

  • Usa Tecnolog�a Java y XML
  • Garantiza Datos V�lidos
  • Es R�pida
  • Es F�cil de Usar
  • Puede Restringir Datos
  • Es Personalizable
  • Es Extensible

Esta secci�n explica todas esas cualidades en m�s detalle.

.�Las aplicaciones JAXB usan Tecnolog�a Java y XML

Las razones m�s importantes para utilizar JAXB son que las aplicaciones de JAXB est�n escritas en el lenguaje de programaci�n de Java y pueden procesar datos XML. Para entender las implicaciones de estas caracter�sticas, primero necesitamos entender por qu� XML y la tecnolog�a de Java son tan importantes y c�mo se complementan.

XML es una forma est�ndar industrial e independiente del sistema de representar datos. Los datos que se representan usando XML se pueden publicar en m�ltiples medios porque, al contrario que el HTML, XML describe la estructura de los datos, no su formato. Los datos de XML se pueden pasar entre aplicaciones porque la estructura de los datos se puede especificar en un esquema, lo que permite que un analizador de sintaxis valide y procese los datos que siguen el esquema. XML no proporciona un conjunto de etiquetas como el HTML; utilizamos el esquema para definir nuestras propias etiquetas para describir nuestros datos. Los datos XML son f�ciles de trabajar porque est�n escritos en un formato de texto simple, legible por los seres humanos y el software de edici�n de texto. Por estas razones, XML se est� convirtiendo r�pidamente en un m�todo com�n para el intercambio de datos entre aplicaciones, especialmente aplicaciones de empresa de negocio-a-negocio.

Las aplicaciones escritas en el lenguaje de programaci�n de Java son portables: Cualquier sistema con una m�quina virtual Java puede ejecutar los bytecode producidos compilando una aplicaci�n Java. Con el c�digo portable que la tecnolog�a de Java proporciona, XML es a�n m�s �til en el contexto de compartir datos entre las aplicaciones. Las aplicaciones, especialmente aplicaciones basadas en Web, necesitan la ayuda de la tecnolog�a de Java para analizar y procesar los datos de una manera independiente de la plataforma. Asimismo, las aplicaciones Java necesitan el formato de datos independiente de la plataforma que XML proporciona para comunicar y compartir informaci�n.

Esencialmente, JAXB proporciona un puente entre estas dos tecnolog�as complementarias. JAXB incluye un compilador que asocia un esquema a un conjunto de clases Java. Una vez que tengamos nuestras clases, podremos construir las representaciones de objetos Java de los datos XML que siguen las reglas que el esquema define. Al igual que un documento XML es un ejemplar de un esquema, un objeto Java es un ejemplar de una clase. As�, JAXB permite que creemos los objetos Java en el mismo nivel conceptual que los datos XML. La representaci�n de nuestros datos de esta manera permite que los manipulemos de manera semejante como manipulari�mos objetos de Java, haci�ndo m�s f�cil la creaci�n de aplicaciones para procesar datos XML. Una vez que tengamos nuestros datos en la forma de objetos Java, es f�cil acceder a ellos. Adem�s, despu�s de trabajar con los datos, podemos escribir los objetos Java en un nuevo documento XML. Con el acceso f�cil a los datos XML que proporciona JAXB, solamente necesitamos escribir aplicaciones que realmente utilizar�n los datos, en vez gastar el tiempo en escribir c�digo para formatear los datos.

.�Las Aplicaciones JAXB Garantizan Datos V�lidos

Como JAXB asocia esquemas a las clases, debemos tener un esquema para utilizar JAXB. Algunos analizadores de sintaxis y procesadores de XML no utilizan o no requieren esquemas. Estos procesadores pueden ser m�s flexibles que JAXB, pero sin un esquema no pueden garantizar que sus datos sean v�lidos. JAXB, por otra parte, puede garantizar �sto. De hecho, es imposible utilizar JAXB para crear un �rbol de objetos Java de un documento XML que sea inv�lido con respecto al esquema usado para crear las clases.

.�Las Aplicaciones JAXB son R�pidas

Dos APIs de uso general para analizar XML son SAX (API simple para XML) y DOM (modelo del objeto del documento). Un analizador de sintaxis de SAX es un analizador de sintaxis dirigido por eventos, lo que significa que reacciona a los pedazos del documento mientras lo est� analizando; no salva ninguna parte del documento en memoria. Un analizador de sintaxis de DOM construye una estructura de datos del documento en la memoria cuyo contenido puede ser manipulado, pero es mucho m�s lento que un analizador de sintaxis SAX. Una aplicaci�n JAXB, por otra parte, tiene la velocidad de un analizador de sintaxis SAX y de la capacidad de almacenaje de datos de un analizador de sintaxis DOM. Aunque los analizadores de sintaxis SAX son r�pidos, los primeros prototipos de JAXB han demostrado que JAXB puede ser m�s r�pido que los analizadores de sintaxis SAX. JAXB hace m�s r�pidamente el an�lisis porque las clases generadas est�n precompiladas y contienen la l�gica del esquema, de tal modo que evitan la interpretaci�n din�mica que un analizador de sintaxis SAX debe realizar.

Una aplicaci�n JAXB puede construir una estructura de datos en memoria como un analizador de sintaxis DOM. Sin embargo, al contrario que DOM, no incluye muchas de las funciones adicionales para la manipulaci�n del �rbol. Al contrario que una aplicaci�n DOM, una aplicaci�n JAXB es espec�fica de un esquema: No podemos utilizarla para procesar los documentos de XML que se basan en otro esquema. Por estas razones, una aplicaci�n JAXB utiliza mucho m�s eficientemente la memoria que DOM.

.�Las Aplicaciones JAXB son F�ciles de Crear y de Usar

Puesto que todo el c�digo de proceso se genera por nosotros, JAXB es m�s f�cil de utilizar que la mayor�a de los analizadores de sintaxis XML: Con s�lo un stream de entrada podemos tener acceso al contenido. Adem�s, la mayor�a de los analizadores de sintaxis XML se limitan al tipado de datos ofrecido por un DTD. Un DTD es un tipo de lenguaje de esquema de XML. Todav�a necesitamos proporcionar al c�digo de conversi�n, que puede ser propenso a errores y dif�cil de mantener. JAXB genera autom�ticamente el c�digo que podemos personalizar para que realice la conversi�n de contenidos por nosotros.

Si sabemos c�mo programar en el lenguaje Java y tenemos un m�nimo conocimiento de XML, podremos empezar a usar JAXB. Adem�s, como las clase generadas cumplen las convenciones del API Java, es incluso m�s f�cil empezar a trabajar con JAXB.

.�Las Aplicaciones JAXB Pueden Convertir Datos

Aunque un documento de XML est� especificado para un esquema, en este momento, un esquema est� limitado en c�mo puede especificar firmemente el contenido de un documento de XML. las aplicaciones de intercambio de datos necesitan tipado de datos formal. XML 1,0 no proporciona expl�citamente a tipado de datos m�s all� de expresar tipos como valores del atributo; estos valores del atributo deben entonces ser interpretados analizando el c�digo proporcionado. Es decir podemos incorporar cualquier tipo de datos que deseemos entre dos etiquetas, tales como n�meros enteros o cadenas, mientras la estructura del documento est� conforme con la especificaci�n del DTD. Pero lo que desearemos con frecuencia es poder convertir los datos, por ejemplo, para especificar que solamente un n�mero entero se puede contener entre dos etiquetas <quantity>. JAXB proporciona capacidades tanto para la estructura como para la validaci�n del contenido en el c�digo generado, que podemos personalizar. M�s importante, puesto que JAXB genera el c�digo Java, podemos asignar tipos exclusivos del lenguaje de programaci�n Java, tal como Date o BigDecimal, a nuestros elementos. Para instrucciones de c�mo realizar conversiones de tipos, pudes ir a la p�gina Unir un Esquema a las Clases.

.�Las Aplicaciones JAXB Pueden Personalizarse

Antes de generar las clases Java dedese nuestro DTD, escribimos lo que se llama un esquema de uni�n, que contiene instrucciones de c�mo generar las clases. El esquema de uni�n se escribe en un lenguaje de uni�n basado en XML, cuyas construcciones utilizamos para escribir al esquema de uni�n de modo que podamos especificar c�mo se generan las clases. Una de las personalizaciones m�s �tiles son las conversiones de tipos de datos. Por ejemplo, como se mencion� en secciones anteriores, podemos especificar en el esquema de uni�n que el elemento quantity s�lo debe contener n�meros enteros. Adem�s de las conversiones de tipos de datos, podemos utilizar el esquema de uni�n para controlar los nombres de las clases, los paquetes, y los tipos; y podemos generar constructores, interfaces, y enumeraciones personalizadas.

El esquema de uni�n tambi�n permite que manejemos la evoluci�n del esquema. Si nos anticipamos la cambio de nuestro esquema, el esquema de uni�n proporcionar� constructores especiales que definen uniones flojas que permitan m�s flexibilidad. Cuando el esquema se desarrolle, todo lo que necesitamos hacer es editar el esquema de uni�n y ejecutar el compilador del esquema otra vez para crear las clases que reflejan los cambios. Si intentaramos cambiar las clases en lugar del esquema, una vez que ejecutaramos el compilador del esquema otra vez, los cambios ser�an sobreescritos. Porque las instrucciones de uni�n se especifican en el esquema de uni�n -- a parte del esquema y el c�digo -- cuando se desarrolle el esquema, lo tendremos mucho m�s f�cil para mantener la aplicaci�n.

.�Las Aplicaciones JAXB son Extensibles

Una vez que hayamos generado las clases Java, podremos utilizarlas sin modificaciones, o subclasificarlas para proporcionar funcionalidades adicionales. Los desarrolladores de JAXB dise�aron el proceso de uni�n para hacer que la derivaci�n de subclases sea sencillo. Puedes encontrar m�s informaci�n en el capitulo Trabajar con Datos

.�Usos de JAXB

JAXB tiene muchas aplicaciones, especialmente con el advenimiento las las aplicaciones de empresa de negocio-a-negocio basadas en Web. Sin embargo, no tenemos que ser un desarrolador Web para apreciar JAXB porque JAXB proporciona una forma f�cil de trabajar con datos, tanto si nos proponemos compartirlos como si no. Esta secci�n describe dos escenarios para demostrar c�mo se puede usar JAXB en el mundo real.

.�Escenario 1: Balance de un Libro de Cheques

Podemos utilizar JAXB para crear una aplicaci�n de escritorio simple para el balance de libros de cheques. Un esquema que representa un libro de cheques podr�a contener un conjunto de transacciones y un balance. Con las clases generadas desde el esquema de transacciones podemos crear datos XML para un conjunto de transacciones mensuales. Cada mes podr�amos:

  1. Crear una representaci�n objeto de los datos del libro de cheques XML.
  2. Crear una representaci�n objeto de las transaciones de ese mes.
  3. Calcular el nuevo balance con los objetos.
  4. A�adir los datos del objeto de transaciones a los datos del libro de cheques.
  5. Escribir el libro de cheques actualizado en un nuevo fichero XML.

.�Escenario 2: Comparar Precios de Suministradores

Supongamos que somos fabricantes de zapatos y quisieramos encontrar un suministrador del cordones con los mejores precios. En un entorno de servicios Web, los suministradores pueden hacer negocio sobre Internet, representando datos como sus listas de precios en XML. Con esquemas est�ndars para representar datos compartidos a trav�s de un repositorio, los negocios pueden compartir estos datos. Un cliente podr�a tener acceso al esquema est�ndar del repositorio y construir una aplicaci�n JAXB. Una vez que se construya la aplicaci�n, el cliente puede solicitar las listas de precios a los distintos suministradores. Estas listas de precios est� en formato XML y ser�n v�lidas contra el esquema est�ndar de la lista de precios. Cuando la aplicaci�n JAXB extrae los datos XML, crea las representaciones objeto Java de los datos. Con los objetos, la aplicaci�n JAXB puede comparar los precios de los productos que le interesan al cliente y puede generar los nuevos datos XML, que contiene solamente esos items que ella desea comprar. Si el cliente tambi�n construy� una aplicaci�n JAXB con un esquema est�ndar del formulario de pedido, podr�a corregir sus nuevos datos de la lista de precios XML y agregarlos a los datos del formulario de pedido XML, que puede enviar al suministrador con los precios m�s bajos.

Para poner el segundo decorado en marcha, adem�s de JAXB, necesitar�amos utilizar otras tecnolog�as, tales como el API Java para Mensajer�a XML (JAXM) para enviar los datos y el API Java para Registros XML (JAXR) para utilizar el repositorio. El primer decorado se puede poner en marcha usando solamente JAXB. Como esta gu�a se centra en JAXB, el decorado de la aplicaci�n del libro de cheques se utilizar� como ejemplo. Comenzando con el Cap�tulo 4: Unir un Esquema a las clases, esta gu�a muestra c�mo construir una aplicaci�n JAXB con el ejemplo del libro de cheques.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO