JDK 21 for MacOS是Java开发工具包(JDK)的一个版本,专为Mac操作系统而设计。JDK 21是Java SE Development Kit(JDK)的一个长期支持版本(LTS),它带来了许多备受关注的新功能,如虚拟线程、记录模式、switch模式匹配和分代ZGC等。此外,JDK 21还提供了一些预览阶段和孵化阶段的功能,如外部函数和内存API、作用域值和结构化并发等。JDK 21为MacOS提供了针对不同架构的安装包,包括x64和AArch64(M1芯片)架构。开发者可以根据自己的Mac硬件架构选择合适的安装包进行安装。 总之,它提供了许多新功能和改进,以提高在Mac平台上开发Java应用程序的效率和性能。有需求的用户还请下载支持。
JDK 21 for Mac有哪些新功能
1、
虚拟线程(Virtual Threads):
JDK 21引入了虚拟线程,这是一种轻量级且高效的并发编程模型。虚拟线程可以提高整体吞吐量,并以更少的开销处理更多的任务。
2、
记录模式(Records):
JDK 21引入了记录模式,它是一种用于解构记录值的增强Java编程语言特性。记录模式可以实现功能强大、声明性和可组合形式的数据导航和处理。
3、
Switch模式匹配(Switch Pattern Matching):
JDK 21增强了Java编程语言的switch语句,使其支持模式匹配。这使得在switch语句中可以更方便地进行模式匹配操作。
4、
分代ZGC(Generational ZGC):
JDK 21引入了分代ZGC垃圾回收机制,它是一种高性能的垃圾回收器,可以提供更短的停顿时间和更高的吞吐量。
详细安装教程
1、双击运行下载好的JDK安装文件
2、弹出以下界面后,双击.pkg结尾的文件进入安装引导界面
3、 弹出安装引导界面后点击[继续]按钮来安装JDK
4、弹出以下引导界面后点击[安装]按钮
5、安装中...,安装成功
6、配置环境变量
打开终端输入:nano ~/.bash_profile 编辑bash_profile文件,输入export PATH=$PATH:/usr/local/jdk-17/bin,然后按Ctrl+x,回车,保存文件并退出。
使用JDK 21 for Mac如何提高并发编程效率?
JDK 21 for MacOS的虚拟线程是一种轻量级线程,它可以显著减少编写、维护和调试高吞吐量并发应用程序的工作量。虚拟线程是由JEP 425提出的预览功能,并在JDK 21中首次发布,JDK 21中最终确定。
虚拟线程的设计目标是提高并发编程的效率。它可以在Java应用程序中实现更高的并发性能和吞吐量,同时减少线程创建和销毁的开销。相比传统的线程模型,虚拟线程具有更低的内存消耗和更高的创建速度,这使得开发者可以更轻松地创建大量的并发任务。
虚拟线程的另一个优势是它们可以与现有的Java线程模型无缝集成。开发者可以使用现有的java.lang.Thread API来创建和管理虚拟线程,而无需进行大量的代码更改。这意味着开发者可以在现有的Java应用程序中轻松地采用虚拟线程,而无需重写整个应用程序。
虚拟线程还支持线程本地变量和线程中断等常见的线程特性,这使得开发者可以在虚拟线程中执行任何Java代码,并且可以方便地进行错误处理和取消操作。此外,虚拟线程还可以通过现有的JDK工具进行故障排除、调试和分析,提供了更好的可观察性和可维护性。
总之,JDK 21 for MacOS的虚拟线程通过减少编写、维护和调试高吞吐量并发应用程序的工作量,提高了并发编程的效率。它具有轻量级、高性能和与现有Java线程模型的无缝集成等优势,使开发者能够更轻松地创建和管理大量的并发任务。虚拟线程还支持常见的线程特性,并提供了故障排除和调试工具,以提高应用程序的可观察性和可维护性。
JDK 21 for Mac更新内容
1. 语言特点
➜ 记录模式
使用记录模式增强 Java 编程语言以解构记录值。可以嵌套记录模式和类型模式,以实现功能强大、声明性和可组合形式的数据导航和处理。
➜ 开关模式匹配
通过表达式和语句的模式匹配来增强 Java 编程语言。扩展模式匹配允许针对多个模式测试表达式,每个模式都有一个特定的操作,以便可以简洁安全地表达复杂的面向数据的查询。
1.1 语言功能预览
➜ 字符串模板(预览版)
使用字符串模板增强 Java 编程语言。字符串模板通过将文字文本与嵌入式表达式和模板处理器耦合来补充 Java 现有的字符串文字和文本块,以产生专门的结果。这是一个预览语言功能和 API。
➜ 未命名模式和变量(预览版)
使用未命名的模式(与记录组件匹配而不说明组件的名称或类型)和未命名变量(可以初始化但不使用)来增强 Java 语言。两者都由下划线字符 表示。这是一项预览语言功能。
➜ 未命名类和实例主方法(预览版)
改进 Java 语言,以便学生可以编写他们的第一个程序,而无需了解为大型程序设计的语言功能。学生远非使用单独的Java方言,而是可以为单类程序编写简化的声明,然后随着技能的增长无缝扩展他们的程序以使用更高级的功能。这是一项预览语言功能。
2. 库改进
➜ 虚拟线程
将虚拟线程引入 Java 平台。虚拟线程是轻量级线程,可显著减少编写、维护和观察高吞吐量并发应用程序的工作量。
➜ 排序集合
引入新接口来表示具有定义的遭遇顺序的集合。每个这样的集合都有一个明确定义的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供统一的 API,用于访问其第一个和最后一个元素,以及以相反的顺序处理其元素。
“生活只能倒着理解;但它必须向前生活。
— 克尔凯郭尔
➜ 密钥封装机制接口
介绍密钥封装机制 (KEM) 的 API,这是一种使用公钥加密保护对称密钥的加密技术。
2.1 库改进预览和孵化器
➜ 外部函数和内存 API(第三预览版)
引入一个 API,通过该 API,Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码)和安全地访问外部内存(即不由JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会像JNI那样脆弱和危险。这是一个预览版 API。
➜ 结构化并发(预览版)
通过引入结构化并发 API 来简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消,提高可靠性并增强可观测性。这是一个预览版 API。
➜ 作用域值(预览版)
引入作用域值,这些值可以在不使用方法参数的情况下安全有效地共享到方法。它们优先于线程局部变量,尤其是在使用大量虚拟线程时。这是一个预览版 API。
实际上,作用域值是一个隐式方法参数。“好像”调用序列中的每个方法都有一个额外的、不可见的参数。没有一种方法声明此参数,只有有权访问作用域值对象的方法才能访问其值(数据)。作用域值使通过一系列中间方法将数据从调用方安全地传递到远方被调用方成为可能,这些中间方法不声明数据的参数,并且无法访问数据。
➜ 载体 API(第六孵化器)
引入一个 API 来表达矢量计算,该计算在运行时可靠地编译为支持的 CPU 架构上的最佳矢量指令,从而实现优于等效标量计算的性能。
3. 性能改进
➜ 代代中关村
通过扩展 Z 垃圾回收器 (ZGC) 来提高应用程序性能,以便为年轻对象和旧对象维护不同的代。这将使ZGC能够更频繁地收集年轻物体 - 这些物体往往会英年早逝。
4. 管理权
➜ 准备禁止代理的动态加载
在将代理动态加载到正在运行的 JVM 中时发出警告。这些警告旨在让用户为将来的版本做好准备,该版本默认不允许动态加载代理,以便在默认情况下提高完整性。在启动时加载代理的功能功能工具不会导致在任何版本中发出警告。