我对字节码和序列化有疑问。
字节码 - 每个java类都转换为字节码进行编译,并作为字节/字节码流存储在内存(磁盘)上。
序列化 - 序列化是将对象的状态保存为字节序列的过程。
这个字节码本身不能用于通过网络发送吗?
那么两者之间的确切差异是什么?
提前致谢。
答案 0 :(得分:1)
序列化 - 序列化是保存对象的过程 状态到一个字节序列这个字节码可以通过发送 网络和反序列化后,它将被加载到另一个jvm 作为普通对象
编译 - 编译是从中创建字节码的过程 类java,然后加载到本地jvm。如果要使用对象 在其他jvm中,那么你必须实现Serializable接口
答案 1 :(得分:1)
概念完全不相关。
每个java类都转换为字节码进行编译
不,它没有被转换为编译。 Bytecode是编译的结果。它是由虚拟机(Java中的JVM)运行的代码,如机器代码,由CPU直接运行。它是二进制的(字节序列而不是字符),因为它是一种更紧凑的表示。它不包含任何对象的状态(常量除外)。
Serialization存储对象的状态(默认Java序列化是二进制,但其他库/语言可以使用文本)。序列化对象不包含字节码:您无法运行它或在JVM中运行它。
答案 2 :(得分:0)
是的,字节码(java类文件)可用于通过网络发送,但通过发送字节码,您传输的是java类而不是java对象。
序列化用于保存或传输对象。