是否可以使用OracleJDK编译java并在OpenJDK上运行代码?

是否可以使用OracleJDK编译java并在OpenJDK上运行代码?,java,cross-compiling,jdk1.6,openjdk,Java,Cross Compiling,Jdk1.6,Openjdk,那么,是否有可能在Windows7机器上完成Java守护进程(Apache守护进程)的所有开发,然后在安装了OpenJDK的Ubuntu服务器上安装服务(仍然需要搜索如何实现) 如果是,如何识别两个系统上的Java兼容版本?我的意思是,如果我在windows上使用Java 1.6,那么我在Ubuntu服务器上应该拥有的最不兼容的OpenJDK版本是什么?Java字节码是可移植的,可以使用具有相同或更新版本的任何JVM执行 大多数情况下是肯定的,但对于极端情况,这取决于并应在与生产配置密切匹配的阶

那么,是否有可能在Windows7机器上完成Java守护进程(Apache守护进程)的所有开发,然后在安装了OpenJDK的Ubuntu服务器上安装服务(仍然需要搜索如何实现)


如果是,如何识别两个系统上的Java兼容版本?我的意思是,如果我在windows上使用Java 1.6,那么我在Ubuntu服务器上应该拥有的最不兼容的OpenJDK版本是什么?

Java字节码是可移植的,可以使用具有相同或更新版本的任何JVM执行

大多数情况下是肯定的,但对于极端情况,这取决于并应在与生产配置密切匹配的阶段上仔细测试

以下是OpenJDK上发生的编译器崩溃和测试失败的示例,而Oracle JDK构建时源代码的相同快照为绿色:


不,这不是问题,但您无需担心。Java是一个标准化的平台,您应该能够编译并在其任何实现上运行。只要你记住这个版本。Java 7软件不会完全在Java 6安装上运行。不过,Java 6软件在Java 7安装上完全可以工作。

如果您已经为Java 1.6编译过,您至少需要OpenJDK 1.6。很少有情况下Hotspot和OpenJDK是不同的,但由于Hotspot是基于OpenJDK的,您更可能在构建版本中看到细微的差异

JVM都符合JLS规范,IMHO实际上是参考实现。OpenJDK是一种开放标准,作为商业标准被广泛使用。发布的版本几乎完全相同


如果这是一个真正的问题,您可以在Ubuntu上安装相同版本的Hotspot。

那么Oracle JDK 1.6应该与OpenJDK 6兼容吗?这是一个好消息,但它是否在某个地方正式声明过?字节码兼容性是Java的主要特性之一。但现实世界的兼容性取决于许多因素。如果您的代码是在JDK类中绑定的,那么它应该在JVM中工作,JVM具有相同或更新的版本,而不依赖于供应商或操作系统。如果您使用一些Oracle JDK特定的功能或操作系统特定的功能,那么代码的可移植性可能会被破坏。代码性能在不同的JVM上也会有所不同。我猜您是在单个供应商的环境中讨论的。不同JDK供应商之间的兼容性如何?@MuhammadGelbana同一个供应商不能完全工作。所以不同的供应商大多不起作用。你应该试着测试一下自己。