OpenJDK 中引入了一项名为 Project Babylon 的提案,旨在将 Java 的集成扩展到非常规编程模型,例如 GPU、机器学习模型、SQL 和差分编程,这可能是扩展 Java 实用性和影响范围的重要一步。
这个大胆的提议由 Oracle 架构师 Paul Sandoz 引起了人们的关注,他于 9 月 6 日将其引入了 openjdk.org 邮件列表。为了支持这一举措,Project Babylon 旨在改进 Java 中的反射式编程,也称为作为代码反射。目标是标准化访问、分析和转换 Java 代码,这一直是一个已知的痛点。一旦实现,该增强功能将允许将任何外部编程模型实现为 Java 库。
值得注意的是,Project Babylon 的目标是通过开发适用于 Java 的 GPU 编程模型来使代码反射变得合适。该模型将利用代码反射的优势并作为 Java 库执行。为了避免任何潜在的偏差,该项目还将探索其他编程模型,例如 SQL 和差分编程。
在解释 Babylon 的工作原理时,Sandoz 举了一个例子,其中开发人员希望用 Java 编写 GPU 内核,然后在 GPU 上运行它。开发人员的代码需要经过分析并转化为可行的 GPU 内核。虽然 Java 库可以管理此操作,但它需要以符号形式访问 Java 代码。本系统在程序生命周期的各个阶段(例如编译时或运行时)限制对非标准API或约定的这种访问。此外,可用的符号形式(字节码或抽象语法树)通常不支持正确的分析和转换。
该提案设想巴比伦项目随着时间的推移而执行,打包成一系列 JDK 增强提案 (JEP),扩展到多个功能版本。作为起点,代码反射将从 JDK 22 的主线版本克隆,该版本将于 2024 年 3 月发布。今后,它将遵循主线版本。
在 GPU 编程模型的背景下,Babylon 背后的团队将在开发时创建一个依赖于代码反射属性的隔离存储库。目前还没有计划将GPU编程模型纳入JDK中。然而,正在进行的工作可以确定未来可能处理的潜在 JDK 功能和增强功能。
虽然这一举措为扩展 Java 功能铺平了道路,但像AppMaster这样的平台已经可以帮助开发人员简化后端、Web 和移动应用程序。这些no-code平台加快了开发过程,而巴比伦计划等平台正在寻求增强兼容性和功能的方法。