这可能是一个愚蠢的问题,但是在运行以Java版本1.6和1.7编译的Java程序和相关库(我使用1.7进行编译,而某些库使用1.6进行编译)以及在1.7 JRE中运行整个程序时,我会遇到任何问题?
Answers:
您不会遇到任何问题-这就是Java的魔力-它向后兼容。您可以在Java 8上运行Java 1的几乎所有代码。没有理由为什么Java 6代码不能在Java 8 Runtime上运行。
有趣的是,对于用Java 1.4编写的应用程序,在以后的运行时运行它们甚至可以提高速度。这是因为Java一直在不断发展,不仅是被称为“ Java”的语言,而且还是JVM(Java虚拟机)。正如最新的JVM所期望的那样,我仍然可以使用10多年前的源代码。
假设要定位Java 5 VM,则可以使用Java 8 SDK工具来实现。只要记住第5版VM可能不支持第8版VM的所有功能,就可以最终指定希望支持的目标VM。
我刚刚针对新的Java 8运行时测试了用Java 5写的代码,并且一切都按预期运行,因此,即使我们现在拥有更强大的语言和运行时,我们仍可以继续使用过去的投资。仅此一项就使Java成为公司的绝佳开发选择。
前面已经回答了你的大部分安全和最产品和3次党库将简单的工作。但是,确实存在非常罕见的情况,即在JDK版本之间引入了二进制不兼容(使用旧JDK编译的类文件将无法在较新的JVM中运行的二进制文件不兼容)。
与JDK 9打包在一起,有一个名为jdeprscan的工具,它将验证兼容性,在代码中列出不再使用的API并建议替代方法(!)。您可以指定目标JDK版本(作品JDK 9,8,7和6),它会列出不兼容特定于您的目标版本。
一个合理的经验法则是将库的最新稳定发行版用于您的软件所针对的JRE版本。显然,您会从此规则中发现许多例外,但通常来说,公共库的稳定性通常会随着时间而增加。
自然,在更改依赖版本时,必须考虑API兼容性和版本控制。
再次,最流行的依赖项将包含应该提供此类信息的网页。
但是,如果您使用的方法更加晦涩难懂,则可以确定依赖项中针对哪些JRE类进行了编译。
这是有关如何查找类版本的好答案。您可能需要先解压缩JAR文件。