Подтвердить что ты не робот

Современная альтернатива библиотеке Java XStream?

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

4b9b3361

Ответ 1

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

JAXB

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

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

EclipseLink MOXy

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

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

XStream

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

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

XmlBeans

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

XmlBeans - хорошо протестированный проект, который был вокруг на некоторое время.

JiBX

Посетите сайт проекта JiBX, следуйте tutorial и руководство.

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

Ответ 2

Примечание. Я EclipseLink JAXB (MOXy) и член JAXB (JSR-222) экспертная группа.

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

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

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


JAXB (JSR-222)

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

Предложения JAXB:

  • 100% охват схемы
  • Несколько реализаций: Metro, 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:

Ответ 3

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

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


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


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

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

Ответ 4

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

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

Ответ 5

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