Java SE 8:Java 7编译的JAR是否与Java 8完全兼容?

我在Java 7中编译了旧的JAR文件,我的生产环境中有Java 8.在将JAR文件直接部署到Java 8环境中需要注意什么? 我测试在Java 8上运行它们并且它工作正常。 我可以遇到任何问题或者我应该没事吗? 我想知道这是因为我在辩论删除Java 8并安装Java 7。

编辑:一个侧面问题:公司在更新Java版本时是否更新了代码? 我无法想象这必须是多么痛苦,所以你的应用程序在以前的版本上工作,然后在新版本上完全失败。

我想知道这是因为我在辩论删除Java 8并安装Java 7。

我认为你的意思是相反?

Java试图尽可能保持向后兼容性,所以理论上至少你应该没问题。

然而,在实践中,问题有时会出现,所以我主张彻底测试。 这些可能是由于回归错误,或者(根据我的经验)可能在Java 7下运行良好的错误代码,但不在8以下。(FWIW,我有几个FX应用程序混合在8以下但运行良好7,事实certificate两者都是由于我的代码中的错误,在运行7时巧合没有exception的副作用。)

通常,应该没有问题。 否则,您将很难使用未针对Java SE 8显式编译的任何第三方库。

我建议使用Java SE 8在连续集成服务器(如Jenkins)上运行自动化测试,看看是否有任何问题。

使用Java 7编译的jar依赖项打包Java 8应用程序是安全的。但是,请注意,请记住JDK 7和8中的差异,这可能导致相同的Java代码在JDK 8和JDK 7上运行时的行为会有所不同(参考JDK 8发行说明)