当前位置: 首页 > news >正文

[java][jdk]JDK各个版本的核心特性

JDK 8至JDK 21的主要新特性概览:

JDK 8

  1. Lambda表达式:引入了函数式编程的特性,使得代码更加简洁和灵活。
  2. Stream API:提供了一种新的抽象,可以让你以声明性方式处理集合数据。
  3. 新的日期和时间API:引入了java.time包,提供了一套全新的日期和时间处理类。
  4. 接口默认方法和静态方法:允许在接口中定义具有默认实现的方法和静态方法。
  5. Optional类:用于解决空指针异常的问题,可以包装一个可能为空的对象,并提供一系列的操作来处理该对象。
  6. CompletableFuture类:用于异步编程,可以简化异步编程的复杂性。
  7. 并行数组操作:通过Arrays.parallelSort()方法引入了并行数组排序。
  8. 重复注解支持:允许在同一个声明上多次使用相同的注解类型。
  9. Base64编码和解码:在java.util包中提供了对Base64编码和解码的支持。

JDK 9

  1. 平台模块系统(Jigsaw项目):引入了模块化,使得应用程序可以更加轻量级。
  2. 接口私有方法:允许在接口中创建私有方法。
  3. Try-With Resources:扩展了try-with-resources语句,支持自动资源管理。
  4. @SafeVarargs注释:用于防止在泛型代码中可能发生的不安全操作。
  5. 集合工厂方法:提供了新的集合工厂方法,简化集合的创建。
  6. JShell:引入了JShell,一个交互式命令行工具,用于探索Java编程语言。
  7. 流API改进:对流API进行了改进,增强了数据处理能力。

JDK 10

  1. 局部变量类型推断:通过var关键字实现局部变量类型推断。
  2. G1垃圾回收器优化:对G1垃圾回收器进行了优化,提高了性能和减少了停顿时间。

JDK 12

  1. Shenandoah垃圾收集器:引入了Shenandoah GC,一个低延迟的垃圾收集器。
  2. switch表达式:扩展了switch语句,允许它作为表达式使用。

JDK 13

  1. Dynamic CDS Archives:简化应用程序部署,提高启动速度,并优化内存占用。
  2. ZGC和Shenandoah的改进:这两个垃圾收集器都专注于减少GC停顿时间,提高了并发性和适应性。

JDK 14

  1. 文本块(Text Blocks):提高了Java程序中以非Java语言编写的代码的字符串的可读性。
  2. 外部内存访问API(Foreign-Memory Access API):允许Java程序安全、高效地访问Java堆之外的外部内存。

JDK 15

  1. 支持Unicode 13.0:升级了Unicode,支持Unicode 13.0。
  2. CharSequence新增isEmpty方法:给CharSequence新增了isEmpty方法。
  3. TreeMap方法的Specialized Implementations:对TreeMap提供了putIfAbsent, computeIfAbsent, computeIfPresent, compute, merge方法的overriding实现。

JDK 16

  1. 记录类(Record):引入了记录类,提供了一种新的数据载体,简化了数据类的创建。
  2. 模式匹配增强:在switch表达式中进一步增强了模式匹配,简化了代码并提高了可读性。

JDK 17

  1. 密封类和接口:提供了更好的封装性和安全性。
  2. 新的垃圾收集器:引入了ZGC和Shenandoah垃圾收集器,以提供低延迟的垃圾收集。
  3. 模式匹配:增强了instanceof的表达能力。

JDK 18

  1. 集合API增强:新增加或改进的方法,可能包括更方便的创建和操作集合的方式,以及更高效的集合算法。
  2. 输入/输出API改进:对文件I/O和网络I/O进行改进,例如提供更高效的数据读写方式,或是更强大的异步处理能力。

