3

如果我使用 Java 5 代码将应用程序编译为字节码,生成的 .class 文件是否能够在 Java 1.4 下运行?

如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Java 5 框架,那么我应该注意什么吗?

4

3 回答 3

6

没有! .class文件仅向前兼容。Java 5 引入了新的类文件属性和格式更改,以处理可变参数、枚举和泛型。Java 4 在处理这些时会失败。

但是,javac 上有不受支持的 -target jsr14 选项,它为某些 Java 5 语言功能生成与 JDK 1.4 兼容的字节码。

此外,还有将 Java 5 类文件转换为 Java 4 文件的项目(例如RetroweaverRetrotranslator )。

编辑:我发现了这个很好的资源:Using Java 5 language features in early JDKs

于 2009-08-12T15:34:00.727 回答
3

不,您只能向上移动 - Java 1.4 字节码将在 Java 5 运行时上工作。但是,如果您没有使用 Java 1.4 中没有的任何功能,您-target可以-source 使用javac.

如果您想使用 Java 5 编写可在 Java 4 上运行的应用程序,则不能使用Java 5 之前不存在的任何功能

于 2009-08-12T15:34:02.710 回答
2

不,他们不是。.class 文件仅向前兼容。

Java5 框架意味着您的库可能正在使用与您的 1.4 环境不兼容的泛型或注释。您必须评估在 1.5 JVM 下运行 1.4 应用程序以启用所需框架的使用风险有多大。

总的来说,我发现迁移到 1.5 几乎是无痛的,但需要进行勤奋的测试。

于 2009-08-12T15:35:12.597 回答