Java 创新项目
Amber
Project Amber 的目标是探索和孵化更小、更注重生产力的 Java 语言特性,这些特性已被接受为 OpenJDK JEP 过程 下的候选 JEP。该项目由 编译器组 赞助。
大多数 Project Amber 特性在成为 Java SE 的正式部分之前,至少要经过一轮预览。有关预览过程的说明,请参见 JEP 12,有关如何使用预览特性的教程,请参见 我们的教程。对于给定的特性,每轮预览和最终标准化都有单独的 JEP。
在 Project Amber 的 Wiki 以及 Inside.java 的 Amber 页面 上了解更多信息。
Loom
Project Loom 的目的是探索、孵化和交付基于 Java VM 特性和 API 的功能,这些功能旨在支持 Java 平台上易于使用、高吞吐量的轻量级并发和新的编程模型。这是通过添加以下结构来实现的
- 虚拟线程
- 分隔的延续
- 尾调用消除
这个 OpenJDK 项目由 HotSpot 组赞助。
在 Project Loom 的 Wiki 以及 Inside.java 的 Loom 页面 上了解更多信息。
Panama
我们正在改进和丰富 Java 虚拟机与定义明确但“外部”(非 Java)API 之间的连接,包括许多 C 程序员常用的接口。
为此,Project Panama 将包含以下大多数或所有组件
- 从 JVM 调用本机函数
- 从 JVM 或 JVM 堆内部访问本机数据
- JVM 堆中的新数据布局
- JVM 的本机元数据定义
- 头文件 API 提取工具 (jextract)
- 本机库管理 API
- 面向本机的解释器和运行时“钩子”
- 类和方法解析“钩子”
- 面向本机的 JIT 优化
- 用于安全性的工具或包装器插入
- 与难以集成的本机库的探索性工作
在 Project Panama 的 Wiki 以及 Inside.java 的 Panama 页面 上了解更多信息。
Valhalla
Valhalla 项目是一个探索和孵化高级 Java VM 和语言特性候选者的场所,例如“内联类型”、泛型特化、增强型易失性,以及可能的其他相关主题,例如具象泛型。
三个主要目标是
- 使 JVM 内存布局行为与现代硬件的成本模型保持一致;
- 扩展泛型以允许对所有类型进行抽象,包括基本类型、值,甚至 void;
- 使现有库(尤其是 JDK)能够兼容地演变,以充分利用这些特性。
许多人最近将 Valhalla 描述为“主要与性能有关”。虽然人们得出这个结论是可以理解的——事实上,Valhalla 的许多动机都源于性能考虑——但这种描述忽略了一些非常重要的东西。是的,性能是故事中重要的一部分——但安全、抽象、封装、表达能力、可维护性和兼容库演变也同样重要。
在 Valhalla 项目的 Wiki 以及 Inside.java 的 Valhalla 页面 上了解更多信息。
ZGC
Z 垃圾收集器,也称为 ZGC,是一个可扩展的低延迟垃圾收集器,旨在满足以下目标
- 亚毫秒最大暂停时间
- 暂停时间不会随着堆、活动集或根集大小的增加而增加
- 处理大小从 8MB 到 16TB 的堆
概览,ZGC 是
- 并发
- 基于区域的
- 压缩的
- NUMA 感知的
- 使用彩色指针
- 使用加载屏障
ZGC 的核心是一个并发垃圾收集器,这意味着所有繁重的任务都在 Java 线程继续执行时完成。这极大地限制了垃圾收集对应用程序响应时间的影響。