8 ответов:
давайте сначала определим сериализацию, а затем поговорим о том, почему она так полезна.
сериализация-это просто превращение существующего объекта в байтовый массив. Этот массив байтов представляет класс объекта, версию объекта и внутреннее состояние объекта. Затем этот массив байтов можно использовать между JVM, выполняющими один и тот же код для передачи/чтения объекта.
зачем нам это делать?
есть несколько причины:
связь: если у вас есть две машины, на которых выполняется один и тот же код, и они должны общаться, простой способ для одной машины построить объект с информацией, которую он хотел бы передать, а затем сериализовать этот объект на другой машине. Это не лучший способ общения, но он выполняет свою работу.
настойчивость: Если вы хотите сохранить состояние конкретной операции в базе данных, это может быть легко сериализовать в массив байтов, и хранится в базе данных для последующего извлечения.
глубокая копия: Если вам нужен точно реплика объекта, и не хотите тратить время на написание собственного специализированного класса clone (), просто сериализуя объект в массив байтов, а затем десериализуя его в другой объект, достигает этой цели.
кэширование: на самом деле просто приложение выше, но иногда объект занимает 10 минуты, чтобы построить, но займет всего 10 секунд, чтобы де-сериализации. Поэтому вместо того, чтобы удерживать гигантский объект в памяти, просто кэшируйте его в файл с помощью сериализации и читайте его позже, когда это необходимо.
перекрестная синхронизация JVM: сериализация работает на разных JVM, которые могут работать на разных архитектурах.
во время работы приложения все его объекты хранятся в памяти (ОЗУ). Когда вы выходите, эта память восстанавливается операционной системой, и ваша программа по существу "забывает" все, что произошло во время ее работы. Сериализация устраняет это, позволяя приложению сохранять объекты на диск, чтобы он мог прочитать их обратно при следующем запуске. Если ваше приложение будет предоставлять какой-либо способ сохранения/совместного использования предыдущего состояния, вам понадобится некоторая форма сериализация.
Я могу поделиться своей историей, и я надеюсь, что это даст некоторые идеи, почему сериализация необходима. Тем не менее, ответы на ваш вопрос уже удивительно подробно.
У меня было несколько проектов, которые нужно загрузить и прочитать кучу текстовых файлов. Файлы, содержащиеся стоп-слова, глаголы медико-биологических, биомедицинских аббревиатуры, слова семантически связаны друг с другом и т. д. Содержание этих файлов просты:слова!
теперь для каждого проекта, мне нужно прочитайте слова из каждого из этих файлов и поместите их в разные массивы; поскольку содержимое файла никогда не менялось, оно стало общей, хотя и избыточной задачей после первого проекта.
Итак, я создал один объект для чтения каждого из этих файлов и заполнения отдельных массивов (переменных экземпляра объектов). Затем я сериализовал объекты, а затем для более поздних проектов я просто десериализовал их. Мне не нужно было читать файлы и заполнять массивы снова и снова.
сериализация-это процесс преобразование набора экземпляров объекта которые содержат ссылки друг на друга в линейный поток байтов, который затем можно отправить через сокет, сохраненный в файл, или просто манипулируется как поток данных
см. использование от Wiki:
сериализация имеет ряд преимуществ. Он обеспечивает:
- метод сохранения объектов, которые это удобнее, чем писать их свойства для текстового файла на диск, и Повторно собирая их по читаю это обратно.
- метод выдача удаленных вызовов процедур, например, как в мыле
- метод распределение объектов, особенно в компоненты программного обеспечения, такие как COM, Корба и др.
- метод обнаружения изменения в изменяющихся во времени данных.
наиболее очевидным является, что вы можете передавать сериализованный класс по сети, и восприимчивый может построить дубликат исходного мгновения. Также, сериализованную структуру можно сохранить в файловой системе.
кроме того, обратите внимание, что сериализация рекурсивна, поэтому вы можете сериализовать весь гетерогенный структура данных в одном ФУПе зыби, если пожелано.
Я использую сериализованные объекты для стандартизации аргументов, которые я передаю в функции или конструкторы классов. Передача одного сериализованного компонента намного чище, чем длинный список аргументов. Результатом является код, который легче читать и отлаживать.
сериализованные объекты сохранять состояние в пространстве, они могут быть переданы по сети, файловой системы и т. д... и время, они могут пережить JVM, который их создал.
иногда это полезно.
для простой цели обучения (обратите внимание, я сказал learning, я не сказал best или даже good, но просто ради понимания материала) вы можете сохранить свои данные в текстовый файл на компьютере, а затем иметь программу, которая читает эту информацию, и на основе файла вы можете по-разному реагировать на вашу программу. Если бы Вы были более продвинутым, это не обязательно должен быть txt-файл, но что-то еще.
сериализация с другой стороны, ставит вещи непосредственно в компьютерный язык. Это похоже на то, что вы говорите испанскому компьютеру что-то по-испански, а не говорите ему что-то по-французски, заставляя его изучать французский язык, а затем сохранять вещи на своем родном испанском языке, переводя все. Не самый технологичный ответ, я просто пытаюсь создать понятный пример в формате общего языка.
сериализация также быстрее, потому что в Java объекты обрабатываются в куче и занимают гораздо больше времени, чем если бы они были представлены как примитивы в стеке. Скорость, Скорость, Скорость. И меньше обработки файлов с точки зрения программиста.
Comments