根据序列化定义,它是将数据结构或对象状态转换为可以存储的格式(例如,在文件或内存缓冲区中,或通过网络连接链接传输)并稍后在其中重建的过程。或其他计算机环境。
除了通过网络传输对象之外,定义中的一切都很清楚。串行化是java对象通过netowrk传输的唯一方法吗?
在webapp的上下文中,有许多pojo类没有实现可序列化的接口,但我们仍然从客户端访问这些类的对象。 app服务器或JVM是否处理这些类的序列化?
答案 0 :(得分:2)
您的类实际上不需要实现Serializable
以便通过网络传输它们,因为有许多不同形式的序列化,而java的内置实际上并不是那么好。为什么?因为接收端必须也是 java 应用程序,并且它必须具有您要传输的类的兼容版本。
通过网络传输数据的更加便携和灵活的方式是marshal它们到XML / JSON,可以从任何系统使用,无论是java,c ++,python还是其他任何系统(和正如您可能已经猜到的那样 - 对象不需要实现Serializable
以便(un)编组XML,Json等等。)
还有很多其他序列化框架比java的内置序列化机制更好地完成这项任务。一个例子是:谷歌的Protobuff,Apache Thrift,Avro,Kryo等等。
在webapp的上下文中,有许多pojo类没有实现可序列化的接口,但我们仍然从客户端访问这些类的对象。 app服务器或JVM是否处理这些类的序列化?
不,这是由应用程序或您正在使用的框架处理的。例如,Jax-RS实现将使用像Jakson
这样的库来在后台将对象封送到Xml / Json或从Xml / Json封送。
答案 1 :(得分:0)
Serializable
。
客户端的数据传输通常不是由Java序列化(JSON / XML)完成的,正如其他人已经解释过的那样。