Java côté serveur: créez des applications distribuées avec Java et XML

Le langage de balisage extensible, ou XML, a gagné en popularité en tant que moyen de représenter les données dans un format lisible portable, indépendant du fournisseur. De nombreux éditeurs de logiciels ont annoncé une «prise en charge de XML», ce qui signifie généralement que leurs produits produiront ou consommeront des données XML.

XML est également considéré comme la lingua franca pour l'échange de données entre les entreprises. Il permet aux entreprises de convenir des définitions de type de document XML (DTD) pour les données échangées. Ces DTD sont indépendants du schéma de base de données utilisé par les entreprises.

Des groupes de normalisation représentant presque tous les efforts humains s'accordent sur des DTD pour l'échange de données. L'un des nombreux exemples est le Conseil international des télécommunications de la presse (voir Ressources), qui a défini une DTD XML qui permet «de transférer des informations d'actualité avec un balisage et d'être facilement transformées en un format publiable électroniquement». De telles normes de marché vertical permettront à diverses applications d'échanger des données de manière imprévue.

Mais à quoi servent les données portables et indépendantes du fournisseur si vous ne les partagez pas et ne les traitez pas? La capacité de communiquer et de traiter XML entre des ordinateurs distribués est souhaitable. Une application qui communique et traite du XML entre des ordinateurs est, en fait, une application distribuée.

Cet article explore ces applications distribuées écrites en Java. Je vais me concentrer sur la communication de XML entre du code Java s'exécutant sur différentes machines virtuelles.

La communication de XML

La spécification de XML définie par le World Wide Web Consortium, ou W3C (voir Ressources), définit la syntaxe et la sémantique du langage. Pour traiter XML, un document XML doit être analysé. Il serait regrettable que chaque classe Java ayant besoin de traiter XML doive analyser un document XML, étant donné la complexité de la syntaxe et de la sémantique XML. Pour résoudre ce problème, le W3C a défini le modèle d'objet de document (DOM) (voir Ressources). Le DOM est l'interface d'un programmeur d'application aux données XML. Il est disponible dans de nombreux langages de programmation, y compris Java. Les programmes Java peuvent accéder aux données XML via l'API DOM. Les analyseurs XML produisent une représentation DOM d'un document XML.

La figure 1 illustre un modèle simplifié d'une application distribuée Java qui traite du XML. Le modèle est suffisant pour les besoins de cet article: explorer la communication de XML. Le modèle suppose que certaines données sont obtenues à partir d'une source de données telle qu'une base de données relationnelle. Un certain code Java traite les données et produit finalement une représentation DOM. Ce code est représenté sur la figure 1 en tant que processeur.

Le code du processeur transmet la représentation DOM des données XML à l' expéditeur. L'expéditeur est un code Java qui communique les données XML au destinataire. Le récepteur est un code Java qui reçoit les données XML, produit une représentation DOM des données et la transmet à un autre processeur. En bref, l'expéditeur et le destinataire font abstraction de la communication de la représentation DOM des données XML.

L'expéditeur et le destinataire ne sont pas implémentés dans la même machine virtuelle Java. Ils sont connectés par une infrastructure système distribuée. Il existe plusieurs approches pour implémenter l'expéditeur et le destinataire.

Notez que dans le modèle de la figure 1, l'expéditeur est un client du destinataire. L'expéditeur transmet le XML au destinataire. Dans un autre modèle possible, le récepteur est le client; il demande le document à l'expéditeur. Je n'explorerai pas le deuxième modèle de cet article car les problèmes de communication XML sont similaires.