JDK 19

        1. 平台模块系统(Jigsaw项目):这是Java平台模块系统的一个重要更新,旨在使应用程序更加轻量级,并将JDK本身划分为一组模块。

        2. 接口私有方法:允许在接口中创建私有方法,这有助于在非抽象方法之间共享公共代码。

        3. Try-With Resources:对try-with-resources语句进行了增强,允许使用final或等效于final的变量,而无需在try-with-resources语句中声明一个新变量。

        4. @SafeVarargs注释:改进了对泛型代码中潜在不安全操作的警告。

        5. 集合工厂方法:提供了新的集合工厂方法,简化了集合的创建。

        6. Process API改进:对Process API进行了更新,提供了更好的进程管理能力。

        7. 新版本字符串方案:引入了新的版本字符串方案,以支持模块化。

        8. JShell:javashell(REPL):引入了JShell,一个交互式命令行工具,用于探索Java编程语言。

        9. 流API改进:对流API进行了改进,增强了数据处理能力。

        10. 针对Microsoft Windows及更多应用程序的安装程序增强功能:提升了安装程序的用户体验和功能性。

        11. Compact Strings:通过JEP 254引入了Compact Strings,优化了字符串存储,减少了内存占用。

        12. Make G1 the Default Garbage Collector:通过JEP 248将G1垃圾收集器设置为默认垃圾收集器,以提高性能。

        13. Platform Logging API and Service:通过JEP 264引入了平台日志API和服务,提供了一个统一的日志接口。

        14. Reserved Stack Areas for Critical Sections:通过JEP 270引入了为关键部分保留的栈区域,优化了性能。

        15. Indify String Concatenation:通过JEP 280引入了标识字符串连接,优化了字符串拼接的性能。

        16. Spin-Wait Hints:通过JEP 285引入了旋转等待提示,提供了一种机制,通过标准化的方法向底层处理器传达线程处于自旋等待状态。

JDK 20

  1. Scoped Values(作用域值):允许在大型程序中的组件之间安全有效地共享数据,而无需求助于方法参数。
  2. 记录模式(Record Patterns):对record的值进行解构,也就是更方便地从记录类中提取数据。
  3. switch模式匹配:增强了switch语句的模式匹配能力。
  4. 外部函数和内存API:允许Java程序安全、高效地访问Java堆之外的外部内存。
  5. 虚拟线程:提供了一种新的轻量级线程实现,可以显著提高并发程序的性能和可伸缩性。
  6. 结构化并发:提供了一种新的方式来管理并发任务,使得并发编程更加安全和易于管理。
  7. 向量API:提供了一种新的API,用于在支持的CPU架构上进行向量计算。

JDK 21

  1. 字符串模板(String Templates):提供了一种更简洁、更直观的方式来动态构建字符串。
  2. 序列化集合(Sequenced Collections):提供了一种新的集合类型,支持元素的有序序列化。
  3. 分代ZGC(Generational ZGC):对ZGC垃圾收集器进行了优化,提高了性能。
  4. 记录模式(Record Patterns):进一步增强了记录模式,使得从记录类中提取数据更加方便。
  5. switch的模式匹配(Pattern Matching for switch):增强了switch语句的模式匹配能力。
  6. 外部函数和内存API(Foreign Function & Memory API):允许Java程序安全、高效地访问Java堆之外的外部内存。
  7. 虚拟线程(Virtual Threads):提供了一种新的轻量级线程实现,可以显著提高并发程序的性能和可伸缩性。

相关文章:

[java][jdk]JDK各个版本的核心特性

JDK 8至JDK 21的主要新特性概览: JDK 8 Lambda表达式:引入了函数式编程的特性,使得代码更加简洁和灵活。Stream API:提供了一种新的抽象,可以让你以声明性方式处理集合数据。新的日期和时间API:引入了jav…...

双十一”买买买!法官告诉你注意这些法律问题

“双十一”等购物节来临之际,某些电商平台为了吸引消费者提前下单预订商品,通过大力宣传付定金可享受更多优惠等方式开启预售模式。那么,如果消费者在支付定金后,因各种原因最终没有支付尾款,能否要求商家退还定金&…...

PyQt5

基于PyQt5的重绘机制实现加载页面 效果预览代码说明控件初始化超时回调重绘事件缩放事件 代码获取 效果预览 直接看图,效果展现为跟随黑点顺时针转动,且有明暗变化 代码说明 控件初始化 initUI主要用于初始化用户界面(UI)。它创建了一个具有特定样式…...

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令(help)2.4. 命令说明书(man)2.5. 切换用户(su)2.6.历史指令 3.目录…...

Vue3-06_路由

路由 后台路由是根据请求url,匹配请求处理的后台模块(路径) 前台根据访问路径,决定显示的内容。 路由就是: 访问hash 与内容的对应关系 路由的工作方式 用户点击页面的路由链接导致url地址栏中的Hash值发生了变化前…...

物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?

