我在一个公司环境中工作,在它的存储库中有几个被广泛使用的、很少更新的Java库。有些库很旧,使用的语言级别可以追溯到JDK1.5 (Java 5)。
几乎所有我们积极开发的Java项目都使用Java 8或更高版本,但它们依赖于一个或多个JDK1.5级JAR。
对于使用具有非常古老的字节码版本的JAR,是否会造成性能上的损失?现代的JIT能够动态更新旧的、低效的字节码吗?
发布于 2018-10-30 20:28:32
记住:写一次,到处跑!在你的例子中,这个口号真的很贴切。
通常,如果旧Java代码正在执行它的工作,就没有理由去碰它。
这些年来,字节码没有发生太大变化,Java8 JRE所理解的字节码指令与Java2中已经存在的字节码指令相同99% --几乎没有增加,因此从这个角度来看,没有必要更新旧的字节码。它在Java8下的运行速度将比在Java5下更快,因为具有HotSpot引擎的JRE和类库都有了很大的改进。
类文件格式的更改更多地是关于元数据的,类文件版本号还确保您不会在缺少一半Java8类和方法的Java6 JRE下运行Java6程序。
变化很大的是Java类库和源代码。而且,由于旧库无法知道以后会发生的更改,因此它可能会比使用后期Java版本的所有特性的新编写的版本效率更低。但我的猜测是,重新设计旧图书馆所获得的性能是不值得的。
最后,关于绩效问题的一般性建议:
https://stackoverflow.com/questions/53071843
复制相似问题