近日,OracleJava平台组首席架构师MarkReinhold在社交媒体发文正式宣布启动“Leyden”项目。据悉,该项目已经获批,将通过在Java平台上引入“静态图片”来缓解启动慢、性能慢的问题,旨在加速Java业务的创建。据了解,“莱顿”号项目计划于2020年5月左右首次提出,至今已讨论了2年多。当时,MarkReinhold在Java邮件列表上发布了他正在提议和领导的工作,并指出“这项工作被称为ProjectLeyden,将通过Java平台和Java开发工具包(JDK)实现,引入了“静态图像”来解决这些痛点。Leyden项目引入了“静态图像”“Leyden”项目中引入的所谓“静态图像”是一种独立于应用程序的程序,它来源于一个运行该应用程序的应用程序,而不是其他应用程序.静态图像就其可以加载的类而言是一个“封闭世界”:在运行时,不能从图像外部加载类,也不能动态创建类。封闭世界的约束严重限制了Java的自然动态性,尤其是在运行时反射和加载类的能力方面,这是很多现有的Java框架和库所依赖的。以上两个约束不仅可以减少图像的大小和它的启动时间,同时这些约束也“允许激进的超前-实时编译(Ahead-of-timecompilation),即将C或C++等高级编程语言编译到本机,从而减少图像达到最佳性能的时间。代码使生成的二进制文件可以本机执行行为。Leyden项目将加速Java优化工作据介绍,Leyden是基于以往项目的新项目,包括面向Java的GNU编译器和GraalVM的原生镜像功能。GraalVM是一种高性能运行时,针对Java和JVM语言、JavaScript、Ruby、Python等各种语言的性能进行了优化,并支持多语言或多语言应用程序的互操作性。由于Leyden项目受到GraalVM的启发,这两个项目具有共同的组件,这些组件可能(也可能不会)进入主流Java规范。不过,由于目前缺乏进一步的信息,一些观察人士认为这两个项目是相互交织的。早在2020年,当ProjectLeyden首次被提出时,LongmeadoOmdia分析师BradleyShimmin就评论道:“ProjectLeyden似乎应该成为GraalVM项目的一部分,我相信作者想要这样做,因为它实现了与GraalVM项目相同的目标GraalVM支持,除了Here,他们建议为单个应用程序创建一个极其精简的运行时环境。”。(ProjectValhalla是Oracle正在进行的一项引入值类型的工作,该机制允许Java程序在运行时更有效地管理数据。Oracle表示,当ProjectValhalla最终合并到JDK中时,整体性能格局将会改变。)此外,其他大型Java社区的成员也表达了对Leyden项目的兴趣和期待。早些时候,RedHat的产品管理高级总监RichSharples提到该项目“旨在从OpenJDK本身的Graal/SubstrateVM中提供我们所需的大部分内容”。Java平台的进一步改进:领域的第一步当然,并不是所有的应用程序都能很好地契合“莱顿”项目“静态图像”的这两个约束条件,也不是所有的开发人员都愿意接受这个约束条件。但总而言之,MarkReinhold并没有从一开始就采用封闭世界约束,而是通过探索一系列约束提出了一种渐近方法,由此产生的优化可能弱于封闭世界约束,但优化应该适用于Extensive现有代码。这一次,MarkReinhold于5月20日在OpenJDK上的一篇文章中正式宣布启动“Leyden”项目——“现在是迈出第一步并启动项目的时候了”项目,以加速Java业务的创建。MarkReinhold表示,“将沿着上述约束的范围逐步开展工作,从小而简单开始,以便深入了解Java平台规范所需的更改。”在这个过程中,还将努力保持Java的可读性、兼容性和通用性的核心价值。”MarkReinhold还补充说,从长远来看,Leyden项目开发人员可能会采用完全封闭世界的约束来生产完全静态的图像。同时,该项目还将大量支持现有的JDK组件,如JVM热点、C2编译器、共享类和应用程序数据以及JLink代码工具。参考链接:https://www.computerworld.es/...
