Spec-Zone .ru
спецификации, руководства, описания, API
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT Спецификация Сериализации Объекта Java
версия 6.0

Управление версиями Сериализуемых Объектов






ГЛАВА 5


Темы:


5.1 Краткий обзор

Когда сериализация использования объектов Java, чтобы сохранить состояние в файлах, или как блобы в базах данных, потенциал возникает, что версия class, читая данные отличается чем версия, которая записала данные.

Управление версиями повышает некоторые фундаментальные вопросы об идентификационных данных class, включая то, что составляет совместимое изменение. Совместимое изменение является изменением, которое не влияет на контракт между class и его вызывающими сторонами.

Этот раздел описывает цели, предположения, и решение, которое пытается рассмотреть эту проблему, ограничивая виды позволенных изменений и тщательно выбирая механизмы.

Предложенное решение обеспечивает механизм для "автоматической" обработки классов, которые развиваются, добавляя поля и добавляя классы. Сериализация обработает управление версиями без class специфичные методы, которые будут реализованы для каждой версии. Потоковый формат может быть пересечен, не вызывая class специфичные методы.


5.2 Цели

Цели к:


5.3 Предположения

Предположения то, что:


5.4 Кто Ответственен за Управление версиями Потоков

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

Частный протокол сериализации и контракт с отношениями супертипа между развитыми и неразвитыми классами и их экземплярами

В целях обсуждения здесь, каждый class реализует и расширяет интерфейс или контракт, определенный его супертипом. Новые версии class, например foo', должен продолжать удовлетворять контракт для foo и может расширить интерфейс или изменить его реализацию.

Передача между объектами через сериализацию не является частью контракта, определенного этими интерфейсами. Сериализация является частным протоколом между реализациями. Это - обязанность реализаций связаться достаточно, чтобы позволить каждой реализации продолжать удовлетворять контракт, ожидаемый его клиентами.


5.5 Совместимое Развитие Типа Java

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

Следующее является принципиальными аспектами проекта для управления версиями сериализированных объектных потоков.


5.6 Введите Изменения, Влияющие на Сериализацию

С этими понятиями мы можем теперь описать, как проект справится с различными случаями развивающегося class. Случаи описываются с точки зрения потока, записанного некоторой версией class. Когда поток читается назад той же самой версией class, нет никакой потери информации или функциональности. Поток является единственным источником информации об исходном class. Его описания class, в то время как подмножество исходного описания class, достаточны, чтобы подойти данные в потоке с версией воссоздаваемого class.

Описания с точки зрения потока, считанного, чтобы воссоздать или более раннюю или более позднюю версию class. В языке систем RPC это - "получатель, делает правильную" систему. Писатель пишет его данные в самой подходящей форме, и получатель должен интерпретировать ту информацию, чтобы извлечь части, в которых это нуждается и заполнить части, которые не доступны.


5.6.1 Несовместимые Изменения

Несовместимые изменения к классам являются теми изменениями, для которых не может сохраняться гарантия функциональной совместимости. Несовместимые изменения, которые могут произойти, развивая class:


5.6.2 Совместимые Изменения

Совместимые изменения к class обрабатываются следующим образом:



СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT
Авторское право © 2005, 2010, Oracle и/или его филиалы. Все права защищены.