Qu'est-ce que JAXB et pourquoi devrais-je utiliser?
Il est gars ici en jurant que JAXB est la meilleure chose depuis le pain tranché. Je suis curieux de voir ce Débordement de Pile utilisateurs pense que le cas d'utilisation est pour JAXB et ce qui fait une bonne ou une mauvaise solution pour ce cas.
- Lire cet Article(Java Architecture for XML Binding (JAXB)) c'est mieux. URL : oracle.com/technetwork/articles/javase/index-140168.html#unmars
Vous devez vous connecter pour publier un commentaire.
Je suis un grand fan de JAXB pour la manipulation de XML. Fondamentalement, il apporte une solution à ce problème (je suis en supposant que la familiarité avec le langage XML, Java structures de données et de Schémas XML):
Travailler avec XML est difficile. On a besoin d'un moyen de prendre un fichier XML qui est en fait un fichier texte et de le convertir en une sorte de structure de données, qui votre programme peut ensuite manipuler.
JAXB prendra un Schéma XML que vous écrivez et de créer un ensemble de classes qui correspondent à ce schéma. Le JAXB des services publics de créer la hiérarchie de structures de données pour la manipulation de XML.
JAXB peut ensuite être utilisé pour lire un fichier XML, et ensuite créer des instances des classes générées chargé avec les données de votre XML. JAXB également fait l'inverse: prend des classes java, et génère le XML correspondant.
J'aime JAXB, car il est facile à utiliser et est livré avec la version 1.6 de Java (si vous utilisez la version 1.5, vous pouvez télécharger le JAXB .les pots.) La façon dont il crée la hiérarchie de classes est intuitive, et dans mon expérience, un emploi décent abstraction de la "XML" afin que je puisse me concentrer sur des "données".
Donc, pour répondre à votre question: je pense que, pour les petits fichiers XML, JAXB peut-être exagéré. Il vous oblige à créer et à maintenir un schéma XML, et pour une utilisation "standard manuel des méthodes" de l'utilisation des classes Java pour les structures de données. (Principales classes, les petits inner-classes pour représenter les "noeuds", et une vaste hiérarchie d'entre eux.) Donc, JAXB est probablement pas idéal pour un linéaire simple liste de "préférences" pour une application.
Mais si vous avez un complexe de schéma XML, et beaucoup de données qu'il contient, puis JAXB est fantastique. Dans mon projet, j'ai été la conversion de grandes quantités de données entre le binaire (ce qui a été consommé par un programme C) et XML (de sorte que les êtres humains peuvent utiliser et modifier des données). La résultante de Schéma XML est non trivial (de nombreux niveaux de la hiérarchie, certains champs pourraient être répétées, d'autres ne pouvaient pas) donc JAXB était utile d'être en mesure de le manipuler.
Voici une raison de ne pas l'utiliser: rendement en souffre. Il y a une bonne affaire de surcharge lorsque le regroupement et le désordonnancement. Vous pouvez également envisager une autre API for XML-la liaison de l'Objet-comme JiBX:
http://jibx.sourceforge.net/
C'est un "ORM pour XML". Le plus souvent utilisés avec JAX-WS (et en effet, le Soleil implémentations sont développés ensemble) pour WS Étoile de la Mort systèmes.
- Je utiliser JAXB au travail tout le temps et j'adore ça. Il est parfait pour les complexes schémas XML qui sont toujours en évolution et surtout bonne pour un accès aléatoire de balises dans un fichier XML.
J'ai hate de pimp mais je viens de commencer un blog et c'est littéralement la première chose que j'ai posté sur!
Découvrez-le ici:
http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/
Avec JAXB, vous pouvez créer automatiquement des représentations XML de vos objets (marshalling) et de l'objet des représentations de l'XML (unmarshalling).
Autant que le Schéma XML est concerné, vous avez deux choix:
Il y a aussi certains plus simples de la sérialisation XML bibliothèques comme XStream, Autoclave ou XMLBeans qui pourraient être des solutions de rechange.
JAXB est l'endroit idéal si vous avez le code pour certaines XML externe spec défini comme un schéma XML (
xsd
).Par exemple, vous avez une application de trading et vous devez déclarer les métiers de la Uber Boiteux Rapports de Commerce App et ils vous avons donné
ultra.xsd
pour être sur. Utiliser le$JAVA_HOME/bin/xjc
compilateur pour transformer le XML en un tas de classes Java (par exempleUltraTrade
).Alors vous pouvez simplement écrire un simple adaptateur couche de convertir vos objets de commerce de
UltraTrades
et l'utilisation de laJAXB
à rassembler les données à l'échelle de l'Ultra-Corp Beaucoup plus facile que de déconner sur la conversion de vos métiers dans leur format XML.Où tout se détraque, c'est quand Ultra-Corp n'avez pas obéi à leurs propres spécifications, et le commerce
price
qui ils ont commexsd:float
devrait en fait être exprimé comme unedouble
!Pourquoi nous avons besoin de JAXB?
Les composants distants (écrit en Java) de services web utilise XML comme un moyen d'échanger des messages entre eux. Pourquoi XML? Parce que le XML est considéré comme un poids léger option pour l'échange de messages sur les Réseaux avec des ressources limitées.
Donc, nous avons souvent besoin de convertir ces documents XML en objets et vice versa. E. g: Java Simple POJO Employé peut être utilisé pour envoyer les données sur les Employés à distance de composants( également un programme Java).
Ce Pojo doit être converti (Marshall) dans le document XML comme suit:
Et à distance de composants, de retour à l'objet Java à partir du document XML (Onu-Marshall).
Qu'est-ce que JAXB?
JAXB est une bibliothèque ou d'un outil pour effectuer cette opération de rassemblement et de UnMarshalling. Il permet de ce mal de tête, aussi simple que cela.
Vous pouvez aussi consulter les JIBX trop. C'est aussi une très bonne xml de données binder, qui est également spécialisée dans l'OTA (Open Travel Alliance) et est pris en charge par AXIS2 serveurs. Si vous êtes à la recherche de performances et de compatibilité, vous pouvez le vérifier :
http://jibx.sourceforge.net/index.html
JAXB permet d'améliorer les performances par défaut de l'ordonnancement des optimisations.
JAXB définit un programmeur de l'API pour la lecture et l'écriture des objets Java et à partir de documents XML, ce qui simplifie la lecture et de l'écriture du XML via Java.