[java][jdk]JDK各个版本的核心特性
JDK 8至JDK 21的主要新特性概览:
JDK 8
- Lambda表达式:引入了函数式编程的特性,使得代码更加简洁和灵活。
- Stream API:提供了一种新的抽象,可以让你以声明性方式处理集合数据。
- 新的日期和时间API:引入了
java.time
包,提供了一套全新的日期和时间处理类。 - 接口默认方法和静态方法:允许在接口中定义具有默认实现的方法和静态方法。
- Optional类:用于解决空指针异常的问题,可以包装一个可能为空的对象,并提供一系列的操作来处理该对象。
- CompletableFuture类:用于异步编程,可以简化异步编程的复杂性。
- 并行数组操作:通过
Arrays.parallelSort()
方法引入了并行数组排序。 - 重复注解支持:允许在同一个声明上多次使用相同的注解类型。
- Base64编码和解码:在
java.util
包中提供了对Base64编码和解码的支持。
JDK 9
- 平台模块系统(Jigsaw项目):引入了模块化,使得应用程序可以更加轻量级。
- 接口私有方法:允许在接口中创建私有方法。
- Try-With Resources:扩展了try-with-resources语句,支持自动资源管理。
- @SafeVarargs注释:用于防止在泛型代码中可能发生的不安全操作。
- 集合工厂方法:提供了新的集合工厂方法,简化集合的创建。
- JShell:引入了JShell,一个交互式命令行工具,用于探索Java编程语言。
- 流API改进:对流API进行了改进,增强了数据处理能力。
JDK 10
- 局部变量类型推断:通过
var
关键字实现局部变量类型推断。 - G1垃圾回收器优化:对G1垃圾回收器进行了优化,提高了性能和减少了停顿时间。
JDK 12
- Shenandoah垃圾收集器:引入了Shenandoah GC,一个低延迟的垃圾收集器。
- switch表达式:扩展了switch语句,允许它作为表达式使用。
JDK 13
- Dynamic CDS Archives:简化应用程序部署,提高启动速度,并优化内存占用。
- ZGC和Shenandoah的改进:这两个垃圾收集器都专注于减少GC停顿时间,提高了并发性和适应性。
JDK 14
- 文本块(Text Blocks):提高了Java程序中以非Java语言编写的代码的字符串的可读性。
- 外部内存访问API(Foreign-Memory Access API):允许Java程序安全、高效地访问Java堆之外的外部内存。
JDK 15
- 支持Unicode 13.0:升级了Unicode,支持Unicode 13.0。
- CharSequence新增isEmpty方法:给
CharSequence
新增了isEmpty
方法。 - TreeMap方法的Specialized Implementations:对
TreeMap
提供了putIfAbsent
,computeIfAbsent
,computeIfPresent
,compute
,merge
方法的overriding实现。
JDK 16
- 记录类(Record):引入了记录类,提供了一种新的数据载体,简化了数据类的创建。
- 模式匹配增强:在
switch
表达式中进一步增强了模式匹配,简化了代码并提高了可读性。
JDK 17
- 密封类和接口:提供了更好的封装性和安全性。
- 新的垃圾收集器:引入了ZGC和Shenandoah垃圾收集器,以提供低延迟的垃圾收集。
- 模式匹配:增强了
instanceof
的表达能力。
JDK 18
- 集合API增强:新增加或改进的方法,可能包括更方便的创建和操作集合的方式,以及更高效的集合算法。
- 输入/输出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
- Scoped Values(作用域值):允许在大型程序中的组件之间安全有效地共享数据,而无需求助于方法参数。
- 记录模式(Record Patterns):对record的值进行解构,也就是更方便地从记录类中提取数据。
- switch模式匹配:增强了switch语句的模式匹配能力。
- 外部函数和内存API:允许Java程序安全、高效地访问Java堆之外的外部内存。
- 虚拟线程:提供了一种新的轻量级线程实现,可以显著提高并发程序的性能和可伸缩性。
- 结构化并发:提供了一种新的方式来管理并发任务,使得并发编程更加安全和易于管理。
- 向量API:提供了一种新的API,用于在支持的CPU架构上进行向量计算。
JDK 21
- 字符串模板(String Templates):提供了一种更简洁、更直观的方式来动态构建字符串。
- 序列化集合(Sequenced Collections):提供了一种新的集合类型,支持元素的有序序列化。
- 分代ZGC(Generational ZGC):对ZGC垃圾收集器进行了优化,提高了性能。
- 记录模式(Record Patterns):进一步增强了记录模式,使得从记录类中提取数据更加方便。
- switch的模式匹配(Pattern Matching for switch):增强了switch语句的模式匹配能力。
- 外部函数和内存API(Foreign Function & Memory API):允许Java程序安全、高效地访问Java堆之外的外部内存。
- 虚拟线程(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ÿ…...
windows和linux验证MD5码方式
一、linux linux自带MD5码验证: $ md5sum target_file.txt 二、windows windows自带的MD5码验证: $ certutil -hashfile target_file.txt MD5...
构造函数原型对象语法、原型链、原型对象
目录 一、前言 二、编程思想 面向过程 面向对象 三、构造函数 四、原型对象 constructor 属性 对象原型 原型继承 原型链 一、前言 通过本篇博客,我们将了解面向对象编程的一般特征,掌握基于构造函数原型对象的逻辑封装,掌握基于原…...
鸿蒙UI开发——自定义UI绘制帧率
1、概 述 随着设备屏幕的不断演进,当前主流设备采用LTPO屏幕(可变刷新率屏幕),此类屏幕支持在多个档位之间切换屏幕帧率。 对于快速变化的内容,如射击游戏,交互动画等,显示帧率越高࿰…...
鸿蒙基本组件结构
组件结构 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的地址(仅供参考…...
NetCore使用Aop和内存缓存对接口、方法进行数据缓存
通过Aop内存缓存对接口、方法进行缓存 源码地址https://gitee.com/wangbenchi66/nuget 1. nuget包引入 必须引入包 至少在2024.11.7以上 <PackageReference Include"WBC66.Cache.Core" Version"2024.11.7" />必须开启内存缓存 否则后续步骤无法正…...
playwright学习记录2--定位方式
快捷导航 定位方式:元素操作断言方式自动等待 定位方式: csspage.get_by_role() 通过显式和隐式可访问性属性进行定位。page.get_by_text() 按文本内容定位。page.get_by_label() 通过关联标签的文本定位表单控件。page.get_by_placeholder() 通过占位符…...
响应式网页设计--html
一,HTML 文档的基本结构 一个典型的 HTML 文档包含了几个主要部分,基本结构如下(本文以下出现的所有代码都可以套入下面示例进行测试): <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&q…...
C#核心(8) 静态成员
前言 先前我们已经学习了成员变量以及成员属性。 静态成员对于在整个应用程序中共享数据和功能非常有用。它们可以用于跟踪全局状态、共享常量和实现单例模式等。但是需要注意的是,过度使用静态成员可能导致代码变得难以维护和测试,因此应谨慎使用。其…...
关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细
目录 用户签名,初始化git git提交流程图 提交到本地库 版本穿梭 分支操作 分支合并冲突 团队协作 github的使用 推送代码 克隆 拉取代码 团队协作冲突 团队协作之分支管理 推送分支到分支: 拉去远程库分支到本地库: 本地删除远程分支&am…...
Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析
在前端开发的广阔天地中,Axios 犹如一颗璀璨的明星,为我们与服务器之间的通信搭建起坚实的桥梁。其中,responseType 属性更是赋予了我们灵活处理服务器响应的强大能力。 一、Axios 的 responseType 属性值及示例 1.arraybuffer 当我们将 r…...
redis集群介绍
1. 节点(Node): • Redis集群中的单个Redis服务器实例。每个节点都运行一个Redis服务器进程,并维护自己的数据。 2. 分片(Sharding): • 将数据集分割成多个部分,并分布到不同的节点…...
JDK中常用的包有哪些?
1.java.lang 描述:包含Java语言的核心类,不需要显式导入。 常用类:Object、String、Math、System、Thread、Exception等。 2.java.util 描述:提供了集合框架、日期和时间功能、随机数生成、扫描和格式化等实用工具类。 常用类…...
校园官网练习---web
HTML: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>西安工商学院</title><…...
MySQL中指定字段的某个值排在前面
一 需求 如果我们想讲表中指定的字段的某一个值排序在最前面应该如何处理? 二 实现方式 方法 1、使用<>,xml中使用<![CDATA[跳过解析的特殊符号]]>或者<(小于符号)>(大于符号) ORDER …...
【51单片机】I2C总线详解 + AT24C02
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 AT24C02介绍存储器 I2C总线介绍I2C时序结构数据帧AT24C02数据帧 编程实例 —— 按键控制数据大小&存储器写入读出 AT24C02介绍 …...
WordPress更新最新版本失败/seo关键词搜索优化
有朋友在群里和大家讨论,问的最多的问题就是,python 爬虫学到什么程度可以去找工作了,关于这点,和大家分享下我的理解。 确立目标、了解需求 首先我们要先定位自己的目标,当然我们先以爬虫工程师来做个说明。 去招聘…...
在菲律宾做网络网站犯法吗/最新消息新闻
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼信息: INFO: Registering the flow data beans信息: INFO: [INS-07001] 在 BeanStore 中找不到属性 INSTALL_TYPE 的值。信息: INFO: [INS-07001] 在 BeanStore 中找不到属性 oracle_install_WindowsSystemDirectory 的值。信息: I…...
vi设计经典案例/安徽网站seo
你按照缺省配置部署AIMS或者MapGuide时也许发现,这个系统的性能并不是很好,并发用户稍微多一点就MapGuide Server就死掉了。这是因为MapGuide的缺省配置只是比较安全的一个设置,能确保在大多数机器配置下能够运行而已,但如果把这个…...
怎么用网页源码做网站/seo入门教程seo入门
ItemParamItem itemParamItem MAPPER.readValue(jsonData,ItemParamItem.class); 此ItemParamItem没有添加 构造函数转载于:https://www.cnblogs.com/javaxs/p/6366318.html...
哪个网站可以做练习题/网站推广服务报价表
新的知识产权(IP)将加速产品面市时间并降低开发周期风险 2017年1月10日 — 推动高能效创新的安森美半导体(ON Semiconductor,美国纳斯达克上市代号:ON),宣布与Hexius半导体合作,从而使其部分模拟知识产权(IP)能用于受欢迎的ONC18 …...
合肥网站设计/网站设计费用
作者 | 吴成 来源 | python爬虫人工智能大数据(ID:pylearn)我们在做爬虫,或者自动化测试的时候,经常需要用到Selenium,这个框架大家也都不陌生,相信用过的朋友, 大部分肯定都知道在Windows下不…...