El API JAXB

JAXB proporciona a una manera rpida, conveniente de crear uniones de dos vas 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 cdigo para analizar los documentos XML basados en el esquema. Una aplicacin 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 cdigo de anlisis y de proceso complejo.

.Por qu usar JAXB?

Usar JAXB para una aplicacin de proceso de datos tiene muchos benficios porque una aplicacin JAXB:

  • Usa Tecnologa Java y XML
  • Garantiza Datos Vlidos
  • Es Rpida
  • Es Fcil de Usar
  • Puede Restringir Datos
  • Es Personalizable
  • Es Extensible

Esta seccin explica todas esas cualidades en ms detalle.

.Las aplicaciones JAXB usan Tecnologa Java y XML

Las razones ms importantes para utilizar JAXB son que las aplicaciones de JAXB estn escritas en el lenguaje de programacin de Java y pueden procesar datos XML. Para entender las implicaciones de estas caractersticas, primero necesitamos entender por qu XML y la tecnologa de Java son tan importantes y cmo se complementan.

XML es una forma estndar industrial e independiente del sistema de representar datos. Los datos que se representan usando XML se pueden publicar en mltiples 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 fciles de trabajar porque estn escritos en un formato de texto simple, legible por los seres humanos y el software de edicin de texto. Por estas razones, XML se est convirtiendo rpidamente en un mtodo comn para el intercambio de datos entre aplicaciones, especialmente aplicaciones de empresa de negocio-a-negocio.

Las aplicaciones escritas en el lenguaje de programacin de Java son portables: Cualquier sistema con una mquina virtual Java puede ejecutar los bytecode producidos compilando una aplicacin Java. Con el cdigo portable que la tecnologa de Java proporciona, XML es an ms til en el contexto de compartir datos entre las aplicaciones. Las aplicaciones, especialmente aplicaciones basadas en Web, necesitan la ayuda de la tecnologa 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 informacin.

Esencialmente, JAXB proporciona un puente entre estas dos tecnologas 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 representacin de nuestros datos de esta manera permite que los manipulemos de manera semejante como manipularimos objetos de Java, hacindo ms fcil la creacin de aplicaciones para procesar datos XML. Una vez que tengamos nuestros datos en la forma de objetos Java, es fcil acceder a ellos. Adems, despus de trabajar con los datos, podemos escribir los objetos Java en un nuevo documento XML. Con el acceso fcil a los datos XML que proporciona JAXB, solamente necesitamos escribir aplicaciones que realmente utilizarn los datos, en vez gastar el tiempo en escribir cdigo para formatear los datos.

.Las Aplicaciones JAXB Garantizan Datos Vlidos

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 ms flexibles que JAXB, pero sin un esquema no pueden garantizar que sus datos sean vlidos. 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 invlido con respecto al esquema usado para crear las clases.

.Las Aplicaciones JAXB son Rpidas

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 ms lento que un analizador de sintaxis SAX. Una aplicacin 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 rpidos, los primeros prototipos de JAXB han demostrado que JAXB puede ser ms rpido que los analizadores de sintaxis SAX. JAXB hace ms rpidamente el anlisis porque las clases generadas estn precompiladas y contienen la lgica del esquema, de tal modo que evitan la interpretacin dinmica que un analizador de sintaxis SAX debe realizar.

Una aplicacin 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 manipulacin del rbol. Al contrario que una aplicacin DOM, una aplicacin JAXB es especfica de un esquema: No podemos utilizarla para procesar los documentos de XML que se basan en otro esquema. Por estas razones, una aplicacin JAXB utiliza mucho ms eficientemente la memoria que DOM.

.Las Aplicaciones JAXB son Fciles de Crear y de Usar

Puesto que todo el cdigo de proceso se genera por nosotros, JAXB es ms fcil de utilizar que la mayora de los analizadores de sintaxis XML: Con slo un stream de entrada podemos tener acceso al contenido. Adems, la mayora 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. Todava necesitamos proporcionar al cdigo de conversin, que puede ser propenso a errores y difcil de mantener. JAXB genera automticamente el cdigo que podemos personalizar para que realice la conversin de contenidos por nosotros.

