2013-08-02 2 views
3

Я начинаю программировать, и мне просто интересно, существует ли разница между процессом сериализации и процессом преобразования в и из байтового кода (промежуточный язык).Сериализация по сравнению с байтовым кодом

Я нашел это на javacodegeeks.com:

Сериализация обычно используется, когда возникает необходимость отправить ваши данные по сети или хранятся в файлах. По данным я имею в виду объекты, а не текст. Теперь проблема в вашей сетевой инфраструктуре, и ваш жесткий диск - это аппаратные компоненты, которые понимают биты и байты, но не объекты Java . Сериализация - это перевод значений вашего состояния Java в состояния байтов для отправки по сети или их сохранения. ->On другой рукой, десериализация - это преобразование байтового кода в соответствующих java-объектов. < -

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

Я правильно понял это?

ответ

6

Из моего понимания этого параграфа сериализация может быть процессом, посредством которого java преобразует свои программы в байт-код для возможности переноса в разные компьютерные среды и по-прежнему функционирует правильно. Правильно ли я об этом думаю?

Нет, компиляция с помощью javac создает байт-код, который запускается на JVM. VM (например, JVM) INTERPRET байт-код и используют некоторую умную и сложную компиляцию точно в срок (которая зависит от машины/платформы), чтобы дать вам конечный продукт. См. Байт-код - это всего лишь пучок instructions, который интерпретирует JVM. Каждый код операции байткода имеет длину по одному байту, следовательно, байт-код имени.

Сериализация, с другой стороны, преобразует состояние объекта Java в поток байтов. Эти байты не являются инструкциями, как байт-код. Первичная цель Java Serialization - записать объект в поток, чтобы его можно было транспортировать по сети, и этот объект можно снова перестроить. Когда есть две разные стороны, вам нужен протокол для повторного восстановления того же самого объекта. API-интерфейс Java-сериализации просто предоставляет вам это. Другие способы использования функции сериализации - это вы можете использовать ее для выполнения глубокой копии.

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

См., Что вы не можете просто передать объект java на сетевой уровень сети и ожидать, что он сможет отправить. Сети отправляют биты и байты через физический носитель. Таким образом, serializable позволяет вам кодировать объект стандартным способом в двоичном формате, передавать его по сети и затем декодировать его на принимающей стороне обратно объекту в точном состоянии, в котором объект находился на стороне отправки.

+0

, чтобы развернуть этот, байтовый код является одним из шагов в процессе выполнения java-программы [как показано здесь] (http: //img.viralpatel.нетто/2008/12/Java-программы-execution.png). Сериализация - это процесс, используемый в некоторых ситуациях многими языками программирования (он может иметь разные имена), чтобы, как объяснил sunrize, преобразовать объект в байты для хранения/транспортировки. одним из распространенных способов сериализации является запись файлов. – scottyseus

Смежные вопросы