重新整理 | 苏宓
公司出品 | CSDN(ID:CSDNnews)
阔别三个月,9 月 20 日,Java 19 接踵而至,而此版是自 Oracle 宣布 Java 以三个月为一周期性正式发布的第六个版。不过值得注意的是,JDK 19 是标准的非 LTS(长期全力支持)版。
话不多说,我们先来一起看一下新一代版的 Java 增添了什么样预览?
Java 19 的六大看点预览
根据非官方正式发布的公告显示,Java 19 版增添了六大主要就机能预览,主要就包括形式化mammalian、历史记录商业模式、内部抒发式和缓存 API 的自动预览,以及对开放源码的 Linux/RISC-V x86构架(ISA)的全力支持。除了 Linux/RISC-V 机能,所有的机能都处在自动预览或幼体期。
具体来看:
形式化mammalian。当前还处在幼体期,意在透过形式化mammalian API 精简多处置器程式设计。这种mammalian性将不同缓存中运转的数个任务视作一般而言工作模块,从而精简consequences、提高安全性和可检视性。这个机能来自 Project Loom,它导入了一个捷伊轻量mammalian数学模型。历史记录商业模式,而此机能目前也处在测试版,主要就是用以重构历史记录值。历史记录商业模式和类别商业模式能被冗余,以实现强悍的、具有新闻稿性的和可女团的统计数据导航系统和处置形式。该决议案的目标主要就包括扩充商业参数值,借以抒发更复杂的、可女团的统计数据查阅,同时不改变类别商业模式的句法或句法。该决议案建立在 2021 年 3 月在 JDK 16 中交货的商业参数值的基础上。未来,Oracle 可能会要求对历史记录商业模式展开扩充,使之具有字符串商业模式、Vararg 商业模式。历史记录商业模式是 Project Amber 的一部分,该项目意在积极探索和幼体较细的、面向全国劳动生产率的 Java 机能。内部抒发式和内存 API 的测试版。透过导入一个 API,Java 流程能与 Java 运转时以外的标识符和统计数据展开互操作性。透过有效地初始化内部抒发式(即 JVM 以外的标识符)和安全地出访内部缓存(即无可奈何 JVM 管理的缓存),该 API 使 Java 流程能够初始化邻近地区库并处置本机统计数据,而不会出现 Java 邻近地区USB(JNI)的脆弱和脆弱。内部抒发式和缓存 API 结合了两个早期的幼体 API:内部缓存出访 API 和内部链接器 API。内部抒发式和缓存 API 曾在 JDK 17 中幼体,而后在 JDK 18 中重新幼体。该决议案的目标主要就包括易用性、性能、通用性和安全性。虚拟缓存的测试版。这是一种轻量的缓存,大大减少了编写、维护和检视高吞吐量mammalian应用的工作量。能以简单的 thread-per-request 风格编写的服务器应用流程能够以接近最佳的硬件利用率展开扩充,透过使用 java.lang Thread API 现有标识符能够以最小的改动采用虚拟缓存,并基于现有的 JDK 工具对虚拟缓存展开故障诊断、调试和分析。本决议案的目标不是要改变 Java 的基本mammalian数学模型,也不是要在 Java 语言或 Java 库中提供捷伊统计数据并行结构。它的目标也不是去除缓存的传统实现,或默默地将现有的应用流程迁移到使用虚拟缓存。这项机能也是 Project Loom 的一部分。对 switch 抒发式和语句的商业参数值展开了第三次自动预览。这项机能以前在 JDK 17、JDK 18 中展开过自动预览。而此次在 JDK 19 中将进一步细化机能,主要就包括用 switch 块中的 when 子句替换受保护的商业模式。另外,当选择器抒发式的值为 时,商业模式切换的运转时句法与传统的句法更加一致。这项机能也是 Amber 项目的一部分。Vector API 的第四次幼体,将抒发向量计算,在运转时可靠地编译为全力支持的 CPU 构架上的最佳向量指令,从而实现优于等效标量计算的性能。该 API 的开发者使用 HotSpot 自动矢量器,可获得了一种在 Java 中编写复杂的向量算法的方法,但有一个用户数学模型,使向量化更可预测和稳健。Vector API 先前已被纳入 JDK 16、JDK 17 和 JDK 19。在最捷伊 JDK 19 中,非官方为该机能增加了两个跨道向量操作,即压缩和扩充,以及一个互补的向量掩码压缩操作。压缩向量操作将由掩码选择的源向量的通道按通道顺序映射到目标向量,而扩充操作则做相反的操作。压缩操作在过滤查阅结果时非常有用。透过 Linux/RISC-V 移植,目前而此机能已正式可用。Java 将获得对硬件x86的全力支持,该指令集已经被广泛的语言工具链所全力支持。RISC-V 实际上是一系列相关的 ISA。Linux/RISC-V 端口将只全力支持 RISC-V 的 RV64GV 配置,这是一个主要就包括矢量指令的通用 64 位 ISA。Java 的开发者可能会在将来考虑其他 RISC-V 的配置。除了以上机能预览以外,甲骨文公司 Java 平台开发高级副总裁、OpenJDK 管理委员会主席 Georges Saab 表示,最捷伊 Java 版还修复了一千多处错误,提高了语言的稳定性和性能。不过,Saab 称,Java客户经常推迟升级,因为他们看了机能列表,没有看到他们明显需要的东西。但他敦促 Java 开发者跟上流程,”因为一切都会变得更好”。
Java 有望在三年内成为最频繁使用的程式设计语言平台
事实上,近几年间,在 Python 火速升温之下,关于 Java 大厦将倒、步入下坡路等言论不绝于耳,很多人认为 Java 的使用率已大不如以前。
不过,在这边正式发布 Java 19 之际,Oracle 也在非官方博客上正式发布了一篇《Java is #1 choice for cloud according to VDC Research》的文章,似乎在为 Java “站台”,其中引用了咨询公司 VDC Research 的一份关于 Java 在企业中使用和重要性的研究报告。
该研究报告考察了当今主流的 20 多种顶级程式设计语言,发现 Java 仍然是顶级技术趋势中排名第一的语言,也是开发者信任的解决安全问题的最高评级语言。
这份报告统计数据显示,企业在不使用 Java 的项目通常比使用 Java 的项目要多花费 22% 的成本。
同时,Java 有望在三年内成为最频繁使用的程式设计语言平台,超过 JavaScript、C++ 和 Python 等。云开发人员将 Java 列为对其组织运营最重要的语言。这对于涉及在云端开发或部署的项目来说是真实的。
这份报告指出,多年来,Java 在云计算生态系统中的地位一直在提高,基于云计算的 JVM 现在正处在每年增长 12.5% 的轨道上,到 2025 年将达到 820 亿的活跃安装基数。
毋庸置疑,在企业级应借以及云生态系统中,至今还未有一种语言能够超越 Java。然而,Oracle 内部对 Java 预览频率的加快,让不少开发者报以“你预览任你预览,我就不用”的态度,也让很多人成为 Java 8、Java 11 等老版的“钉子户”。
对于而此点,据外媒 The Register 报道,Saab 在采访时也表示 Oracle 关注到了而此点,”自从我们转向这种商业模式以来,没有任何延迟,你可能知道,我们以前的商业模式并非总是如此。在过去,用户往往需要等待相当长的时间才能得到 Java 中的任何新东西,然后他们会一下子得到太多的东西。
我们确实意识到,并不是每个人都想每三个月重新正式发布一次。因此,我们所做的一件重要的事情是为长期全力支持提供 Java SE 订阅服务,基本上使那些希望保持在一个版上并每季度得到预览以保持其安全性的企业(能这样做)。”
你是否会升级到新一代版的 Java?
每年在 Java 新一代版到来之际,也有不少人陷入了“升级 or 不升级”的纠结中。根据知名科技公司 New Relic 之前正式发布的《Java 生态系统状况报告》显示,2018 年 9 月正式发布的 Java 11 是目前最受欢迎的 Java 版(48%),其次是 2014 年 3 月正式发布的 Java 8(46%),两者都是长期全力支持(LTS)版。
每个Java LTS版的使用百分比
最捷伊一个长期版 Java 17 排名还不是很高,但它在正式发布后的几个月里,已经超过了Java 6、Java 10 和 Java 16 版的占比。
此前,Oracle 还提议将 JDK LTS 的正式发布周期性从每三年一次改为每两年一次。如果该决议案被接受,这意味着 JDK 17 之后的下一个 JDK LTS 版将是 JDK 21,而不是 JDK 23。
因此,相较非 LTS 版,LTS 版增添的稳定全力支持更受 Java 开发者欢迎一些,那么,你当前正在使用哪个版的 Java 呢?而此次 Java 19 正式发布,你会去尝鲜吗?
参考:
https://jdk.java.net/19/
https://www.infoworld.com/article/3653331/jdk-19-the-new-features-in-java-19.html