针对不同Java版本的源代码之间的性能差异?

时间:2015-12-30 09:23:52

标签: java

我有一个1.5兼容的Java源代码,它只能在1.8个虚拟机上运行,​​并想知道在编译期间是否有利于目标1.8而不是旧版本。

1.5 vs 1.8之间会有任何性能差异吗? 是否有任何相关文档或更改日志可供我查看?

5 个答案:

答案 0 :(得分:7)

由于您所指的编译Java代码是Java Byte代码,因此使用新的JVM版本(1.8)运行旧应用程序应该可以提高应用程序的性能,而无需重新编译字节代码。

您可以查看有关JDK 8 performance improvement的Oracle官方文档,了解更改内容。

答案 1 :(得分:3)

javac几乎没有优化。它的主要优化是不断内联,它总是这样做。

差异完全在JVM中。在Java 8中,您可以选择编写相同的代码,这意味着您可以重新编写代码以提高代码效率。

答案 2 :(得分:1)

我通常将编译设置为1.7。新的lambda语法和java 8的其他功能之间的关系很好,但是我遇到了与java 7相差很少的兼容性问题,而且这是我以前所使用的。

如果你使用VM自己工作,并且你知道你不依赖于最终会出现问题的框架,那么一定要从java 8开始。 您还可以查看官方文档,但维基百科实际上提供了一个很好的更改日志imo: https://en.wikipedia.org/wiki/Java_version_history

答案 3 :(得分:1)

我发现this Oracle source讨论了Java 7与早期版本的兼容性。它仅提及invokedynamic字节码作为版本7和6之间的(字节码)差异。由于字节码实际上没有太大变化,因此版本5字节码与版本8字节码对性能的影响可以忽略不计。

答案 4 :(得分:0)

除了性能之外,您应该考虑自1.5以来已修复的千个错误修复。

1.8上还有新的API,例如javafx,NIO,lambas。

Oracle宣布swing不会再更新,所以如果你的应用程序有GUI,你应该考虑开始寻找移植到javafx。

在oracle网站顺便说一句,当你下载一个新的jdk时,还有一个链接到它的更改日志