我的旧项目使用Java 6(1.6),我不知道何时更新(Java 7),它们可以正常运行?
答案 0 :(得分:12)
来自Oracle的java 6和java 7之间存在official list已知的不兼容性(包括公共API中二进制和源级别不兼容性的描述)。
您还可以查看Java API跟踪器项目中API更改的独立分析:http://abi-laboratory.pro/java/tracker/timeline/jre/
该报告由 japi-compliance-checker 工具生成。
答案 1 :(得分:3)
他们应该做,是的。 Java具有相当强大的向后兼容性历史。但是,如果它们以任何方式重要项目,那么在部署任何类似生产的项目之前,您仍应执行全面的测试通过。
答案 2 :(得分:1)
由于JVM基本相同,因此不应存在任何兼容性差异。然而,它是早期的,所以可能会有微妙的差异导致人们尚未意识到的问题。
e.g。 Eclipse在Windows上的java.exe中查看供应商,并为不同的供应商设置不同的命令行参数。 Java 6更新22存在问题,因为Oracle希望将其从“Sun”更改为“Oracle”。我相信这已经改变,所以它在Java 7中是“Oracle”(但对于Java 6仍然是“Sun”)
我的观点是,如果您编写通用Java代码,那么您应该没有问题。但是,如果您正在做一些不寻常的事情,则可能需要重新测试您的应用程序。
答案 3 :(得分:1)
如前所述,向后兼容性是新Java版本中非常重要的一个方面,因此通常在切换到较新的Java版本时应该没有问题。但是,在这种情况下,Java 7似乎在新的热点编译器优化中有一些错误。 Apache软件基金会发出警告称,他们的产品Lucene和Solr受到这些漏洞的影响。
可以通过使用-XX:-UseLoopPredicate
启动java来关闭受影响的循环优化。
答案 4 :(得分:0)
AFAIS here,没有Java 6的功能在Java 7中被弃用,所以是的,你的项目运行正常。