一个讨论调用 Java平台组在Oracle,马克莱因霍尔德的首席架构师发行,勾画出一个新的项目,项目莱顿,这将解决Java的缓慢启动时间长期的痛点,慢的时候峰值的建议通过向Java平台和JDK引入静态映像来提高性能和占用大量资源。
Java中的静态图片
Reinhold将静态映像描述为“从应用程序派生的独立程序,运行该应用程序,而没有其他程序”,并称为“封闭世界:它不能从映像外部加载类,也不能在运行时旋转新的字节码”时间。” 静态映像并不适合所有人,但对于相关的用例,这些约束条件允许进行构建时分析,以删除未使用的类并标识可在构建时运行的类初始化程序,从而减少了图像的大小及其启动时间。 这些限制还允许进行积极的提前编译,从而大大减少了图像达到峰值性能的时间。
静态映像通常需要手动配置才能充分利用它们,但是对于小型嵌入式设备或基于云的应用程序(如微服务),这种耐心将通过大大提高的性能得到回报。
还请参见:
莱顿计划
这个新项目将从过去的努力中获得启发,例如针对Java的GNU编译器和GraalVM的本机映像功能 。 Reinhold写道:“ Leyden将为Java平台规范添加静态图像,我们希望GraalVM能够发展为实现该规范。 然后,仅使用标准的,指定的静态图像功能的开发人员将能够在Leyden(在JDK中),Native Image(在GraalVM中)以及可能出现的任何其他兼容实现方式之间进行切换,从而在编译时间的权衡之间进行选择,启动时间和图片大小。”
Reinhold在Twitter上表达了他对GraalVM团队为莱顿计划做出贡献的热情。
我期待您和#GraalVM团队其他成员的贡献 ! #leyden #openjdk #java https://t.co/OraYn6GtQB
-马克·雷因霍尔德(@mreinhold) 2020年4月28日
但是,其目的不是通过将GraalVM的本机映像代码合并到JDK中来实现Leyden。 相反,Leyden将基于现有的JDK组件构建,例如HotSpot JVM, jaotc
AOT编译器 , 应用程序类数据共享和jlink
链接工具 。
还请参见:
自从该提案于4月27日星期一发布以来,最初的反馈一直非常积极,尽管有些人提出,在Java平台规范中实现静态图像可能很困难。
Leyden项目将作为一系列涵盖多个Java版本的JEP交付。
翻译自: https://jaxenter.com/project-leyden-static-images-java-platform-jdk-171537.html