编码技术
基于Java提供的对象输入输出流,可以直接把Java对象作为可存储的字节数组写入文件,也可以传输到网络上去。
基于jdk默认的序列化机制可以避免操作底层的字节数组,从而提升开发效率。
Java序列化的两个目的
【1】网络传输
当进行远程跨进程服务调用时,需要把被传输的Java对象编码为字节数组或者bytebuffer对象。二当远程服务读取到bytebuffer对象或者字节数组时,需要将其解码为发送时的Java对象,这种技术被称为Java对象编解码技术。
【2】对象持久化
Java序列化的缺点
【1】无法跨语言
Java序列化最为致命的问题。
Java序列化技术是Java语言内部的私有协议,其他语言并不支持,对于用户来说完全是黑盒。对于Java序列化后的字节数组,别的语言无法进行反序列化。严重阻碍了它的应用。
【2】序列化以后的码流太大
package com.nio.seria;
import java.io.Serializable;
import java.nio.ByteBuffer;
public class UserInfo implements Serializable {
private String userName;
private Integer userId;
public UserInfo buildUserName(String userName){
this.userName = userName;
return this;
}
public UserInfo buildUserId(int userId){
this.userId = userId;
return this;
}
public String g