使用Oracle JDK编译Java代码,然后在OpenJDK上运行代码是否可行?

15

那么,在 Windows 7 上开发 Java 守护程序(Apache Daemon)的所有工作完成后,能否将其安装在已安装 OpenJDK 的 Ubuntu 服务器上(仍需搜索如何做到这一点)?

如果可以,我该如何确定两个系统上兼容的 Java 版本?我的意思是,如果我在 Windows 上使用 Java 1.6,那么 Ubuntu 服务器上至少需要哪个兼容的 OpenJDK 版本?

4个回答

11

3

Java字节码是可移植的,并且可以在具有相同或更新版本的任何JVM上执行。


那么 Oracle JDK 1.6 应该与 OpenJDK 6 兼容?这是个好消息,但它在哪里被正式声明了呢? - Muhammad Gelbana
5
Java的一个主要特性是字节码兼容性。但实际世界中的兼容性取决于许多因素。如果您的代码受限于JDK类,则它应该可以在拥有相同或更新版本的JVM上运行,不依赖于供应商或操作系统。如果您使用一些Oracle JDK特定的功能或操作系统特定的功能,则代码的可移植性可能会被破坏。此外,不同的JVM可能会导致代码性能不同。 - gkuzmin

1

如果您编译的是Java 1.6,那么您至少需要OpenJDK 1.6。虽然Hotspot和OpenJDK有时会有所不同,但由于Hotspot基于OpenJDK,因此您更可能看到构建版本中的轻微差异。

两个JVM都符合JLS规范,并且在我看来实际上是参考实现。OpenJDK是开放标准,而HotSpot则被广泛用作商业标准。发布版本几乎完全相同。

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


0

不,不是这样,但你不用担心。Java是一个标准化平台,你应该能够在任何实现上编译和运行它。只要记住版本即可。Java 7软件不会完全在Java 6安装中运行。但Java 6软件可以完全在Java 7安装上工作。


我猜你是在单一供应商的上下文中谈论。那么不同JDK供应商之间的兼容性呢? - Muhammad Gelbana
@MuhammadGelbana,同一供应商可能无法完全运行,不同的供应商大多数情况下也不能运行。您应该尝试自行测试。 - Sai Ye Yan Naing Aye

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