首页 科技开发工具 娱乐游玩工具 热门工具   APP 登录/注册 联系/合作
   
 
OpenJDK 提出 Project Galahad 合并 GraalVM 原生编译
OpenJDK 项目提出了一个新项目——代号为 Galahad——将 GraalVM 社区版代码库的某些部分合并到 OpenJDK 中。

这是一项长期努力的最新进展,旨在提供在程序执行前将 Java 应用程序编译为机器代码的能力。从表面上看,这似乎有些奇怪——毕竟,新的 Java 开发人员学习的第一件事就是“Java 不编译为机器代码,而是编译为 JVM 字节码”。

这个简单的格言具有深远的影响,其中最基本的是 Java 平台依赖于强大的动态运行时 - JVM - 来执行。此运行时支持动态运行时技术,例如类加载和反射,这些技术在提前 (AOT) 编译语言中实际上没有类似物。事实上,这是 Java 众多强大功能的起点,也是它在大约 25 年前进入软件领域时如此具有开创性的原因。

尽管如此,人们一直对 Java 程序可以直接编译为机器代码并在没有 JVM 的情况下独立执行的可能性感兴趣。这种愿望有几个不同的原因——无论是为了减少 Java 应用程序达到峰值性能的预热时间,还是为了减少 Java 应用程序的内存需求,或者甚至只是为了避免将资源用于应用程序的运行时子系统可能不需要。

已经有几个项目试图实现这种可能性。最近的,也可以说是迄今为止最成功的,是 GraalVM 项目。这个项目不是来自 OpenJDK,而是来自 Oracle 实验室的一个研究项目。第一个生产级版本 GraalVM 19.0 于 2019 年 5 月发布。

从那时起,它作为一个独立的项目运行,具有不同的发布周期并且与 OpenJDK 的交互有限。与 GraalVM 相关的少数几个 Java 增强建议 (JEP) 中有两个是:

JEP 243:Java 级 JVM 编译器接口
JEP 295:提前编译
这两个 JEP 都出现在 Java 9 中,并且它们一起将 Graal 编译器引入了 OpenJDK 代码库。

Graal 编译器是 GraalVM 的主要组件之一——它是一个对 Java 字节码进行操作并生成机器码的编译器。它可以在 JIT 或 AOT 模式下运行。
在前者中,它可以用来代替 C2(有时称为“服务器编译器”)。重要的是要注意 Graal 本身是用 Java 编写的——不像其他 JVM 可用的 JIT 编译器是用 C++ 编写的。

Graal 在 Java 10 中作为基于 Java 的实验性 JIT 编译器提供,作为JEP 317。但是,在 Java 17(2021 年 9 月发布)中,AOT 和 JIT 编译器的实验形式都被移除了。尽管如此,仍保留了实验性 Java 级 JVM 编译器接口 (JVMCI)——因此仍然可以使用外部构建版本的 Graal 编译器进行 JIT 编译。

如果按预期交付,最新公告将标志着 Graal 回归 OpenJDK 代码库。然而,也许更重要的是 GraalVM 流程和项目的变化。Galahad 将作为 OpenJDK 子项目运行,并维护一个单独的 repo,该 repo 会定期在主线 repo 上进行 rebase。当功能准备就绪时,它们将被迁移到主线仓库。这与长期运行的项目(如 Loom 和 Lambda)成功使用的模型相同。

Galahad 将 JDK 20 作为初始基准。这本质上是一个代码和技术起点,因为JDK 20 已经进入 Rampdown - 因此至少在 JDK 21(预计 2023 年 9 月)之前,不可能将任何重新引入的 Graal 代码作为 Java 的一部分进行传输。目前,Galahad 将专注于贡献最新版本的 GraalVM JIT 编译器并将其集成为 C2 的替代方案。后续会加入一些必要的AOT编译技术,让Graal JIT编译器在JVM启动时立即可用。

这是必要的,因为 Graal 是用 Java 编写的,它可能会遇到与此大致相似的慢启动问题:

Hotspot 从 C1 编译器和可用的 Graal 开始
Graal 在 Java 解释器线程上执行,最初速度很慢,直到它自行编译
将 Graal 编译器预编译为本机代码将是解决此问题的一种可能性 -一个旧的 Draft JEP指出了这一点,但目前尚不清楚它是否会恢复或开始新的工作。

应该注意的是,并不是所有的 GraalVM 代码库都会被提交——只有核心 JIT 和 AOT 组件,以及 Native Image 工具。GraalVM Enterprise Edititon 中存在的 Oracle 专有功能预计不会捐赠给该项目。

Galahad 从一份令人印象深刻的提交者名单开始——不仅来自 Oracle 的 OpenJDK 和 GraalVM 团队,还包括来自更广泛的 OpenJDK 社区的许多贡献者,包括来自 Red Hat 的 Andrew Dinn 和 Dan Heidinga 以及来自 AWS 的 Roman Kennke。Galahad 和 Project Leyden(另一个关注 AOT 编译和相关技术的 OpenJDK 项目)之间的确切关系尚未明朗,但列出的 Galahad 贡献者中的几个也一直活跃在 Leyden。

尽管该项目仍处于早期阶段,但许多有影响力的社区成员都对 Galahad 表示欢迎,因为它代表了在寻求保持 Java 处于云原生技术栈最前沿的过程中又向前迈出了重要一步。关于作者,Ben Evans 是 Red Hat 的高级首席软件工程师。此前,他是 New Relic 的仪器首席架构师。他还共同创立了 JVM 性能优化公司 jClarity......。
最新文章:
所有文章资讯、展示的文字、图片、数字、视频、音频、其它素材等内容均来自网络媒体,仅供学习参考。内容的知识产权归属原始著作权人所有。如有侵犯您的版权,请联系我们并提供相应证明,本平台将仔细验证并删除相关内容。
工具综合排行榜
TOP 1
双计算器 双计算器
同时用两个计算器,用于价格对比、数字分别计算等
TOP 2
推算几天后的日期 推算几天后的日期
推算从某天开始,增加或减少几天后的日期
TOP 3
随机密码生成 随机密码生成
随机生成安全复杂的密码,自由设置密码长度及复杂度
TOP 4
推算孩子的血型 推算孩子的血型
根据父母的血型推测子女的血型
TOP 5
日期转中文大写 日期转中文大写
把数字日期转成中文大写,是财务或商务合同常用的工具
热门内容:       双计算器       推算孩子的血型       随机密码生成       日期转中文大写       推算几天后的日期       达轻每日一景       高校分数线       高校查询       周公解梦大全
首页 科技开发工具大全
娱乐游玩工具大全
登录/注册
联系我们
  用户咨询/建议
kf@ss3316.com


商务合作/推广
hz@ss3316.com

达轻工具 APP

访问手机版网站
使用本平台必读并同意:任何内容仅供谨慎参考,不构成建议,不保证正确,平台不承担任何责任,同意用户协议隐私政策   
BaiduTrust安全认证签章
© 达轻科技 版权所有 增值电信业务经营许可证 ICP备 沪B2-20050023-3