Я считал множество статей о Сериализации и как это является настолько хорошим и большим, но ни один из аргументов не убеждал достаточно. Я задаюсь вопросом, может ли кто-то действительно сказать мне, чего мы можем действительно достигнуть путем сериализации класса?
Давайте сначала определим сериализацию, а затем поговорим о том, почему она так полезна.
Сериализация - это просто превращение существующего объекта в массив байтов. Этот байтовый массив представляет класс объекта, версию объекта и внутреннее состояние объекта. Затем этот массив байтов можно использовать между JVM, выполняющими один и тот же код, для передачи / чтения объекта.
Зачем нам это нужно?
Есть несколько причин:
Связь: если у вас есть две машины, на которых выполняется один и тот же код, и им нужно обмениваться данными, простой способ - одна машина может создать объект с информацией, которую он хотел бы передать, а затем сериализовать этот объект на другой компьютер. Это не лучший способ общения, но он выполняет свою работу.
Постоянство: если вы хотите сохранить состояние определенной операции в базе данных, ее можно легко преобразовать в массив байтов и сохранить в базе данных для последующего извлечения.
Глубокая копия: если вам нужна точная реплика объекта, и вы не хотите создавать собственный специализированный класс clone (), просто сериализуя объект в байтовый массив , а затем десериализация в другой объект позволяет достичь этой цели.
Кэширование: На самом деле это просто приложение из вышеперечисленного, но иногда для создания объекта требуется 10 минут, а для десериализации требуется всего 10 секунд. Поэтому вместо того, чтобы удерживать гигантский объект в памяти, просто кэшируйте его в файл с помощью сериализации и считайте позже, когда это понадобится.
Перекрестная синхронизация JVM: Сериализация работает на разных JVM, которые могут работать на разных архитектурах.
Пока вы запускаете приложение, все его объекты хранятся в памяти (RAM). Когда вы выходите, эта память освобождается операционной системой, и ваша программа по сути «забывает» все, что происходило во время работы. Сериализация исправляет это, позволяя вашему приложению сохранять объекты на диск, чтобы оно могло прочитать их при следующем запуске. Если ваше приложение будет предоставлять какой-либо способ сохранения / совместного использования предыдущего состояния, вам понадобится некоторая форма сериализации.
Наиболее очевидным является то, что вы можете передавать сериализованный класс по сети, и получатель может создать дубликат оригинального экземпляра. Аналогично, вы можете сохранить сериализованную структуру в файловой системе.
Также обратите внимание, что сериализация является рекурсивной, поэтому вы можете сериализовать всю гетерогенную при желании можно сериализовать всю гетерогенную структуру данных одним махом.
Сериализованные объекты сохраняют состояние в пространстве, их можно передавать по сети, файловой системе и т. Д. И со временем они могут пережить JVM, создавшую их.
Иногда это бывает полезно.
По сути :
Сериализация - это процесс преобразования набора экземпляров объекта , содержащих ссылки друг на друга в линейный поток байтов, который затем может быть отправлен через сокет, сохранен в файл или просто обработан как поток данных
См. использование из Wiki :
Сериализация имеет ряд преимуществ. Он предоставляет:
- метод сохранения объектов, который более удобен, чем запись их свойств в текстовый файл на диске и их повторная сборка с помощью {{1} }} читая это обратно в.
- метод выдачи удаленных вызовов процедур, например, как в SOAP
- метод для распределения объектов, особенно в { Программные компоненты {1}}, такие как COM, CORBA и т. Д.
- метод обнаружения изменений в изменяющихся во времени данных.