Programación en castellano
Inicio > Tutoriales > Java y XML > El API JAXB
-Tutoriales

El API JAXB


Introducción a la Arquitectura de API Java para Uniones XML (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.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados