OpenJDK和Oracle JDK在序列化方面是否兼容?

4

你能否安全地使用OpenJDK反序列化使用Oracle JDK序列化的某些二进制数据?(反之亦然)

假设Java版本相同(并且类代码在两个阶段都可用且相同)。

Oracle JVM序列化对象的确切方式是否被视为公共信息?


2
是的,就序列化而言,它们是兼容的。关于您最后一个问题,“public information”是什么意思?您是指“公共领域”吗? - morgano
4
你的意思是,它们都符合Java对象序列化规范吗?我认为那就是这个规范的目的。 - RealSkeptic
@morgano 我的意思是问这是否是秘密。谢谢你的回答! - Ofer
1
@RealSkeptic 谢谢!所以如果我理解正确,这个规范完美地定义了序列化的方式。 - Ofer
1
对象序列化规范是公开信息,并且它所说的就是它做的事情。 - user207421
显示剩余3条评论
2个回答

2

扩展一下@morgano、@RealSkeptic和@EJP的评论(应给予他们荣誉):是的,Java对象序列化是由一个官方规范指导的,这个规范是公开的,因此任何进行序列化的JVM实现都应该符合它,否则就不能被称为JVM。


1

我会说这并不完全安全。在我的Android应用程序中,我无法在Android 7设备上反序列化由Android 6设备序列化的数据。显然,Google在Android 7中切换到了OpenJDK。 我遇到的错误是:

java.io.StreamCorruptedException: invalid type code: 71

这个问题在此以类似方式报告

这是一个相当大的问题,因为我的应用程序通过互联网发送序列化数据,如果它在Android 6(或更低版本)和Android 7上运行,则不兼容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接