OpenJDK 和 Oracle JDK 兼容序列化是否明智?
Are OpenJDK and Oracle JDK compatible serialization wise?
你能用 OpenJDK 安全地反序列化一些我们通过 Oracle JDK 序列化得到的二进制数据吗? (反之亦然)
让我们假设 java 版本相同(并且 class 代码可用,并且在两个阶段都是相同的)。
Oracle JVM 序列化对象的确切方式是否被视为 public 信息?
扩展@morgano、@RealSkeptic 和@EJP(应该给予荣誉)的评论:是的,Java 对象序列化由 an official specification 指导,即 [=14] =],所以任何做序列化的JVM实现都应该符合它,否则就不能称为JVM。
我会说这并不完全安全。在我的 Android 应用程序中,我无法反序列化已在 Android 6 设备上序列化的 Android 7 设备上的数据。显然,Google 在 Android 7 中切换到了 OpenJDK。
我得到的错误是:
java.io.StreamCorruptedException: invalid type code: 71
This problem was reported here in a similar fashion
这会带来很大的问题,因为我的应用程序通过互联网发送序列化数据,如果它在 Android 6(或更低)和 Android 7 上运行,它将不兼容。
你能用 OpenJDK 安全地反序列化一些我们通过 Oracle JDK 序列化得到的二进制数据吗? (反之亦然)
让我们假设 java 版本相同(并且 class 代码可用,并且在两个阶段都是相同的)。
Oracle JVM 序列化对象的确切方式是否被视为 public 信息?
扩展@morgano、@RealSkeptic 和@EJP(应该给予荣誉)的评论:是的,Java 对象序列化由 an official specification 指导,即 [=14] =],所以任何做序列化的JVM实现都应该符合它,否则就不能称为JVM。
我会说这并不完全安全。在我的 Android 应用程序中,我无法反序列化已在 Android 6 设备上序列化的 Android 7 设备上的数据。显然,Google 在 Android 7 中切换到了 OpenJDK。 我得到的错误是:
java.io.StreamCorruptedException: invalid type code: 71
This problem was reported here in a similar fashion
这会带来很大的问题,因为我的应用程序通过互联网发送序列化数据,如果它在 Android 6(或更低)和 Android 7 上运行,它将不兼容。