Java 19 新特性—概述

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实!

阶段1、深入多线程

阶段2、深入多线程设计模式

阶段3、深入juc源码解析


阶段4、深入jdk其余源码解析


阶段5、深入jvm源码解析

码哥源码部分

码哥讲源码-原理源码篇【2024年最新大厂关于线程池使用的场景题】

码哥讲源码【炸雷啦!炸雷啦!黄光头他终于跑路啦!】

码哥讲源码-【jvm课程前置知识及c/c++调试环境搭建】

​​​​​​码哥讲源码-原理源码篇【揭秘join方法的唤醒本质上决定于jvm的底层析构函数】

码哥源码-原理源码篇【Doug Lea为什么要将成员变量赋值给局部变量后再操作?】

码哥讲源码【你水不是你的错,但是你胡说八道就是你不对了!】

码哥讲源码【谁再说Spring不支持多线程事务,你给我抽他!】

终结B站没人能讲清楚红黑树的历史,不服等你来踢馆!

打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】

Java 19, 于2022-09-20 发布

JEP 405:Record模式(预览)

Java 14 引入预览特性 Record 旨在提供一种简洁的语法来声明类似数据的小型不可变对象,主要是为了解决长期以来在 Java 中定义纯数据载体类时,代码过于繁琐的问题。在 Java 16 中转为正式特性。

instanceof 模式匹配也是在 Java 14 作为预览特性引入的,主要是为了解决 instanceof 在做类型匹配时需要进行强制类型转换而导致的代码冗余。

Java 19 引入 Record 模式作为预览特性,它允许在instanceof操作中使用记录模式,直接解构和匹配记录中的字段。

比如有一个记录Record Point(int x, int y),可以使用 Record 模式直接检查和提取 x 和 y 值:

if (obj instanceof Point(int x, int y)) {
  System.out.println(x+y);
}

可以看出,类型判断、类型转换、Record值的结构一气呵成,极大地简化了代码结构。

该特性使Java 模式匹配能力得到进一步扩展。

JEP 422:JDK移植到Linux/RISC-V

RISC-V 是一个开源的基于 RISC 的指令集架构。通过Linux/RISC-V移植,Java将获得对硬件指令集的支持。目前该端口支持以下的HotSpot VM选项:

  • 模板解释器
  • 客户端JIT编译器
  • 服务端JIT编译器
  • 包括ZGC和Shenandoah在内的主流垃圾收集器

该特性通过为 Linux/RISC-V 提供支持,增强了 Java 在多种硬件平台上的可用性和适应性。

JEP 424:外部函数和内存API(预览)

外部函数和内存API 是 Java 17 作为预览特性引入的,它的核心在于提供一种安全、高效的方法来访问本地代码(例如 C 或 C++ 库)和内存。主要是通过两个组件实现的:

  1. Foreign Function Interface (FFI): 允许 Java 代码直接调用非 Java 代码,特别是用 C/C++ 编写的代码。这可以通过定义一种类型安全的方式来实现,同时避免了 Java 本地接口(JNI)的复杂性和开销。
  2. Foreign Memory Access API:提供了一种安全的方法来访问不受 JVM 管理的内存。这对于需要操作系统级别内存操作或者直接与外部设备交互的应用程序非常重要。
Java 版本更新类型JEP更新内容
Java 14孵化器JEP 370引入了外部内存访问 API
Java 15第二孵化器JEP 383优化外部内存访问 API
Java 16孵化器JEP 389引入了外部链接器 API
Java 16第三孵化器JEP 393继续优化
Java 17孵化器JEP 412引入了外部函数和内存 API
Java 18二次孵化器JEP 419在此版本中,API再次进行了一些改进和扩展。
Java 19第一次预览JEP 424

JEP 425:虚拟线程(预览)

虚拟线程是一种轻量级的线程,也就是我们俗称的协程。它的资源分配和调度由VM实现,而不是操作系统。虚拟线程的主要特点包括:

  1. 轻量级:与传统线程相比,它更轻量,创建和销毁的成本较低。
  2. 简化并发编程:由于不受操作系统线程数量的限制,我们可以为每个独立的任务创建一个虚拟线程,简化并发编程模型。

Java 19 引入虚拟线程的主要目的是为了解决以下问题:

  • 解决并发编程复杂性:传统的线程模型在处理大量并发任务时复杂且效率低下。虚拟线程简化了并发编程,因为它们更加轻量级,并且易于管理。
  • 资源限制:操作系统线程是有限的资源,大量线程的创建和管理可能会导致性能下降和资源耗尽。虚拟线程通过减轻这些限制,使得创建和管理大量线程成为可能。

JEP 426:向量API(第四次孵化)

向量 API 是在 Java 16 中作为孵化器引入的,其目的是提供一个表达式丰富、编译时性能可预测的平台,用于编写复杂的向量计算,以充分利用现代处理器的 SIMD(单指令多数据)指令。

它经历了 Java 16 、Java 17 、Java 18 三次孵化,这是第四次孵化:

Java 版本更新类型JEP更新内容
Java 16第一次孵化JEP 338提供一个平台无关的方式来表达向量计算,能够充分利用现代处理器上的向量硬件指令。
Java 17第二次孵化JEP 414对 API 进行了改进,增加了性能优化和新的功能。
Java 18第三次孵化JEP 417进一步增强 API,改进了性能和易用性。
Java 19第四次孵化JEP 426进一步增强 API

JEP 427:模式匹配的 Switch(第三次预览)

模式匹配的 Switch 首次是在 Java 17 中作为预览特性引入,其主要目的是为了简化在case 标签中进行类型检查和类型转换,减少冗余的代码。

Java 版本更新类型JEP更新内容
Java 17第一次预览JEP 406引入模式匹配的 Swith 表达式作为预览特性。
Java 18第二次预览JEP 420对其做了改进和细微调整
Java 19第三次预览JEP 427进一步优化模式匹配的 Swith 表达式

JEP 428:结构化并发(孵化功能)

传统的并发编程模型往往让开发者面对复杂的线程管理和错误处理问题,尤其是在多线程和异步编程场景中。Java 19 引入结构化并发,其主要目的是为了改善 Java 并发模型,简化 Java 中的并发编程。

结构化并发是一种新的并发编程范式,旨在使并发操作更容易管理和维护。它通过引入一种称为“结构化并发”的概念来实现,该概念强调将并发任务组织在一起,使它们的生命周期更加清晰和可控。

目前该特性还处于孵化阶段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值