使用Java6编译而不是Java7有什么缺点吗?

4
如果我使用Java7 JDK编译,会得到一个能在Java7上运行良好但无法加载Java6的jar文件。如果我使用Java7 JDK编译但指定输出兼容Java6,它可以在Java6和Java7 JRE上正常运行。
我的问题是,第一个jar文件是否在Java7 JRE中某种程度上更好(更快,更高效,更优化)比第二个?对于Java7 JRE用户使用第二个jar文件是否有任何不利影响,或者这第二个jar文件对所有人来说都足够好?我的想法是,我希望结果尽可能适用于Java7用户,但是我需要能在Java6上运行的东西。因此,我需要提供两个jar文件还是只需要提供一个Java6 jar文件?

除非你想使用Java 7中引入的新功能,否则我不认为有任何理由担心,代码将正常运行。 - Omoro
不,没有新功能(我希望在这种情况下能看到编译问题)。是的,它在Java6上运行良好。我只是不想让Java7用户受到任何不利影响。 - francis
不用担心,它会正常工作的。我有在Java 6上编译的代码可以在Java 7上运行。 - Omoro
2个回答

2

显然,如果您在Java 6上编译和运行代码,则无法使用Java 7中添加到Java标准库中的类,因为这些类不会出现在Java 6上。

对于其他方面,几乎没有任何实际区别。 JVM和JIT在运行时几乎完成所有优化; Java编译器几乎不进行优化。


然而我注意到尽管代码和设置完全相同,但是jar文件的大小不同,所以我猜测它可能以不同的方式表示代码,也许是为了利用特殊的Java7功能? - francis
我的记忆在勾动,我相信我记得读过一篇关于Java 7中jar工具进行重大优化的文章,通过修复一个愚蠢的错误... - Gimby
如果您想知道实际的字节码是否不同,可以使用 javap 工具反汇编您的类文件并进行比较。 - Jesper

0

我认为如果你不使用Java 7的新API,那么就没有什么区别。我不是100%确定,但我认为如果你的程序是使用Java 6编译的,它仍然可以从在Java 7虚拟机上运行的人们的速度提升中受益。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接