2011-05-28 4 views
12

J'ai utilisé XStream il y a plusieurs années, mais je vois que les bibliothèques ne sont pas mises à jour depuis 2008 (latest news). Y a-t-il maintenant une bibliothèque de sérialisation XML Java plus moderne et à jour?Alternative moderne à la bibliothèque Java XStream?

+1

En Août 2011, Xstream a juste avait sa [première mise à jour majeure en 3 ans] (http://xstream.codehaus.org/news.html#1.4). Ce rythme de développement semble approprié puisque, comme d'autres réponses l'ont expliqué, XStream est un projet mature. –

+0

Et en effet, les mises à jour continuent: "8 février 2014 XStream 1.4.7 publié". –

Répondre

20

Par ordre de préférence, la pertinence et l'activité:

JAXB

Visitez le JAXB project's site pour vérifier la tutorial et guide. Regardez aussi le JAXB architecture whitepaper original

Le projet JAXB répertorié ci-dessus est l'implémentation de référence de l'API et est livré avec le GlassFish Application Server.

de » MOXyEclipseLink

Visite du EclipseLink project's site et lire introductory article to EclipseLink on InfoQ et voir Blaise Doughan's answer about MOXy.

EclipseLink provient de TopLink d'Oracle et est maintenant open source, géré par le Eclipse Foundation et utilisé dans un certain nombre de produits basés sur Eclipse.

XStream

Oui, XStream, parce qu'il est effectivement updated in 2011 with a major update and 2 service releases puisque vous avez demandé, il semble bien entretenu et un très bon candidat utilisé par mature projects. Ne pas oublier de vérifier ce qui est nouveau dans version 1.4.x.

Visitez le XStream project's site et ses tutorial pour comparer.

XmlBeans

Visitez le XmlBeans project's site. XmlBeans est un projet bien testé qui existe depuis un certain temps.

JiBX

Visitez le JiBX project's site, suivez les tutorial et guide. JiBX pourrait être une alternative plus simple si vous n'aimez pas la complexité de XmlBeans ou même JAXB.

+0

+1 pour JAXB. D'autre part, XMLBeans n'a pas été publié depuis juillet 2008, ce qui le place dans une position similaire à XStream en ce qui concerne l'OP: http://xmlbeans.apache.org/sourceAndBinaries/index.html –

+1

@Blaise: Vrai, Je connais. Mais j'ai eu de bonnes expériences avec ça. De plus, comme mentionné dans une autre réponse de Steven C., le fait que ce soit dépassé ne signifie pas toujours que c'est mauvais. Peut-être que cela signifie que c'est assez bon pour ne pas avoir besoin d'une nouvelle version, même si je serais généralement méfiant à ce sujet. – haylem

+0

@Blaise: mais en fait, j'ai réalisé que j'avais oublié EclipseLink, que j'aime aussi, et qu'il est utilisé dans beaucoup de solutions Eclipse (et autres) et qu'il est activement développé. Donc, je l'évaluerais aussi au-dessus de XmlBeans. – haylem

7

Le fait que quelque chose n'ait pas été mis à jour depuis 3 ans ne signifie pas qu'il est obsolète. Cela peut signifier simplement qu'il n'y a pas eu besoin de pour le mettre à jour. S'il n'y a pas besoin de changer un projet, pourquoi le changer? Une autre explication de l'absence apparente de «progrès» est que le changement des API de bibliothèques a tendance à perturber les projets qui en dépendent. Ceci est particulièrement problématique pour les projets qui combinent de nombreux composants et bibliothèques tiers en une seule application Java.Rechercher des alternatives à une bibliothèque est une bonne chose, mais le faire simplement parce que la bibliothèque n'a pas été mise à jour récemment ne l'est pas. Si XStream fait ce dont vous avez besoin, respectez-le. Plus récent ne signifie pas nécessairement mieux.

4

XStream est assez bon et il fait bien son travail. Même pour les projets récents, je préfère utiliser XStream pour les cas d'utilisation où il est adapté car il est facile à utiliser, léger et fonctionne très bien.

Si vous êtes à la recherche d'un sérieux travail de relier les haricots, jetez un oeil à Simple Framework. C'est aussi un bon outil. Cela m'a aidé dans un projet où je devais faire un travail de cartographie personnalisée sérieuse avec des annotations. http://simple.sourceforge.net/

10

Note: Je suis le chef de file EclipseLink JAXB (MOXy), et membre du groupe d'experts JAXB (JSR-222).

Vous avez raison d'envisager une fréquence de libération de bibliothèques lors du choix d'un logiciel. Il y a plusieurs raisons pour une nouvelle version du produit:

  • client demande - Peu importe la qualité de votre bibliothèque est, votre base d'utilisateurs aura des suggestions d'amélioration et demandes de fonctionnalités.
  • Développements dans l'industrie - Le déploiement modulaire est un sujet brûlant en ce moment, au cours des dernières années, des changements ont dû être apportés à EclipseLink pour le rendre compatible avec OSGi.
  • Nouvelles versions Java - Java SE 7 sera bientôt disponible, ce qui ne nécessite pas de version dont nous avons besoin pour faire quelques ajustements dans notre prochaine version afin de nous assurer que nous étions compatibles. Au fil du temps, d'autres fonctionnalités seront ajoutées pour tirer parti des nouveaux aspects de Java (EclipseLink nécessite au minimum Java SE 5).

Un autre aspect important de l'évaluation de tout projet open source est le nombre de committers actifs. Des sites tels que ohloh.net sont utiles pour que:


JAXB (JSR-222)

JAXB est plus qu'une mise en œuvre, il est une norme qui est développée à travers le Java Community Process (JCP). Il y a eu des participants de ces bibliothèques objet-XML comme BEA (Beans XML), EMF (IBM), TopLink (Oracle), etc. Parce que JAXB fait partie de Java EE, il est disponible dans chaque serveur d'application: WebLogic, GlassFish, WebSphere, JBoss, etc.

JAXB Offres:

  • 100% de couverture du schéma
  • implémentations multiples: Metro, EclipseLink MOXy, Apache JaxMe, etc
  • inclus dans Java SE 6, compatible avec JDK 1.5
  • Possibilité de démarrer des classes de schéma XML ou Java
  • Divers mécanismes d'extension, y compris XMLAdapter - Example
  • option pour préserver XML Infoset via Binder - Example
  • couche de liaison pour JAX-WS (Web Services)
  • couche de liaison pour JAX-RS (Rest) - Example
  • Compatible avec JSON (lorsqu'il est utilisé avec des bibliothèques telles que Jettison) - Example

EclipseLink JAXB (Moxy)

Moxy est une implémentation de JAXB qui offre de nombreuses extensions utiles, y compris:

Véritable objet XML Mapping en tirant parti XPath

Le mappage basé sur XPath vous permet de démarrer à la fois avec des classes Java et un schéma XML et de les mettre en correspondance.

fichier de mappage pour la manipulation 3ème partie Classes

Dans la spécification des métadonnées JAXB courant est fourni par annotations. Cela peut être problématique à utiliser avec des classes tierces qui ne peuvent pas être modifiées. Voilà pourquoi Moxy offre un moyen de spécifier les correspondances via XML:

Extensions pour la cartographie JPA entités

Souvent, vous devez faire plus avec vos objets Java, puis mappez simplement sur XML. Vous devrez peut-être également les conserver dans une base de données. Cela signifie que votre modèle objet peut comporter des contraintes supplémentaires que vous devez prendre en compte.Moxy offre un certain nombre d'extensions pour ce genre de cas d'utilisation:


Comparaisons

Voici une comparaison de couple que je l'ai fait comparer JAXB vers XStream et Simple:

+2

Belle réponse Blaise;) –

0

XStream 1.4.6 a été publié en décembre 2013, avec Java 8 améliorations, de sorte que la bibliothèque a été mis à jour depuis 2008.

Questions connexes