[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-serializatsiya-chto-takoe-serializatsiya":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},968,"chto-takoe-serializatsiya",30,"serializatsiya","Сериализация","📦","Что такое сериализация?","Сериализация — это процесс преобразования структуры данных (объекта) в линейную последовательность байтов для передачи по сети, сохранения в файл или хранения в базе данных. Обратный процесс — десериализация — восстанавливает объект из этой последовательности.\n\n> **Аналогия из жизни:** представьте, что вам нужно переслать собранный шкаф из IKEA другу. Вы не можете запихнуть его целиком в посылку, поэтому разбираете на плоские детали и прикладываете инструкцию по сборке. Друг получает посылку и собирает шкаф обратно. Разборка — сериализация, сборка — десериализация.\n\nВ Java существует два стандартных способа сериализации:\n\n- `java.io.Serializable` — стандартная сериализация через рефлексию, минимум кода\n- `java.io.Externalizable` — расширенная сериализация с полным контролем, разработчик сам описывает логику записи\u002Fчтения\n\n### Совместимые изменения класса\n\nСпецификация Java Object Serialization допускает ряд изменений без потери совместимости:\n\n- добавление в класс новых полей\n- изменение полей из статических в нестатические\n- изменение полей из транзитных в нетранзитные\n\nОбратные изменения (из нестатических в статические, из нетранзитных в транзитные) или удаление полей требуют дополнительной обработки в зависимости от того, какая степень обратной совместимости необходима.\n\n### Частые ошибки\n\n- Путать сериализацию с маршаллингом — маршаллинг включает передачу кода (codebase), сериализация только данные\n- Считать, что сериализация сохраняет поведение — сохраняется только состояние (поля), не методы\n- Забывать, что Java-сериализация привязана к платформе — десериализовать на Python\u002FGo не получится\n\n> **На собеседовании:** достаточно дать определение, назвать два интерфейса (`Serializable`, `Externalizable`) и упомянуть, что конструктор при стандартной десериализации не вызывается. Плюсом будет отметить, что Java-сериализация в новых проектах не рекомендуется в пользу JSON\u002FProtobuf.","","junior",[15],"serialization",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое сериализация? — Gymterview","Сериализация — это процесс преобразования структуры данных (объекта) в линейную последовательность байтов для передачи по сети, сохранения в файл или хранения в","Сериализация — это процесс преобразования структуры данных (объекта) в линейную последовательность байтов для передачи п",[15,13],"Сериализация — это процесс преобразования структуры данных (объекта) в линейную последовательность байтов для передачи по сети, сохранения в файл или хранения в базе данных. Обратный процесс — десериализация — восстанавливает объект из этой последовательности.",true]