Presentation : JAXB



Java Architecture for XML Binding (JAXB) est une librairie Java implémentée par SUN pour simplifier les processus de transformation d’objets Java en fichier XML, et de fichier XML en objets Java.
Il s'agit en fait d'une API Java permettant de créer des classes Java à partir de Schémas (.XSD) et inversement, c'est-à-dire qu'elle facilite l'utilisation du XML dans Java en compilant un Schéma XML dans une ou plusieurs classes. L’utilisation de JAXB permet un gain de temps significatif par rapport à l’utilisation de parser XML de bas niveau tel SAX ou DOM pour effectuer du "round-tripping".

Le fonctionnement de JAXB est illustré par le schéma ci-dessous :



Le principe utilisée par JAXB est le Data Binding, il s'agit d'une technologie permettant d'automatiser la transformation d'un modèle de données en un modèle de données objets dans un langage de programmation. Autrement dit, il permet par exemple de convertir les fichiers XML en instances de classes Java.

Pour réaliser cela, il y a trois étapes :

  • La génération de classes
  • Le rassemblement des données
  • La redistribution des données



Finalement, l'objectif de ce framework est la mise en correspondance automatique entre une famille de documents XML et un schéma de classes Java.
Il permet une certaine continuité entre :

  • une analyse UML,
  • un diagramme de classes,
  • un modèle physique sous la forme d'un Schéma XML,
  • une implantation Java automatisée.

Installation de JAXB :

  • Telecharger le plugin a cette adresse
  • Le placer dans le dossier /plugins/ de Eclipse
  • Faire la commande ‘eclipse.exe - clean’ pour prendre en compte les nouveaux plugins
  • Créer un schéma fichier.xsd décrivant les données
  • Puis clic bouton-droit sur le fichier , une nouvelle option est apparue : JAXB 2.0
  • L’installation du plugin a été faite correctement

1ière étape : Création de classes


  • Création d’un .xsd
  • Lancer JAXB en utilisant eclipse
  • Création de n fichiers : des .java et une fabrique qui permet d'instancier les objets

2ième étape : Marshalling (génération d'un fichier XML)


  • Création d’un contexte et indication du package source : JAXBContext jaxbContext=JAXBContext.newInstance("contacts_JAXB");
  • Création d’un « marshaller » : Marshaller m=jaxbContext.createMarshaller();
  • m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  • Création d'une fabrique : ObjectFactory fabrique = new ObjectFactory();
  • Dans laquelle on crée un objet projet : Projet projet = fabrique.createProjet();
  • Génération du XML : marshaller.marshal(projet, new FileOutputStream(emplacement));

3ième étape : Unmarshalling (lecture d'un fichier XML)


  • Création d'un contexte et indication du package source : JAXBContext jaxbContext=JAXBContext.newInstance("Contacts_JAXB");
  • Création d'un « unmarshaller » sur le contexte : Unmarshaller unmarshaller=jaxbContext.createUnmarshaller();
  • Création de l’objet depuis l’élément racine (root) : Projet projet = (Projet)unmarshaller.unmarshal(emplacement);

Avantages et inconvénients de JAXB :

  • Avantages :
    * Lire et écrire dans une vaste gamme de type d'entrée/sortie (Fichier, Flux, Noeud Dom ...etc...)
    * Facilité d'utilisation
  • Inconvénients :
    * Utilisation d'annotations, ce qui oblige à altérer les classes d'origines
    * Reformatage des classes pour avoir des méthodes get/set annotées ou des variables annotées

Comparaison avec d’autres Frameworks :

  • Même utilisation que JAXP (SAX et DOM), mais niveau d’abstraction plus élevé
  • Nécessité d’installer des grosses librairies à l’inverse de Frameworks comme Castor

Cas d'Etude

Vous pouvez récupérer l'Application (.war) que nous avons réalisés pour le cas d'étude.

Bibliographie :



© Bigozzi Christopher & Mcharek Raouda & Sadroudine Samir - JEE AP - EISTI 2009