[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" />必须开启内存缓存 否则后续步骤无法正…...
DeepSeek模型服务Kubernetes化迁移 checklist(含CRD定义、ServiceMesh适配、TLS双向认证配置)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek模型服务Kubernetes化迁移全景概览 将DeepSeek系列大语言模型(如DeepSeek-V2、DeepSeek-Coder)从单机或虚拟机部署迁移至Kubernetes集群,是支撑高并发推理、…...
为AI智能体构建可编程邮箱:mailbot实战指南
1. 项目概述:为AI智能体打造专属的“可编程邮箱”如果你正在开发一个AI智能体,无论是客服机器人、自动化工作流还是个人助理,让它具备收发邮件的能力往往是刚需。传统的做法是什么?要么去折腾Gmail的API,忍受OAuth授权…...
半导体行业数据分析:从WSTS报告解读市场趋势与从业者应对策略
1. 从一份行业快报说起:如何解读半导体市场的“水温”早上刚冲好咖啡,习惯性地扫了一眼行业新闻,看到EE Times上这篇关于2013年第一季度全球半导体销售额的简报。标题很直接:“Chip sales up 1% through Q1”。1%的增长࿰…...
深度学习正则化(三)—— 提前终止 + 参数共享 + 稀疏表示(三十)
1. 定位导航 正则化 5 篇中,本篇承前启后: 第 28:参数范数惩罚(L1/L2)— 加在损失函数上 第 29:数据增强、噪声、半监督 — 操作数据 第 30(本篇):提前终止、参数共享、稀疏表示 — 隐式正则化 第 31:Bagging + Dropout 第 32:对抗训练 + 切面分类 本篇的三个方法表…...
浏览器扩展革命:5分钟解锁微信网页版全功能访问
浏览器扩展革命:5分钟解锁微信网页版全功能访问 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版的各种限制而烦恼吗&…...
构建多模型对比评测工具时集成Taotoken的统一接口
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建多模型对比评测工具时集成Taotoken的统一接口 在模型选型、效果验证或学术研究过程中,开发者或研究者常常需要并行…...
实测推荐!2026年毕业论文5000字范文免费下载AI写作工具排行,查重降AI率全攻略
本文由知学术AIPaperGPT内容团队实测撰写 2026-05-11实测推荐!2026年毕业论文5000字范文免费下载AI写作工具排行,查重降AI率全攻略又是一年毕业季,无数本科、硕士生正为毕业…...
告别top!用htop监控Linux进程,这10个高效用法运维新手必看
告别top!用htop监控Linux进程,这10个高效用法运维新手必看 如果你还在用top命令监控Linux服务器状态,就像拿着算盘处理大数据——虽然能用,但效率实在堪忧。作为top的现代化替代品,htop以其彩色界面、鼠标支持和直观的…...
从pip._vendor.urllib3报错到apt-get失败:一次搞定Ubuntu网络DNS配置(附阿里云镜像加速)
从pip报错到apt-get失败:Ubuntu网络DNS配置全攻略 最近在Ubuntu 16.04上配置Python开发环境时,遇到了一个看似简单却令人头疼的问题——pip安装包时频繁报错pip._vendor.urllib3.connection.HTTPSConnection,紧接着发现连apt-get update也失败…...
芯片验证工程师的思维模式:从职业本能到生活与管理的利器
1. 从“找茬”到“共生”:一位芯片验证工程师的职业心路 “今天又抓了几个bug?” 这可能是我们验证工程师之间最常听到的问候语,其频率仅次于“咖啡机在哪”。十多年前,当我读到那篇关于“Bug是否侵扰了生活”的专栏时࿰…...