SMIC家工艺的数字后端实现PR chipfinish写出来的带PG netlist如下图所示。我们可以看到标准单元没有VNW和VPW pin的逻辑连接关系。 前几天小编在社区星球上分享了T12nm ananke_core CPU低功耗设计项目的Calibre LVS案例,就是关于标准单元VPP和VBB的连接问题。 目前…...

量化分析工具日常操作日记-5-通合科技

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技(300491)。 周末国家新政策,要大力支持军工行业,我用工具挖掘了两个低位股,供大家参考。通合科技(300491&#xff…...

windows和linux验证MD5码方式

一、linux linux自带MD5码验证: $ md5sum target_file.txt 二、windows windows自带的MD5码验证: $ certutil -hashfile target_file.txt MD5...

构造函数原型对象语法、原型链、原型对象

目录 一、前言 二、编程思想 面向过程 面向对象 三、构造函数 四、原型对象 constructor 属性 对象原型 原型继承 原型链 一、前言 通过本篇博客,我们将了解面向对象编程的一般特征,掌握基于构造函数原型对象的逻辑封装,掌握基于原…...

鸿蒙UI开发——自定义UI绘制帧率

1、概 述 随着设备屏幕的不断演进,当前主流设备采用LTPO屏幕(可变刷新率屏幕),此类屏幕支持在多个档位之间切换屏幕帧率。 对于快速变化的内容,如射击游戏,交互动画等,显示帧率越高&#xff0…...

鸿蒙基本组件结构

组件结构 1. 认识基本的组件结构 ArkTS通过装饰器Component 和Entry 装饰 struct 关键字声明的数据结构,构成一个自定义组件 自定义组件中提供了一个build函数,开发者需要在函数内以链式调用的方式进行基本的UI描述,UI描述的方法请参考UI描述…...

柔性鞋材振动刀智能视觉裁切机市场报告:未来几年年复合增长率CAGR为5.4%

震动刀切割设备是一种利用振动刀片在各种非金属材料表面上切割的设备,振动刀切割机利用刀片高频振动和360度旋转,能保证每分钟上万次的振动频率,可在平面进行垂直切割,锋利裁剪。震动刀切割设备切割速度快,可以单层切割…...

【计算机网络】基础知识,常识应用知识

局域网使用的是广播技术,广域网使用的是点对点技术,使用的协议不同。局域网工作在数据链路层,可以不要网络层,不存在路由选择问题。1968年6月,世界上最早的计算机网络是ARPAnet服务原语:请求、指示、相应、…...

【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)

--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤: 用这生命中的每一秒,给自己一个不后悔的未来。 -----------------------------------------------…...

使用iviewui组件库的坑

背景 使用view-design组件库的Input组件的时候,按照产品的要求,输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性,设置类型为number时,乍一看没啥问题,但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…...

高级sql使用技巧

窗口函数(Window Functions): 窗口函数可以在结果集的行之间进行计算,例如计算移动平均值、排名等。在使用时,可以使用 OVER() 语句来定义窗口。例如: sql SELECT employee_id,salary,AVG(salary) OVER (P…...

403 Request Entity Too Lager(请求体太大啦)

昨天收到 QA 的生产报障,说是测试环境的附件上传功能报了 403 的错误,错误信息:403 Request Entity Too Lager。我尝试复现问题,发现传个几兆的文件都费劲啊,一传一个失败。不用说,项目用到 ng 代理&#x…...

Flutter 正在切换成 Monorepo 和支持 workspaces

其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布,全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会,创始人分享 Flutter 十年发展史》 就有简单提到过,而目前来说刚好看到 flaux 这个新进展,所以就再…...

小白初入Android_studio所遇到的坑以及怎么解决

1. 安装Android_studio 参考:Android Studio 安装配置教程 - Windows(详细版)-CSDN博客 Android Studio超级详细讲解下载、安装配置教程(建议收藏)_androidstudio-CSDN博客 想下旧版本的android_studio的地址(仅供参考&#xf…...

NetCore使用Aop和内存缓存对接口、方法进行数据缓存

通过Aop内存缓存对接口、方法进行缓存 源码地址https://gitee.com/wangbenchi66/nuget 1. nuget包引入 必须引入包 至少在2024.11.7以上 <PackageReference Include"WBC66.Cache.Core" Version"2024.11.7" />必须开启内存缓存 否则后续步骤无法正…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...