Современная альтернатива библиотеке Java XStream? - PullRequest
14 голосов
/ 28 мая 2011

Я использовал XStream много лет назад, но вижу, что библиотеки не обновляются с 2008 года ( последние новости ). Есть ли сейчас более современная и современная библиотека сериализации Java XML?

Ответы [ 5 ]

23 голосов
/ 28 мая 2011

В порядке предпочтения, актуальности и активности:

JAXB

Посетите сайт проекта JAXB , чтобы проверитьруководство по и , руководство .Взгляните также на оригинальный документ по архитектуре JAXB .

Проект JAXB, указанный выше, является эталонной реализацией API и упакован сервером приложений GlassFish.

EclipseLink MOXy

Посетите сайт проекта EclipseLink и прочитайте эту вводную статью для EclipseLink на InfoQ и посмотрите ответ Блэза Дафана о MOXy .

EclipseLink возник из Oracle TopLink и теперь является открытым исходным кодом, управляемым Eclipse Foundation ,и используется в ряде продуктов на основе Eclipse.

XStream

Да, XStream , потому что это на самом деле обновлено в 2011 году с серьезным обновлением и 2 сервисными выпусками с тех пор, как вы спросили, поэтому оно выглядит ухоженным и довольно неплохим соперником, используемым зрелыми проектами .Не забудьте проверить, что нового в версии 1.4.x .

Посетите сайт проекта XStream и руководство по для сравнения.

XmlBeans

Посетите сайт проекта XmlBeans .

XmlBeans - это хорошо проверенный проект, которыйуже давно.

JiBX

Посетите сайт проекта JiBX , следуйте учебнику и guide .

JiBX может быть более простой альтернативой, если вам не нравится сложность XmlBeans или даже JAXB.

10 голосов
/ 28 мая 2011

Примечание: Я являюсь лидером EclipseLink JAXB (MOXy) и членом группы экспертов JAXB ( JSR-222 ).

Вы правильно учитываете частоту выпуска библиотек при выборе программного обеспечения. Есть много причин для выпуска нового продукта:

  • Запросы клиентов - Независимо от того, насколько хороша ваша библиотека, у вашей базы пользователей будут предложения по улучшению и запросы функций.
  • Отраслевые разработки - Модульное развертывание является горячей темой сейчас, за последние несколько лет пришлось внести изменения в EclipseLink, чтобы сделать его совместимым с OSGi.
  • Новые версии Java - Java SE 7 будет выпущен в ближайшее время, хотя для этого не требуется выпуск, нам нужно было внести некоторые поправки в наш предстоящий выпуск, чтобы обеспечить совместимость. Также со временем будет добавлено больше возможностей для использования новых аспектов Java (EclipseLink требует минимум Java SE 5).

Другим важным аспектом оценки любого проекта с открытым исходным кодом является количество активных коммиттеров. Для этого полезны сайты типа ohloh.net :

<Ч />

JAXB (JSR-222)

JAXB - это не просто реализация, это стандарт, разработанный с помощью процесса сообщества Java (JCP). Были участники из таких библиотек объект-XML, как XML Beans (BEA), EMF (IBM), TopLink (Oracle) и т. Д. Поскольку JAXB является частью Java EE, он доступен на каждом сервере приложений: WebLogic, GlassFish, WebSphere, JBoss и т. Д.

JAXB предлагает:

  • 100% охват схемы
  • Несколько реализаций: Метро , EclipseLink MOXy , Apache JaxMe и т. Д.
  • Включено в Java SE 6, совместимо с JDK 1.5
  • Возможность запуска из схемы XML или классов Java
  • Различные механизмы расширения, включая XmlAdapter - Пример
  • Возможность сохранить инфо-набор XML с помощью Binder - Пример
  • Связующий слой для JAX-WS (веб-сервисы)
  • Связующий слой для JAX-RS (Rest) - Пример
  • Совместимо с JSON (при использовании с такими библиотеками, как Jettison) - Пример
<Ч />

EclipseLink JAXB (MOXy)

MOXy - это реализация JAXB, которая предлагает множество полезных расширений, включая:

Отображение истинного объекта в XML с использованием XPath

Отображение на основе XPath позволяет начать как с классов Java, так и со схемой XML и сопоставить их вместе.

Файл отображения для обработки сторонних классов

В текущей спецификации JAXB метаданные предоставляются в виде аннотаций. Это может быть проблематично для использования со сторонними классами, которые не могут быть изменены. Вот почему MOXy предлагает способ указать сопоставления через XML:

Расширения для сопоставления объектов JPA

Зачастую вам нужно больше работать с объектами Java, а затем просто сопоставлять их с XML. Вам также может понадобиться сохранить их в базе данных. Это означает, что ваша объектная модель может иметь дополнительные ограничения, которые вы должны учитывать. MOXy предлагает ряд расширений для этого вида использования:

<Ч />

Сравнения

Ниже приведено несколько сравнений, которые я провел, сравнивая JAXB с XStream и Simple:

8 голосов
/ 28 мая 2011

Тот факт, что что-то не обновлялось в течение 3 лет, не означает, что оно устарело.Это может просто означать, что не нужно для его обновления.Если нет необходимости менять проект, зачем его менять?

Другое объяснение очевидного отсутствия «прогресса» состоит в том, что изменение библиотечных API-интерфейсов имеет тенденцию нарушать работу проектов, которые зависят от них.Это особенно проблематично для проектов, которые объединяют множество сторонних компонентов и библиотек в одно Java-приложение.


Поиск альтернатив для библиотеки - это хорошо, но просто сделать это потому, что библиотека недавно не обновлялась, - нет.Если XStream делает то, что вам нужно, придерживайтесь этого.Более новое не обязательно означает лучше.


ОБНОВЛЕНИЕ - 2019

XStream получает обновления с новым выпуском не реже одного раза в год с 2011 года.перейдите на страницу Changes для получения подробной информации и посмотрите действие в Github репозитории для проекта.На данный момент теория о том, что XStream не поддерживается, полностью опровергнута (IMO).

4 голосов
/ 28 мая 2011

XStream довольно хорош и хорошо справляется со своей работой. Даже для недавних проектов я предпочитаю использовать XStream для тех случаев, когда он подходит, потому что он прост в использовании, легок и действительно хорош.

Если вы смотрите на какую-то серьезную работу по связыванию компонентов, взгляните на Simple Framework. Это также хороший инструмент. Это помогло мне в одном проекте, где мне нужно было выполнить серьезную пользовательскую работу с аннотациями. http://simple.sourceforge.net/

0 голосов
/ 22 января 2014

XStream 1.4.6 был выпущен в декабре 2013 года с улучшениями в Java 8, поэтому библиотека была обновлена ​​с 2008 года.

...