与Java 7兼容的旧项目

我的旧项目使用Java 6(1.6),我不知道何时更新(Java 7),它们可以正常运行?

Oracle中的Java 6和Java 7之间存在已知的不兼容性的正式列表 (包括公共API中二进制和源级不兼容性的描述)。

您还可以查看Java API Tracker项目中API更改的独立分析: http : //abi-laboratory.pro/java/tracker/timeline/jre/

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

在此处输入图像描述

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

由于JVM基本相同,因此不应存在任何兼容性差异。 然而,它是早期的,因此可能存在微妙的差异,这导致人们尚未意识到的问题。

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

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

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

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

可以通过使用-XX:-UseLoopPredicate启动java来关闭受影响的循环优化。

AFAIS 在这里 ,没有Java 6的function在Java 7中被弃用了所以是的,你的项目应该运行正常。