JDK编译版本何时重要?

时间:2013-10-24 00:06:18

标签: java java-7 jdk1.6

我正在构建两个Java工件。一个需要在1.6中构建,因为PowerMock与1.7不兼容,我们在很多单元测试中使用它。现在重构PowerMock不是一个选择,因为它需要花费太多时间。

但是,我想在1.7中构建的Java应用程序中使用此工件,并在1.7中运行整个工件。我认为它应该是好的,因为它只是构建一些类文件,我怀疑它有多大改变,如果有可能早在1.2或更早。无论如何,我显然对此有一个模糊的理解,我有兴趣让Java专家深入解释何时重要,什么时候不行,以及为什么。

谢谢!

2 个答案:

答案 0 :(得分:1)

编译后的代码应该是向后兼容的,所以如果你在java7上运行它,那么使用java6编译它们并不重要。

当您尝试其他方式时,您会收到无效的主要/次要版本号错误。

我认为你可以混合使用匹配java 6和7代码,就像你可以(谨慎)混合和匹配pre& post generics java。

答案 1 :(得分:1)

Java通常在版本之间向后兼容,因此在旧版本上编译的任何内容都应该在较新的JVM上正常运行。事实上,许多常见的库都是尽可能旧版本编译的(现在通常是Java 5),除非他们需要更新的功能来允许更多的人仍然停留在旧的JVM上。

话虽如此,有一些问题你需要担心。我在Java 6到7转换过程中遇到的一个问题是TreeMap,其初始值为null http://hariharanselvarajan-java.blogspot.com/2013/02/treemap-in-java-6-and-java-7.html

修改 这是Oracle的一个链接,讨论6和7之间不兼容的内容,尽管我认为这只会影响重新编译的内容:http://www.oracle.com/technetwork/java/javase/compatibility-417013.html