Si sabemos cmo programar en el lenguaje Java y tenemos un mnimo conocimiento de XML, podremos empezar a usar JAXB. Adems, como las clase generadas cumplen las convenciones del API Java, es incluso ms fcil 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 cmo 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 explcitamente a tipado de datos ms all de expresar tipos como valores del atributo; estos valores del atributo deben entonces ser interpretados analizando el cdigo proporcionado. Es decir podemos incorporar cualquier tipo de datos que deseemos entre dos etiquetas, tales como nmeros enteros o cadenas, mientras la estructura del documento est conforme con la especificacin del DTD. Pero lo que desearemos con frecuencia es poder convertir los datos, por ejemplo, para especificar que solamente un nmero entero se puede contener entre dos etiquetas <quantity>. JAXB proporciona capacidades tanto para la estructura como para la validacin del contenido en el cdigo generado, que podemos personalizar. Ms importante, puesto que JAXB genera el cdigo Java, podemos asignar tipos exclusivos del lenguaje de programacin Java, tal como Date o BigDecimal, a nuestros elementos. Para instrucciones de cmo realizar conversiones de tipos, pudes ir a la pgina 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 unin, que contiene instrucciones de cmo generar las clases. El esquema de unin se escribe en un lenguaje de unin basado en XML, cuyas construcciones utilizamos para escribir al esquema de unin de modo que podamos especificar cmo se generan las clases. Una de las personalizaciones ms tiles son las conversiones de tipos de datos. Por ejemplo, como se mencion en secciones anteriores, podemos especificar en el esquema de unin que el elemento quantity slo debe contener nmeros enteros. Adems de las conversiones de tipos de datos, podemos utilizar el esquema de unin para controlar los nombres de las clases, los paquetes, y los tipos; y podemos generar constructores, interfaces, y enumeraciones personalizadas.

El esquema de unin tambin permite que manejemos la evolucin del esquema. Si nos anticipamos la cambio de nuestro esquema, el esquema de unin proporcionar constructores especiales que definen uniones flojas que permitan ms flexibilidad. Cuando el esquema se desarrolle, todo lo que necesitamos hacer es editar el esquema de unin 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 seran sobreescritos. Porque las instrucciones de unin se especifican en el esquema de unin -- a parte del esquema y el cdigo -- cuando se desarrolle el esquema, lo tendremos mucho ms fcil para mantener la aplicacin.

.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 disearon el proceso de unin para hacer que la derivacin de subclases sea sencillo. Puedes encontrar ms informacin 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 fcil de trabajar con datos, tanto si nos proponemos compartirlos como si no. Esta seccin describe dos escenarios para demostrar cmo se puede usar JAXB en el mundo real.

.Escenario 1: Balance de un Libro de Cheques

Podemos utilizar JAXB para crear una aplicacin de escritorio simple para el balance de libros de cheques. Un esquema que representa un libro de cheques podra 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 podramos:

  1. Crear una representacin objeto de los datos del libro de cheques XML.
  2. Crear una representacin objeto de las transaciones de ese mes.
  3. Calcular el nuevo balance con los objetos.
  4. Aadir 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 estndars para representar datos compartidos a travs de un repositorio, los negocios pueden compartir estos datos. Un cliente podra tener acceso al esquema estndar del repositorio y construir una aplicacin JAXB. Una vez que se construya la aplicacin, el cliente puede solicitar las listas de precios a los distintos suministradores. Estas listas de precios est en formato XML y sern vlidas contra el esquema estndar de la lista de precios. Cuando la aplicacin JAXB extrae los datos XML, crea las representaciones objeto Java de los datos. Con los objetos, la aplicacin 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 tambin construy una aplicacin JAXB con un esquema estndar del formulario de pedido, podra 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 ms bajos.

Para poner el segundo decorado en marcha, adems de JAXB, necesitaramos utilizar otras tecnologas, tales como el API Java para Mensajera 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 gua se centra en JAXB, el decorado de la aplicacin del libro de cheques se utilizar como ejemplo. Comenzando con el Captulo 4: Unir un Esquema a las clases, esta gua muestra cmo construir una aplicacin JAXB con el ejemplo del libro de cheques.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.