近日,Oracle Java 平台组首席架构师 Mark Reinhold 在社交媒体发文正式发表启动“Leyden”我的项目。据悉,该我的项目已取得批准,将通过在 Java 平台上引入“动态映像”来缓解启动和性能迟缓的问题,旨在减速 Java 业务的创立。
据理解,“Leyden”我的项目打算最早于 2020 年 5 月份左右提出,至今曾经被探讨了 2 年多。
过后,Mark Reinhold 在一份 Java 邮件列表中发表了一篇对于他提议和领导的工作的帖子,他示意“这项工作被称为“Leyden”我的项目,将通过在 Java 平台和 Java 开发工具包(JDK)中引入“动态映像”的概念来解决这些痛点。
Leyden 我的项目引入“动态映像”
“Leyden”我的项目里引入的所谓的“动态映像”,是一款独立于应用程序的程序,它派生自一个运行该应用程序的应用程序,而非其余应用程序。
动态映像绝对于它能够加载的类来说是一个“关闭的世界”:在运行时,不能从映像内部加载类,也不能动态创建类。关闭世界的束缚严格限度了 Java 的天然动态性,特地是在运行时反射和加载类的性能方面,许多现有的 Java 框架和库都依赖这些性能。
以上两个束缚不仅能够缩小图像的大小及其启动工夫,同时这些束缚还“容许进行踊跃的提前编译(Ahead-of-time compilation),从而缩短图像达到峰值性能的工夫,提前编译是将高级编程语言(如 C 或 C++)编译老本机机器代码,以便生成的二进制文件能够本机执行的行为。
Leyden 我的项目将减速 Java 的优化工作
据介绍,Leyden 是一个基于过来我的项目根底上新建设的我的项目,包含 GNU 编译器 for Java 和 GraalVM 的本机映像性能。GraalVM 是一种高性能运行时,针对各种语言(如 Java 和 JVM 语言、JavaScript、Ruby、Python 等)进行了性能优化,并针对多语言或多语言应用程序实现了互操作性。
因为 Leyden 我的项目的灵感来自 GraalVM,这两个我的项目有着独特的组成部分,它们可能会(也可能不会)进入支流 Java 标准。然而,因为目前不足进一步的信息,一些观察家认为这两个我的项目是交错在一起的。
早在 2020 年 Leyden 我的项目刚提出的时候,Longmeado Omdia 分析师 Bradley Shimmin 就评估称:“Leyden 我的项目仿佛应该成为 GraalVM 我的项目的一部分,我置信作者心愿这样做,因为它实现了 GraalVM 反对的雷同指标,除了这里,他们提议创立一个针对单个应用程序的极其精简的运行时环境。”。
(Valhalla 我的项目是 Oracle 正在进行的一项工作,它引入了值类型,这是一种容许 Java 程序在运行时更高效地治理数据的机制。Oracle 示意,当 Valhalla 我的项目最终并入 JDK 时,整个性能格局将发生变化。)
此外,其余大型 Java 社区的成员也对该 Leyden 我的项目示意感兴趣且期待。早前,Red Hat 的产品治理高级总监 Rich Sharples 就提到,该我的项目“旨在从 OpenJDK 自身的 Graal/SubstrateVM 中提供咱们所需的大部分内容”。
深刻改良 Java 平台:正式开启第一步
当然,不是所有应用程序都能很好地适应“Leyden”我的项目“动态映像”的这这两个束缚,也不是所有的开发人员都违心承受这个束缚。
但总而言之,Mark Reinhold 从一开始就没有采纳关闭世界的束缚,而是通过摸索一系列束缚,提出了一种渐进的办法,由此产生的优化可能比关闭世界的束缚弱,但优化应该实用于更宽泛的现有代码。
此次,Mark Reinhold 于 5 月 20 日在 OpenJDK 的一篇文章中正式发表了“Leyden”我的项目的启动 ——“当初是采取第一步并开始该项目标时候了”,也是意在通过“Leyden”我的项目减速 Java 业务的创立。
Mark Reinhold 示意,“将沿着上述束缚范畴逐渐工作,从小而简略的开始,以便可能深刻理解 Java 平台标准所需的更改”。“在此过程中,也将致力放弃 Java 的可读性、兼容性和通用性的外围价值”。
Mark Reinhold 还补充称,从久远来看,Leyden 我的项目开发人员可能会采纳齐全关闭世界的限度来生成齐全动态的映像。同时,该我的项目还将在很大水平上反对现有的 JDK 组件,如 JVM 热点、C2 编译器、共享类和应用程序数据以及 JLink 代码工具。
参考链接:https://www.computerworld.es/…