Существует огромное количество библиотек и подходов для сериализации и де-сериализации объектов в Java. То, что я хотел бы сделать, включает в себя довольно большие и сложные объекты, которые необходимо отправлять туда и обратно между обрабатывающими узлами.Частичная десериализация и сериализация в Java?
Однако каждый узел интересуется только одной или несколькими, как правило, небольшими частями всего объекта. Процессорный узел обрабатывает эту часть и создает новую часть, которая должна быть подключена к существующему сериализованному объекту до его отправки.
Для этого две вещи будут иметь большое значение:
- будучи в состоянии только десериализации части сериализованного объекта (и, таким образом, сохранить разборе/время десериализации, время создания объекта, память ...) и также добавить сериализацию какой-либо новой части к существующему сериализованному объекту (снова экономя время и память). Пропуск нежелательных частей в сериализованной версии должен быть чрезвычайно быстрым и эффективным и в идеале должен быть возможен в потоковом режиме без необходимости чтобы сохранить все последовательные данные в памяти сразу
- полная компактная и быстрая сериализация и десериализация.
Я довольно гибко отношусь к тому, насколько автоматизирован процесс создания типизированных объектов по сравнению с нетипизированными картами и списками: если все остальное не получится, я смог бы представить весь объект в виде вложенной структуры данных только для карт, массивы и базовые типы данных boolean, String и Number.
ОБНОВЛЕНИЕ: забыл упомянуть два дополнительных, весьма важных требований:
решение должно быть возможным с существующими объектами, т.е. не представляется возможным повторно реализовать текущий объект с использованием, например, класс разных коллекций.
В идеале решение должно основываться на программном обеспечении с открытым исходным кодом, поскольку программное обеспечение, в котором я нуждаюсь, будет опубликовано как открытый источник.
Можно ли разложить сложный объект на части и сериализовать отдельные части? –
Вы изучали экстернализацию? –
Существует несколько библиотек, которые позволяют вам использовать сериализованные объекты для извлечения или обновления только интересующих вас полей. Chronicle Byte/Wire, SBE, Javolution struct. –