Сериализация по умолчанию:
- Создает несколько экземпляров классов, которые должны быть синглетонами при десериализации
- Возможно, есть проблемы с измененными десериализованными объектами "на лету" (да?)
Второй пункт спорен.Кто изменил данные bytestream?Если это могло произойти, у нас есть более серьезная проблема, чем десериализация: безопасность.Подписанные / зашифрованные потоки также решат проблему сериализации.
Первый - настоящий.Сериализуйте один и тот же синглтон несколько раз, десериализуйте на другой стороне и упс!у вас есть несколько синглетонов (мультитоны?).Хотя эту проблему ИМХО проще решить, сделав из Enum синглтон, тогда JVM принудительно задействует сам единственный экземпляр.
ОБНОВЛЕНИЕ
Как указал Стив Б.Постер блога, возможно, неправильно понял / неверно представил то, что он прочитал.Вместо «сериализации, настройки байтов, а затем десериализации» следует читать «сериализация, развертывание новой версии класса, десериализация».Да, это известная проблема, и интерфейс Externalizable позволяет ее аккуратно решить, взяв полный контроль над сериализацией класса, поэтому даже более поздняя версия класса может десериализовать собственные данные из потока, созданного предыдущими версиями (если это возможно)на все).