Какая лучшая альтернатива для сериализации Java? - PullRequest
45 голосов
/ 27 октября 2008

В настоящее время я работаю над проектом, который должен сохранять любой тип объекта (реализация которого мы не имеем никакого контроля), чтобы впоследствии эти объекты могли быть восстановлены.

Мы не можем реализовать ORM, потому что мы не можем ограничивать пользователей нашей библиотеки во время разработки.

Наша первая альтернатива заключалась в том, чтобы сериализовать его с использованием сериализации по умолчанию на Java, но у нас было много проблем с восстановлением объектов, когда пользователи начали передавать разные версии одного и того же объекта (атрибуты изменяли типы, имена, ...). 1005 *

Мы пробовали с классом XMLEncoder (преобразует объект в XML), но обнаружили, что отсутствует функциональность (например, не поддерживает Enums).

Наконец, мы также попробовали JAXB, но это заставляет наших пользователей комментировать свои классы.

Любая хорошая альтернатива?

Ответы [ 13 ]

1 голос
/ 27 октября 2008

Возможно Кастор ?

0 голосов
/ 13 апреля 2019

SBE - признанная библиотека для быстрой библиотеки сериализации на основе байтовых буферов, способная к управлению версиями. Однако его немного сложно использовать, так как над ним нужно писать классы-оболочки длины.

В свете его недостатков я недавно создал библиотеку сериализации только для Java, основанную на SBE и FIX-протоколе (общий протокол финансового рынка для обмена сообщениями о торговле / котировках), который пытается сохранить преимущества обоих при преодолении недостатки. Вы можете взглянуть на https://github.com/iceberglet/anymsg

0 голосов
/ 11 августа 2013

Еще одна идея: использовать кеш. Кэши обеспечивают лучшее управление, масштабируемость и надежность приложения. Хотя все еще нужно сериализоваться, но управление становится намного проще с помощью инфраструктуры кэширования. Кэш-память может сохраняться в памяти, на диске, в базе данных или массиве - или во всех параметрах, при этом один из них является переполнением, резервированием, переключением на другой ресурс. Commons JCS и Ehcache - две реализации Java, последняя - корпоративное решение, свободное до 32 ГБ памяти (отказ от ответственности: я не работаю для ehcache ;-)).

...