Какова цель Сериализации в Java?

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

101
задан Tano 19 April 2016 в 10:12
поделиться

5 ответов

Давайте сначала определим сериализацию, а затем поговорим о том, почему она так полезна.

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

Зачем нам это нужно?

Есть несколько причин:

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

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

  • Глубокая копия: если вам нужна точная реплика объекта, и вы не хотите создавать собственный специализированный класс clone (), просто сериализуя объект в байтовый массив , а затем десериализация в другой объект позволяет достичь этой цели.

  • Кэширование: На самом деле это просто приложение из вышеперечисленного, но иногда для создания объекта требуется 10 минут, а для десериализации требуется всего 10 секунд. Поэтому вместо того, чтобы удерживать гигантский объект в памяти, просто кэшируйте его в файл с помощью сериализации и считайте позже, когда это понадобится.

  • Перекрестная синхронизация JVM: Сериализация работает на разных JVM, которые могут работать на разных архитектурах.

177
ответ дан 24 November 2019 в 04:38
поделиться

Пока вы запускаете приложение, все его объекты хранятся в памяти (RAM). Когда вы выходите, эта память освобождается операционной системой, и ваша программа по сути «забывает» все, что происходило во время работы. Сериализация исправляет это, позволяя вашему приложению сохранять объекты на диск, чтобы оно могло прочитать их при следующем запуске. Если ваше приложение будет предоставлять какой-либо способ сохранения / совместного использования предыдущего состояния, вам понадобится некоторая форма сериализации.

55
ответ дан 24 November 2019 в 04:38
поделиться

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

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

1
ответ дан 24 November 2019 в 04:38
поделиться

Сериализованные объекты сохраняют состояние в пространстве, их можно передавать по сети, файловой системе и т. Д. И со временем они могут пережить JVM, создавшую их.

Иногда это бывает полезно.

0
ответ дан 24 November 2019 в 04:38
поделиться

По сути :

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

См. использование из Wiki :

Сериализация имеет ряд преимуществ. Он предоставляет:

  1. метод сохранения объектов, который более удобен, чем запись их свойств в текстовый файл на диске и их повторная сборка с помощью {{1} }} читая это обратно в.
  2. метод выдачи удаленных вызовов процедур, например, как в SOAP
  3. метод для распределения объектов, особенно в { Программные компоненты {1}}, такие как COM, CORBA и т. Д.
  4. метод обнаружения изменений в изменяющихся во времени данных.
3
ответ дан 24 November 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: