利用这些新的 fibers,用户将能够扩展 Java 虚拟机(JVM)以支持定界延续(delimited continuations)机制,从而使得指令集的执行实现暂停以及恢复。对这些延续进行暂停与恢复的任务将由 Java 中的 ForkJoinPool 调度程序以异步模式处理。
根据说明文档所言,fibers 将使用与 Java 现有 Thread 类非常相似的 API,这意味着 Java 开发人员的学习曲线应该不会太过陡峭。
二、Amber 项目
==========
Amber 项目的目标,在于支持“更小、面向生产力的 Java 语言功能”的开发,从而加快将新功能添加至 Java 语言中的速度。
这套方案非常适合自 Java 9 以来,以更快速度持续发布的各 Java 新版本。
目前,以下 JDK 增强提案(简称 JEP)正在进行当中,并隶属于 Amber 项目之内。
生字符串:
https://openjdk.java.net/jeps/326
生字符串使得开发人员能够更轻松地对文本进行适当格式化,且无需引入由转义字符带来的复杂性。
举例来说,开发人员不必使用
转义字符来表示换行符,因此在以下字符串中:
Hello
World
可以直接编写为:
Hello
World
而非原本的:
"Hello
World
"
该提案的说明文档中提到,这一变更将使得各类文本客串的输入变得更加简单,包括文件路径以及 SQL 语句等等。
如大家所见,生字符串应被包含在反引号之内。
用于 JDK API 的 Java 编译器 Intrinsic:
https://openjdk.java.net/jeps/348
此项提案将允许开发人员对需要定期调用的重要代码段进行性能优化。
具体来说,它允许开发人员将特定于 JDK 的方法指定为编译时内部化候选项,从而指示编译器对其性能进行优化。
考虑到在 Java 当中的重要意义,此提案的说明文档将 String::format 与 Objects::hash 作为编译时内部化方法示例。这些方法可以使用 @IntrinsicCandidate 进行注释,以指示编译器将其视为编译时内部化候选项。如此一来,JDK 的 javac 编译器即可通过修改创建出内部化进程的处理机制。
Pattern Matching:
https://openjdk.java.net/jeps/305
Pattern Matching 能够简化利用 Java 中 instanceof 运算符检查对象是否属于特定类的过程,而后提取该对象的组件以进行进一步处理。
如此一来,以下操作语法:
if (obj instanceof Integer) {
int intValue = ((Integer) obj).intValue();
// use intValue
}
将可被简化为:
if (x instanceof Integer i) {
// can use i here, of type Integer
}
Switch Expressions:
https://openjdk.java.net/jeps/325
Switch expressions 已经在 Java 12 当中以预览版形式推出,允许开发人员利用更简单的语法通过 switch 语句为输入内容指定不同的响应方式。
举例来说,现在我们不再需要始终在以下语法当中使用 switch 语句:
switch (port) {
case 20:
type = PortType.FTP;
break;
}
而可以采取以下更为简洁的表达方式:
Switch (port) {
case 20 -> PortType.FTP;
}
三、Valhalla 项目
=============
Valhalla 项目专注于支持“高级”JVM 与语言功能的开发。
目前 Valhalla 项目的候选提案还比较有限,具体包括:
Value Types:
https://openjdk.java.net/jeps/169
此项提案旨在允许 JVM 处理一种新的类型,即 Value Types。
这些新的不可变类型将拥有与 int 等基元类似的内存效率,但同时又与普通类一样能够保存一整套基元集合。提案说明文档中指出,其目标在于“为 JVM 基础设施提供处理不可变与无引用对象的能力,从而实现使用非基元类型进行高效按值计算的目标。”
Generic Specialization:
https://openjdk.java.net/jeps/218
此项提案扩展了适用于泛型的具体类型,其中包括基元以及即将推出的 Value Types。
英文原文
四、来自 Oracle 的警告
===============
Java 8 是目前使用率最高的一个 Java 版本,发布于 2014 年,而 Oracle 对 Java 8 的官方支持时间持续到 2020 年 12 月,之后将不再为个人桌面用户提供 Oracle JDK 8 的修复更新;在 2019 年 1 月之后,不再提供免费的商业版本更新,届时想要继续获得 Oracle 的商业支持和维护,需付费订阅。
近日,Oracle 的销售代表发出的一封邮件引起了热议,该邮件称“Java 8 的非公开可用的关键补丁更新”将于 2019 年 4 月 16 日发布,拥有有效许可证的客户才可以享用。邮件继续称,如果没有安装这些更新,可能导致“你的服务器和桌面环境暴露且易受***。”
但在许多 Java 用户看来,这封邮件像是一种敲诈勒索或恐吓策略。
五、Oracle 撒手,OpenJDK 继续向前
========================
虽然 Oracle 官方选择了不再支持,但 Java 社区却把担子接了下来。红帽 Java 平台团队的首席工程师 Andrew Haley 曾表示,红帽计划在 2023 年之前继续提供对 OpenJDK 8 的支持:
在我看来,这算比较正常的。几年前,OpenJDK 6 更新(jdk6u)项目被 Oracle 放弃,我接管了它,然后 OpenJDK 7 也发生了同样的事情。最后,Azul 的 Andrew Brygin 接管了 OpenJDK 6。由来自多个组织成员组成的 OpenJDK Vulnerability Group 就重要的安全问题进行协作。在广大的 OpenJDK 社区和我的团队(Red Hat)的帮助下,我们定期为关键 bug 和安全漏洞提供更新。我觉得这样的过程同样适用于 OpenJDK 8 和下一个长期支持版本,即 OpenJDK 11。
如果可以得到社区的支持,我很高兴能够领导 JDK 8 更新项目和 JDK 11 更新项目。
除了红帽以外,AWS 推出了 OpenJDK 长期支持版本 Amazon Corretto。阿里巴巴也开源了 OpenJDK 长期支持版本 Alibaba Dragonwell。
六、Java 老矣,尚能饭否?
===============
lnerability Group 就重要的安全问题进行协作。在广大的 OpenJDK 社区和我的团队(Red Hat)的帮助下,我们定期为关键 bug 和安全漏洞提供更新。我觉得这样的过程同样适用于 OpenJDK 8 和下一个长期支持版本,即 OpenJDK 11。
如果可以得到社区的支持,我很高兴能够领导 JDK 8 更新项目和 JDK 11 更新项目。
除了红帽以外,AWS 推出了 OpenJDK 长期支持版本 Amazon Corretto。阿里巴巴也开源了 OpenJDK 长期支持版本 Alibaba Dragonwell。
六、Java 老矣,尚能饭否?
===============