我的旧项目使用Java 6(1.6),我不知道我什么时候更新(Java 7),它们可以运行良好吗?
5 回答
Oracle 的 java 6 和 java 7 之间的已知不兼容性有一个官方列表(包括公共 API 中二进制和源代码级不兼容性的描述)。
也可以看看Java API Tracker项目中API变化的独立分析:http: //abi-laboratory.pro/java/tracker/timeline/jre/
该报告由japi-compliance-checker工具生成。
他们应该这样做,是的。Java 具有相当强大的向后兼容性历史。但是,如果这些项目在任何方面都是重要的项目,您仍然应该在部署任何类似生产的地方之前执行彻底的测试通过。
如前所述,向后兼容性在新的 Java 版本中是一个非常重要的方面,因此通常切换到更新的 Java 版本应该没有问题。然而,在这种情况下,Java 7 似乎在新的热点编译器优化中存在一些错误。Apache 软件基金会已经发出警告,他们的产品 Lucene 和 Solr 受到这些错误的影响。
受影响的循环优化可以通过使用-XX:-UseLoopPredicate
.
应该没有任何兼容性差异,因为 JVM 基本相同。然而,现在还处于早期阶段,因此可能存在细微的差异,从而导致人们尚未意识到的问题。
例如,Eclipse 在 Windows 上查看 java.exe 中的供应商,并为不同的供应商设置不同的命令行参数。Java 6 update 22 存在问题,因为 Oracle 想将其从“Sun”更改为“Oracle”。我相信这已经改变了,所以它在 Java 7 中是“Oracle”(但对于 Java 6 仍然是“Sun”)
我的观点是,如果您编写通用 Java 代码,您应该没有问题。但是,如果您正在做一些不寻常的事情,您可能需要重新测试您的应用程序。
AFAIS在这里,没有在 Java 7 中被弃用的 Java 6 功能,所以是的,您的项目应该可以正常运行。