百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

Java 19 正式发布,七大特性齐发,最常用的还是 Java 11

yund56 2025-02-25 01:02 5 浏览

整理 | 苏宓
出品 | CSDN(ID:CSDNnews)

时隔六个月,9 月 20 日,Java 19 如期而至,这一版本是自 Oracle 宣布 Java 以六个月为一周期发布的第十个版本。不过值得注意的是,JDK 19 是标准的非 LTS(长期支持)版本。

话不多说,我们先来一起看一下最新版本的 Java 带来了哪些更新?


Java 19 的七大亮点更新


根据官方发布的公告显示,Java 19 版本带来了七大主要功能更新,包括结构化并发、记录模式、外部函数和内存 API 的预览,以及对开源的 Linux/RISC-V 指令集架构(ISA)的支持。除了 Linux/RISC-V 功能,所有的功能都处于预览或孵化阶段。

具体来看:

  • 结构化并发。当前还处于孵化阶段,旨在通过结构化并发 API 简化多线程编程。这种并发性将不同线程中运行的多个任务视为单个工作单元,从而简化错误处理、提高可靠性和可观察性。这个功能来自 Project Loom,它引入了一个新的轻量级并发模型。

  • 记录模式,这一功能目前也处于预览版,主要是用来解构记录值。记录模式和类型模式可以被嵌套,以实现强大的、具有声明性的和可组合的数据导航和处理形式。该提案的目标包括扩展模式匹配,用以表达更复杂的、可组合的数据查询,同时不改变类型模式的语法或语义。该提案建立在 2021 年 3 月在 JDK 16 中交付的模式匹配的基础上。未来,Oracle 可能会要求对记录模式进行扩展,使之具备数组模式、Vararg 模式。记录模式是 Project Amber 的一部分,该项目旨在探索和孵化较小的、面向生产力的 Java 功能。

  • 外部函数和内存 API 的预览版。通过引入一个 API,Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 之外的代码)和安全地访问外部内存(即不由 JVM 管理的内存),该 API 使 Java 程序能够调用本地库并处理本机数据,而不会出现 Java 本地接口(JNI)的危险和脆弱。外部函数和内存 API 结合了两个早期的孵化 API:外部内存访问 API 和外部链接器 API。外部函数和内存 API 曾在 JDK 17 中孵化,而后在 JDK 18 中重新孵化。该提案的目标包括易用性、性能、通用性和安全性。

  • 虚拟线程的预览版。这是一种轻量级的线程,大大减少了编写、维护和观察高吞吐量并发应用的工作量。可以以简单的 thread-per-request 风格编写的服务器应用程序能够以接近最佳的硬件利用率进行扩展,通过使用 java.lang Thread API 现有代码能够以最小的改动采用虚拟线程,并基于现有的 JDK 工具对虚拟线程进行故障诊断、调试和分析。本提案的目标不是要改变 Java 的基本并发模型,也不是要在 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 将获得对硬件指令集的支持,该指令集已经被广泛的语言工具链所支持。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

相关推荐

重生之我在头条学html网页编程,这一世我一定学好,成为编程高手

有人要问了html是什么东西?就是用来设计网页的一种语言会不会很难啊?这是很多朋友担心的,我告诉大家这是最简单最基础也最容易学习的一款入门级语言,当初我也是经常因为学不会C语言而苦恼自从学习了html...

如何在网页3D CAD中创建一个三维管道模型

前言在网页CAD中进行三维建模是一项有趣的任务。本文将介绍如何利用mxcad3d来创建三维管道模型。该工具提供了一系列三维建模功能的API,使得建立复杂的管道结构变得简单直观。安装在此之前,需要先安装...

网页模版如何用

网页模版已成为如今网站建设的核心工具。随着互联网需求的增长,越来越多的企业和组织需要建立自己的网站,以展示他们的品牌和服务。在这个过程中,网页模版为他们提供了一种简单而高效的方式来构建网站。所谓网页模...

AI嵌入式Flowcode编程网页开发人员入门指南

WebDeveloper允许使用FlowcodeIDE环境开发具有交互性的网页。可以在2D面板中添加特殊网页组件,以创建网页的视觉表示,并可以使用流程图添加交互功能。它的引入意味着Flowcod...

用Deepseek制作网页版的汉诺塔游戏保姆级教程

在deepseek中输入:“帮我做一个网页版的汉诺塔演示游戏,游戏包含2层、3层、4层、5层的汉诺塔游戏演示,制作自动求解演示按钮,点击按钮就可以生成出步数,同时自动演示最优解动画。”最后把生成的程序...

TaskBuilder前端页面CSS样式规则设置

在前端页面设计器内,点击底部的“CSS样式”选项卡,可以打开CSS样式设计器,在此查看和设计当前页面的CSS样式规则,如下图所示:3.3.6.1引入外部样式文件如果要在页面中引入外部CSS文件,可以点...

使用 Python、FastHTML 和 Uvicorn 构建简单的博客网站

FastHTML是2024年7月推出的PythonWeb框架,是一个简单但功能强大的框架,允许开发人员使用纯Python构建Web应用程序。(不需要复杂的模板引擎)。Fast...

用AI可以生成HTML网页了,很多初级前端都要失业了

即使你完全不懂html,javascript,css,也能做出漂亮的网页,这在以前是不可想象的,而现在确是可行的,因为有这样一个项目:openUI。openUI不仅仅能生成html页面,还能生成自适应...

python原始套接字socket下载http网页文件到txt

python原始套接字socket下载http网页文件到txtimportsocketdefdownload_webpage(url,output_file):try:...

高效排版:实现DeepSeek生成内容Word格式排版并导...

高效排版:实现DeepSeek生成内容Word格式排版并导出的经典方法,步骤简洁高效:DeepSeek生成内容复制出来容易出现乱码,下面介绍一种比较高效简单的方法!一、核心三步法1.调整模型模式在D...

打工人福音!3分钟教你学会word精美排版

昨天大熊介绍了word一键排版的三种办法,今天我们来详细讲讲第二种办法,用html代码实现一键排版,然后再导出pdf实现精美效果。打工人,打工魂,你是不是也有以下烦恼?下面是我经过多次和Deepsee...

使用 HTML 创建可折叠的交互式组件,一行 JS 代...

如果你想创建一个可折叠的交互式组件,使用<details>元素即可,一行JavaScript也不用写。<details>组件定义了一个可折叠的容器,它的第一个元素必须...

新手小白1分钟学会Word——文档的编辑1.1

天空一声巨响,迷人的我闪亮登场,亲爱的家人们,周末好呀!话不多说,咱们继续开干!昨天说到本节还有个小尾巴,那咱们就把这个小尾巴了结了,然后开始新篇章~四、保存文档我们对文档编辑完之后最重要的一步就...

超强!DeepSeek+HTML制作数据看板,老板看了都点赞

DeepSeek以极强的推理能力,支持生成各种代码,比如Python、SQL、Matlab、JS、HTML等,你可以拿这些代码放到编译器里,就能直接跑出结果,比如机器学习算法、exe应用、可视化图表、...

什么是Tailwind CSS

什么是TailwindCSSTailwindCSS是一个实用优先(Utility-First)的CSS框架,其核心思想是通过直接在HTML中组合预定义的类名来快速构建界面样式,无需编写传...