让我们来看看…… 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可以显著减少应用的启动时间,提高用户体验。

➡️

继续阅读