Лично я обнаружил, что двоичная сериализация, встроенная в Java, чрезвычайно болезненна. смешно легко привести к несовместимости версий, даже если вы ничего не изменили, и вы ожидаете, что вызовет проблемы.
Это не проблема, если:
- Вы можете гарантировать, что все ваши клиенты / серверы будут работать с одной и той же версией вашего кода.
- Вам никогда не нужно читать данные, которые были написаны предыдущей версией.
Может быть, это ваша ситуация, но лично я предпочитаю формат сериализации, который позволяет мне быть более гибким с версионированием.Теперь это не требует, чтобы он был двоичным или текстовым, конечно.Вы можете использовать JSON, протокол буфера , Thrift или любое количество других опций.У каждого будут свои плюсы и минусы - но, скорее всего, каждый будет спроектирован с учетом более простой совместимости версий, чем Java.
Теперь плюс сериализации Java заключается в том, что пока вы находитесь вВ ситуации, когда все работает (все дерево можно сериализовать), вы можете просто сериализовать его без каких-либо других изменений - вам не нужно отдельно моделировать ваши данные, как это происходит в некоторых средах сериализации.К сожалению, как только вы захотите использовать класс, который не сериализуемый где-то в вашем дереве, вы снова почувствуете боль ...
Что касается выбора между текстовым и бинарнымформы - плюсы и минусы разумно очевидны.Текст больше, но проще диагностировать происходящее, просто взглянув на следы сети.Конечно, вам нужно убедиться, что вы используете одну и ту же кодировку с обеих сторон.
О, и, конечно, если вы когда-нибудь захотите общаться с не-Java клиент-сервером, вам будет трудноесли вы использовали собственную сериализацию Java:)