Java 30岁生日
1995 年 5 月 23 日星期二,Sun Microsystems, Inc. 发布了 Java 的第一个版本,即 Java 开发工具包 1.0 (JDK 1.0)。那时,Java 编程语言已经包括用于创建 Java 应用程序的软件开发环境 (JDK) 和用于在任何设备和作系统上运行 Java 程序的 Java 虚拟机 (JVM)。因此,“一次编写,随处运行”的口号诞生了。Java 标准版 (Java SE) 仍然由 JDK 和 JVM 的组合组成,通常称为“Java”。
Java 的下一个开发阶段包括代码反射、预先 (AOT) 编译和优化 8 字节对象头的增强。此外,我们正在努力完成结构化并发和作用域值的 API。Java的扩展计划旨在提升外部函数和内存API的性能,进一步开发AOT编译并完成结构化并发API。OpenJDK 社区更广泛的雄心壮志集中在扩展项目上,例如 Amber、Babylon、Leyden、Lilliput、Loom、Valhalla 和 Panama。
Amber 项目负责处理较小的、与生产相关的 Java 语言函数,以作为 OpenJDK JEP 流程中的 JDK 增强提案 (JEP) 候选者提交。
Project Babylon 旨在将 Java 的范围扩展到外部编程模型,如 SQL、可微分编程(合并机器学习和数值优化的算法领域)、机器学习模型和 GPU。Babylon 打算通过一个名为 Code Reflection 的 Java 反射编程扩展来实现这一目标。Babylon 项目的计划包括准备孵化代码反射、研究 HAT(异构加速器工具包)以及研究 Java 中等效的 ONNX 运行时脚本原型。
Project Leyden(JDK 静态映像概念)专注于缩短启动时间、更快地达到峰值性能以及降低 Java 程序空间要求。这包括 AOT 方法分析和 AOT 代码编译。
Lilliput 项目研究了将 Hotspot JVM 中的 Java 对象头从 128 位减少到 64 位或更低的技术。最初,目标是将对象标头减少到 64 位。减少到 32 位可能作为次要目标。但总体目标是清除 10% 到 20% 的堆内存。
Project Loom 开发支持轻量级并发和新编程模型的 JVM 函数和 API。结构化并发 API 和范围值 API 将在此项目中完成。
Valhalla 项目侧重于 Java 对象模型扩展。开发工作涉及值类型(预览版)、Null-Checked 类型以及 Numerics 和 Primitives 的第一次改进。
Project Panama 打算为 JVM 和本机代码之间的交互提供更好的开发人员支持。为此,对 JVM 和定义完善的非 Java 接口(外部 API)之间的连接进行了修改,特别是 C 程序员通常使用的 API。这包括矢量API,对外部函数和内存API的性能改进,记录映射器,以及对jextract工具的改进以生成Java绑定。