Java del lado del servidor: cree aplicaciones distribuidas con Java y XML

El Lenguaje de marcado extensible, o XML, ha ganado una gran popularidad como una forma de representar datos en un formato legible, portátil y neutral para el proveedor. Muchos proveedores de software han anunciado "compatibilidad con XML", lo que generalmente significa que sus productos producirán o consumirán datos XML.

XML también se considera la lengua franca para el intercambio de datos entre empresas. Permite a las empresas acordar definiciones de tipo de documento XML (DTD) para los datos que se intercambian. Estos DTD son independientes del esquema de base de datos utilizado por las empresas.

Los grupos de estándares que representan casi todos los esfuerzos humanos están acordando DTD para el intercambio de datos. Uno de los muchos ejemplos es el Consejo de Telecomunicaciones de Prensa Internacional (ver Recursos), que ha definido un DTD XML que permite "transferir información de noticias con marcado y transformarla fácilmente en un formato publicable electrónicamente". Estos estándares de mercado vertical permitirán que diversas aplicaciones intercambien datos de formas imprevistas.

Pero, ¿de qué sirven los datos portátiles e independientes del proveedor si no los comparte y procesa? Es deseable la capacidad de comunicarse y procesar XML entre computadoras distribuidas. Una aplicación que se comunica y procesa XML entre computadoras es, de hecho, una aplicación distribuida.

Este artículo explora estas aplicaciones distribuidas escritas en Java. Me centraré en la comunicación de XML entre código Java que se ejecuta en diferentes máquinas virtuales.

La comunicación de XML

La especificación de XML definida por el World Wide Web Consortium, o W3C (ver Recursos), define la sintaxis y la semántica del lenguaje. Para procesar XML, es necesario analizar un documento XML. Sería lamentable que todas las clases de Java que necesitaran procesar XML tuvieran que analizar un documento XML, dada la complejidad de la sintaxis y la semántica de XML. Para resolver este problema, el W3C ha definido el Modelo de Objetos de Documento (DOM) (ver Recursos). DOM es una interfaz de programador de aplicaciones para datos XML. Está disponible en muchos lenguajes de programación, incluido Java. Los programas Java pueden acceder a datos XML a través de la API DOM. Los analizadores XML producen una representación DOM de un documento XML.

La Figura 1 ilustra un modelo simplificado de una aplicación distribuida de Java que procesa XML. El modelo es suficiente para el propósito de este artículo: explorar la comunicación de XML. El modelo asume que algunos datos se obtienen de una fuente de datos como una base de datos relacional. Algún código Java procesa los datos y finalmente produce una representación DOM. Este código se representa en la Figura 1 como el procesador.

El código del procesador pasa la representación DOM de los datos XML al remitente. El remitente es un código Java que comunica los datos XML al receptor. El receptor es un código Java que recibe los datos XML, produce una representación DOM de los datos y los pasa a otro procesador. En resumen, el remitente y el receptor abstraen la comunicación de la representación DOM de datos XML.

El remitente y el receptor no están implementados en la misma máquina virtual Java. Están conectados por una infraestructura de sistema distribuida. Hay varios enfoques para implementar el remitente y el receptor.

Tenga en cuenta que en el modelo de la Figura 1, el remitente es un cliente del receptor. El remitente pasa el XML al receptor. En otro modelo posible, el receptor es el cliente; solicita el documento al remitente. No exploraré el segundo modelo en este artículo, ya que los problemas de comunicación XML son similares.