字节代码与字节流(序列化)

时间:2016-06-15 07:03:06

标签: java serialization

我对字节码和序列化有疑问。

字节码 - 每个java类都转换为字节码进行编译,并作为字节/字节码流存储在内存(磁盘)上。

序列化 - 序列化是将对象的状态保存为字节序列的过程。

这个字节码本身不能用于通过网络发送吗?

那么两者之间的确切差异是什么?

提前致谢。

3 个答案:

答案 0 :(得分:1)

  • 序列化 - 序列化是保存对象的过程 状态到一个字节序列这个字节码可以通过发送 网络和反序列化后,它将被加载到另一个jvm 作为普通对象

  • 编译 - 编译是从中创建字节码的过程 类java,然后加载到本地jvm。如果要使用对象 在其他jvm中,那么你必须实现Serializable接口

答案 1 :(得分:1)

概念完全不相关。

  

每个java类都转换为字节码进行编译

不,它没有被转换为编译。 Bytecode是编译的结果。它是由虚拟机(Java中的JVM)运行的代码,如机器代码,由CPU直接运行。它是二进制的(字节序列而不是字符),因为它是一种更紧凑的表示。它不包含任何对象的状态(常量除外)。

Serialization存储对象的状态(默认Java序列化是二进制,但其他库/语言可以使用文本)。序列化对象不包含字节码:您无法运行它或在JVM中运行它。

答案 2 :(得分:0)

是的,字节码(java类文件)可用于通过网络发送,但通过发送字节码,您传输的是java类而不是java对象。

序列化用于保存或传输对象。