让我们来看看…… JEP 483:提前加载和链接类!
💡
原文英文,约2800词,阅读约需11分钟。
📝
内容提要
Java 24发布了多个增强提案,其中JEP 483引入了提前加载和链接类的功能,旨在减少Java应用的启动时间。通过创建AOT缓存,Kafka的启动时间减少了59%。该功能无需修改应用代码,适用于任何Java应用,特别是在动态扩展和云原生场景中具有显著优势。尽管当前的训练运行过程较为繁琐,但未来将有改进。
🎯
关键要点
- Java 24发布了多个增强提案,包括JEP 483,旨在减少Java应用的启动时间。
- JEP 483引入了提前加载和链接类的功能,通过创建AOT缓存,Kafka的启动时间减少了59%。
- 该功能无需修改应用代码,适用于任何Java应用,特别是在动态扩展和云原生场景中具有显著优势。
- 当前的训练运行过程较为繁琐,但未来将有改进。
- AOT类加载和链接是Project Leyden的一部分,旨在减少Java程序的整体占用,包括启动时间和达到峰值性能的时间。
- AOT缓存的创建需要进行训练运行,以确保加载正确的类集。
- 在Kafka的实验中,使用AOT缓存的启动时间为285毫秒,而没有缓存时为690毫秒,显示出显著的性能提升。
- 对于Apache Flink作业,AOT缓存也显示出51%的时间减少,但目前不支持用户定义的类加载器。
- Project Leyden与GraalVM在目标上有重叠,但GraalVM在AOT编译方面更为先进,提供更显著的启动时间和内存使用减少。
❓
延伸问答
JEP 483的主要功能是什么?
JEP 483引入了提前加载和链接类的功能,旨在减少Java应用的启动时间。
使用JEP 483可以带来多大的启动时间减少?
在Kafka的实验中,使用AOT缓存的启动时间减少了59%。
JEP 483是否需要修改应用代码?
该功能无需修改应用代码,适用于任何Java应用。
AOT缓存的创建过程是怎样的?
创建AOT缓存需要进行训练运行,以确保加载正确的类集,并生成缓存文件。
JEP 483与GraalVM有什么区别?
GraalVM在AOT编译方面更为先进,提供更显著的启动时间和内存使用减少,而JEP 483则是一个较新的项目,尚在发展中。
JEP 483在云原生场景中有什么优势?
在动态扩展和云原生场景中,JEP 483可以显著减少应用的启动时间,提高用户体验。
➡️