122 votes

Quelles bibliothèques YAML de java dois-je utiliser ?

Il y a au moins 4 implémentations YAML répertoriées au yaml.org. Qui d'entre elles (ou une autre) que vous recommanderiez et pourquoi ?

Il y a deux façons vous pouvez répondre à cette question, soit en votant pour un des 4, soit en donnant une bonne réponse qui compare ou fortement justifie l’un d’eux. Je vais ajouter les 4 mentionné ainsi les gens peuvent voter, mais j’aimerais une réponse la plus justifiée si vous pourriez écrire un.

94voto

toolbear Points 2298

Andrey a donné un résumé complet de tous les quatre bibliothèques. Voici mon expérience personnelle avec deux d'entre eux.

À mon travail, nous utilisons les deux JYaml et SnakeYAML. Nous avons commencé avec JYaml dans le calendrier 2007-2008, lorsqu'il est apparu à être actif. Il a API similitudes avec XStream, ce qui est un avantage pour nous. J'ai introduit SnakeYAML à la mi-2009, lorsque j'ai rencontré un bug dans JYaml et remarqué il n'y a eu aucune nouvelle JYaml versions depuis 2007-08-19.

Mise à jour 2011-07-6: récemment, en octobre 2010, JYaml est officiellement plus maintenu à jour et des liens vers ce Q&A pour les autres options.

SnakeYAML a été très solide pour nous. Il est un fidèle port de PyYAML, qui lui-même est considéré comme assez bon pour être une référence de mise en œuvre de YAML 1.1.

Étant un port de PyYAML, vous obtiendrez très bonne interopérabilité entre Java et Python si c'est important pour vous aussi longtemps que vous êtes, ne pas essayer de sérialiser les types natifs (- delà de l'essentiel: les Chaînes de caractères, des nombres, des listes, des cartes).

L'être comme vrai pour le YAML 1.1 spécification comme il est, SnakeYAML peut être utilisé comme un YAML validateur. Certains de la seule difficulté que j'ai eu avec SnakeYAML a été l'obtenir pour charger les DONNÉES générées à partir de Perl via YAML::Syck. Dans presque tous les cas YAML::Syck a généré de l'invalide YAML.

Un inconvénient de SnakeYAML est que c'est principalement destinée à être une bibliothèque Java ↔ YAML de liaison. En l'utilisant comme un objectif général de YAML chargeur devrait être plus simple. Une API de bas niveau est disponible, mais vous perdez de typage implicite et natif de construction de l'objet, sauf si vous ajoutez-les de nouveau. Si vous n'avez pas de contrôle sur les DONNÉES de production, puis votre code porte le fardeau de dire SnakeYAML comment gérer méconnus étiquettes (voir ma demande d'amélioration pour en savoir plus sur cette).

Les responsables de l'exemple fourni par le code sur la façon de prolonger SnakeYAML pour s'adapter à mon cas d'utilisation. C'est une mesure de la qualité de la conception qu'il était possible et une mesure de leur réactivité qu'ils ont fourni à la direction.

27voto

Andrey Points 1575
<ul> <li>JvYaml - une ancienne bibliothèque non prise en charge (aucuns problèmes ne sont fixes)</li> <li>SnakeYAML - un port de la dernière PyYAML. L’analyseur et l’émetteur plus avancé. Prise en charge pour les collections de type sécurisé. couverture de 97 % de code. Étaiement BOM. Bonne documentation avec des exemples. Maven 2.</li> <li>YamlBeans - bon support de JavaBean</li> <li>JYaml - beaucoup ouvrir questions mais travaille pour un grand nombre d’applications. Il apparaît comme un premier lien dans Google lorsque recherchez « java yaml » !</li> </ul>

5voto

poindexter Points 476

http://vomos.blogspot.com/2009/11/java-libraries-for-yaml.html

C'est une écriture de l'auteur de SnakeYAML datée du 3 Nov 2009. Il donne ses réflexions sur plusieurs implémentations:

  • JvYaml, v=0.2.1: le projet est mort. Aucun problème n'est résolu. Le développeur est maintenant, le maintien d'un autre projet JvYAMLb
  • JvYAMLb est un YAML bibliothèque de traitement d' pour Java, utilisé par JRuby, v=0.2.5. J' n'a même pas d'évaluer le projet en raison de quelques dépendances sur JRuby.
  • JYaml, v=1.3: la dernière version est plus puis 2 ans. De nombreux bugs ouverts. Je ne sais pas si elle est maintenue. Google met cette bibliothèque vers le haut. Veut-il dire qu'il est le plus large propagation ?
  • YamlBeans, v=0.93: depuis l'analyseur et l'émetteur sont basés sur les JvYaml la mise en œuvre, elle ne couvre pas l' l'ensemble des spécifications 1.1. Implicite types ne sont pas pris en charge (http://yaml.org/type/index.html) La mise en œuvre ne suit pas la méthode recommandée (http://yaml.org/spec/1.1/#id859333) Le document doit être un JavaBean. Constructeur vide est nécessaire. Des objets immuables ne sont pas pris en charge.

Le plus important, loin de moi, c'est que certains de ces projets sont aujourd'hui laissés à l'abandon. Personnellement, j'ai juste besoin de quelque chose qui pourrait serialize/unserialize JavaBeans avec un minimum d'effort. SnakeYAML ne repose pas sur JRuby, et il joue bien avec les Types Génériques, donc je ne pas avoir à jeter un Objet dans mon genre.

3voto

UR6LAD Points 154

snakeyaml ou yamlbeans

Ces bibliothèques sont développés et ont tous deux prise en charge. Je ne pense pas à l’aide des bibliothèques non prises en charge dans les projets propres est donc une bonne idée.

snakeyaml : code.google.com/p/snakeyaml/
yamlbeans : code.google.com/p/yamlbeans/

2voto

takidoso Points 21

Je suis toujours à l'aide de JvYaml et juste peut dire quelque chose sur celui-ci. Il est vraiment facile à utiliser et prend en charge vraiment beaucoup. Mais c'est devenu vraiment un gros inconvénient: Si il y a une erreur le moteur ne permet pas de savoir où l'erreur s'est produite. De sorte que son une sorte d'essai et d'erreur ensuite. J'ai changé quelques choses dans le code source pour moi d'avoir un peu plus de confort, mais il reste encore de la situation où aucune colonne ou la ligne numéro est affiché à l'utilisateur. Depuis que j'ai découvert cette question et de la réponse de yaml, je pense que je vais donner SnakeYaml de l'essayer pour mon prochain nouveau programme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X