11

我的旧项目使用Java 6(1.6),我不知道我什么时候更新(Java 7),它们可以运行良好吗?

4

5 回答 5

12

Oracle 的 java 6 和 java 7 之间的已知不兼容性有一个官方列表(包括公共 API 中二进制和源代码级不兼容性的描述)。

也可以看看Java API Tracker项目中API变化的独立分析:http: //abi-laboratory.pro/java/tracker/timeline/jre/

该报告由japi-compliance-checker工具生成。

在此处输入图像描述

于 2011-12-04T14:41:54.113 回答
3

他们应该这样做,是的。Java 具有相当强大的向后兼容性历史。但是,如果这些项目在任何方面都是重要的项目,您仍然应该在部署任何类似生产的地方之前执行彻底的测试通过。

于 2011-07-29T08:52:01.567 回答
1

如前所述,向后兼容性在新的 Java 版本中是一个非常重要的方面,因此通常切换到更新的 Java 版本应该没有问题。然而,在这种情况下,Java 7 似乎在新的热点编译器优化中存在一些错误。Apache 软件基金会已经发出警告,他们的产品 Lucene 和 Solr 受到这些错误的影响。

http://lucene.apache.org/#28+July+2011+-+WARNING%3A+Index+corruption+and+crashs+in+Apache+Lucene+Core+%2F+Apache+Solr+with+Java+7

受影响的循环优化可以通过使用-XX:-UseLoopPredicate.

于 2011-07-30T10:25:03.820 回答
1

应该没有任何兼容性差异,因为 JVM 基本相同。然而,现在还处于早期阶段,因此可能存在细微的差异,从而导致人们尚未意识到的问题。

例如,Eclipse 在 Windows 上查看 java.exe 中的供应商,并为不同的供应商设置不同的命令行参数。Java 6 update 22 存在问题,因为 Oracle 想将其从“Sun”更改为“Oracle”。我相信这已经改变了,所以它在 J​​ava 7 中是“Oracle”(但对于 Java 6 仍然是“Sun”)

我的观点是,如果您编写通用 Java 代码,您应该没有问题。但是,如果您正在做一些不寻常的事情,您可能需要重新测试您的应用程序。

于 2011-07-29T08:55:26.100 回答
0

AFAIS在这里,没有在 Java 7 中被弃用的 Java 6 功能,所以是的,您的项目应该可以正常运行。

于 2011-07-29T08:55:53.713 回答