如果从源角度保持不变(java 8)在Java 11上运行,从性能角度重新编译具有新目标版本(java 11)的项目是否有意义?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
在较新的JVM上运行Java 8字节码有什么陷阱?
不,编译器没有做太多优化,因此您将获得完全相同的字节码。除了该类文件将被标记为Java 11之外,因此您将无法在较低版本上运行它。
Java是向后兼容的,因此在较新版本上运行Java 8字节码没什么特别的。
当然,在较新的JVM上运行Java 8字节码可以(可能)在JIT中使用改进的动态优化,因此,仅使用较新的JVM而无需进行任何其他编译,您更有可能获得改进的性能。