JDK 新特性

  1. 引入模块

    Java 9 开始引入了模块(Module),目的是为了管理依赖。使用模块可以按需打包 JRE 和进一步限制类的访问权限。

  2. 接口支持私有方法

    JAVA 9 开始,接口里可以添加私有方法,JAVA 8 对接口增加了默认方法的支持,在 JAVA 9 中对该功能又来了一次升级,现在可以在接口里定义私有方法,然后在默认方法里调用接口的私有方法。这样一来,既可以重用私有方法里的代码,又可以不公开代码。

  3. 匿名内部类支持钻石(diamond)运算符

    JAVA 5 就引入了泛型(generic),到了 JAVA 7 开始支持钻石(diamond)运算符:<>,可以自动推断泛型的类型;但是这个自动推断类型的钻石运算符不支持匿名内部类,在 JAVA 9 中也对匿名内部类做了支持。

  4. 增强的 try-with-resources

    JAVA 7 中增加了try-with-resources的支持,可以自动关闭资源,但需要声明多个资源变量时,需要在 try 中写多个变量的创建过程,JAVA 9 中对这个功能进行了增强,可以引用 try 代码块之外的变量来自动关闭。

  5. 弃用 new Integer()

    JAVA 9 开始弃用了 new Integer() 的方式来创建 Integer 对象,推荐通过静态工厂 Integer.valueOf() 的方式来替代,其它包装类类似。

  6. 局部变量的自动类型推断(var)

    JAVA 10 带来了一个很有意思的语法 var,它可以自动推断局部变量的类型,以后再也不用写类型了,也不用靠 lombok 的 var 注解增强了,不过这个只是语法糖,编译后变量还是有类型的。

    for (var c : CacheConsts.CacheEnum.values()) {if (c.isLocal()) {Caffeine<Object, Object> caffeine = Caffeine.newBuilder().recordStats().maximumSize(c.getMaxSize());if (c.getTtl() > 0) {caffeine.expireAfterWrite(Duration.ofSeconds(c.getTtl()));}caches.add(new CaffeineCache(c.getName(), caffeine.build()));}}
    
  7. java 命令增强

    以前编译一个 java 文件时,需要先 javac 编译为 class,然后再用 java 执行,JAVA 11 之后可以直接使用 java 命令。

  8. Java Flight Recorder 开源

    「Java Flight Recorder」 是个非常好用的调试诊断工具,不过之前是在 Oracle JDK 中, JAVA 11 后就开源了,OpenJDK 现在也可以用这个功能。

  9. 文本块(Text Block)的支持

    JAVA 13 中帮你解决了大段带换行符的字符串报文的问题,增加了文本块(""")的支持,可以不通过换行符换行拼字符串,而且不需要转义特殊字符,就像用模板一样。

  10. 新增 record 类型

    JAVA 14 新增 record 类型,干掉复杂的 POJO 类,一般我们创建一个 POJO 类,需要定义属性列表,构造函数,getter/setter方法,比较麻烦,JAVA 14 为我们带来了一个便捷的创建类的方式 - record。

    不过这个只是一个语法糖,编译后还是一个 Class,和普通的 Class 区别不大。

    @ConfigurationProperties(prefix = "novel.cors")
    public record CorsProperties(List<String> allowOrigins) {}
    
  11. 更直观的 NullPointerException 提示

    JAVA 14 优化了 NullPointerException 的提示,让你更容易定位到哪个对象为空。

  12. switch 语法增强

    switch 从 JDK 14 开始可以通过yield关键字来生成结果,并且支持箭头语法取代case后面的冒号,使用箭头语法后每个 case 语句后面也无需再加上 break;JDK 17 支持了 case null 的用法。

  13. 新增 jpackage 打包工具

    JAVA 14 新增 jpackage 打包工具,可以直接打包二进制程序,再也不用装 JRE 了。

    之前如果想构建一个可执行的程序,还需要借助三方工具,将 JRE 一起打包,或者让客户电脑也装一个 JRE 才可以运行我们的 JAVA 程序。

    现在 JAVA 直接内置了 jpackage 打包工具,帮助你一键打包二进制程序包。

  14. 新增封闭(Sealed )类

    JAVA 的继承以前只能选择允许继承和不允许继承(final 修饰),JAVA 15 新增了一个封闭(Sealed )类的特性,可以指定某些类才可以继承。

  15. 新增垃圾回收器

    JAVA 15 中,两款垃圾回收器ZGC 和 Shenandoah 正式登陆(默认 G1 ),性能更强,延迟更低。

  16. instanceof 智能转型

    之前处理动态类型碰上要强转时,需要先 instanceof 判断一下,然后再强转为该类型处理,JDK 16 最终完成了 JEP 394 的定稿,针对 instanceof 智能转换变量类型,不需要再来一次额外的强转,语法:x instanceof String s

  17. 引入虚拟线程

    Java 21 中,引入了一种轻量级的线程实现方式-虚拟线程(Virtual Threads),能够大幅提高 Java 的并发能力,被很多人称作是史诗级的更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96462.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96462.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/96462.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何高效应对网站反爬虫策略?

现在大型网站的反爬策略越来越高明了&#xff0c;不仅是对IP访问频率、User-Agent请求头进行异常识别&#xff0c;还会分析IP地址、浏览器指纹、JS动态加载、API逆向、行为模式等方式各种设卡&#xff0c;动不动跳出五花八门的验证码&#xff0c;非常难搞。 怎么应对反爬是个系…

c++ shared_ptr理解

不是一个智能指针对于一个计数器吗&#xff1f;怎么变成共有资源的计数器了&#xff1f;你的意思是多个对象共用一个计数器&#xff1f;你问到了 std::shared_ptr 最核心、最精妙的设计机制&#xff01;你的问题非常深刻&#xff1a;“不是一个智能指针对应一个计数器吗&#x…

002 Rust环境搭建

Rust环境搭建 现在很多集成开发环境(IDE)基本上都支持Rust开发。官方公布的支持工具&#xff1a;https://www.rust-lang.org/zh-CN/tools 这里以Windows 10 64位系统 Visual Studio Code为例来搭建Rust开发环境。 Rust安装 Rust 的编译工具依赖 C 语言的编译工具&#xff0…

【Unity进阶】Unity发布PC端,隐藏并自定义默认标题栏

开发环境&#xff1a; Unity2019.3.16f1c1 - 个人版 Visual Studio Community 2019 Windows10 专业版 x64嘿&#xff0c;各位朋友们&#xff01;当咱们欢欢喜喜地把项目打包成PC平台的exe窗口程序&#xff0c;准备在电脑上一展游戏风采时&#xff0c;却发现冒出来个Windows风格…

国产延时芯片EH3B05上电延时3秒开关机芯片方案超低功耗

EH3B05-4941-24A1延时开关芯片是一款专为低功耗电子产品设计的高效时序控制器件&#xff0c;其核心功能在于提供精确的多通道延时信号输出。该芯片采用SOT23-6超小封装&#xff0c;体积仅为2.9mm2.8mm1.3mm&#xff0c;特别适合空间受限的便携式设备。其工作电压范围覆盖2.0V至…

大数据与财务管理专业如何转型做金融科技?

在数字经济加速演进的今天&#xff0c;金融行业的边界正在被数据与技术重新定义。传统金融岗位正经历深刻变革&#xff0c;而"金融科技"&#xff08;FinTech&#xff09;作为技术与金融深度融合的产物&#xff0c;已成为行业转型升级的核心引擎。越来越多具备数据背景…

Windows、Linux 系统 nodejs 和 npm 版本更新及错误修复

一、推荐使用 nvm 工具&#xff0c;直接通过命令行安转和切换各个版本 无论是 Windows 平台&#xff0c;还是 Linux 平台&#xff0c;都推荐使用 nvm 工具。 nvm&#xff08;Node.js Version Management&#xff09;&#xff0c;是一个 nodejs 的版本管理工具。它是专门为解决…

【系列文章】Linux中的并发与竞争[03]-自旋锁

【系列文章】Linux中的并发与竞争[03]-自旋锁 该文章为系列文章&#xff1a;Linux中的并发与竞争中的第3篇 该系列的导航页连接&#xff1a; 【系列文章】Linux中的并发与竞争-导航页 文章目录【系列文章】Linux中的并发与竞争[03]-自旋锁一、自旋锁二、实验程序的编写2.1驱动…

开始 ComfyUI 的 AI 绘图之旅-Cosmos Predict2世界模型文生图(全网首发,官网都没有更新)(十三)

文章标题一、Cosmos-Predict21.Cosmos Predict2 Text2Image 工作流1.1 下载工作流文件1.2 手动模型安装1.3 按步骤完成工作流运行本文介绍了如何在 ComfyUI 中完成 Cosmos-Predict2 文生图的工作流 一、Cosmos-Predict2 Cosmos-Predict2 是由 NVIDIA 推出的新一代物理世界基础模…

深度学习优化器进化史:从SGD到AdamW的原理与选择

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 引言&#xff1a;优化器——深度学习的引擎 在深度学习…

工商业屋顶分布式光伏监控系统助力园区企业错峰有序用电

一、行业痛点与需求分析分布式光伏发电作为清洁能源的重要形式&#xff0c;近年来在工商业屋顶、户用场景中快速普及。然而&#xff0c;其“小而散”的特性导致电网适应性、运维效率、安全管控等方面面临显著挑战&#xff1a;1.电网适应性难题&#xff1a;高渗透率场景下&#…

华为初级认证培训需要吗?HCIA考试考什么内容?自学还是报班?

大家好&#xff0c;这里是G-LAB IT实验室。 在信息技术发展日新月异的今天&#xff0c;华为的ICT认证逐渐成为了行业内重要的技术标杆。而HCIA&#xff08;Huawei Certified ICT Associate&#xff09;作为华为初级认证&#xff0c;对于ICT技术从业者来说&#xff0c;既是职业发…

元宇宙与旅游产业:沉浸式体验重构旅行全流程

1 元宇宙重构旅游核心场景1.1 目的地体验&#xff1a;从 “实地观光” 到 “虚实融合深度探索”传统旅游目的地体验受限于时间、空间与物理条件&#xff0c;元宇宙通过 “数字孪生 超现实创作”&#xff0c;打造 “超越实地” 的沉浸式目的地体验。在文化遗产体验中&#xff0…

sqlite3移植和使用(移植到arm上)

s3c2440 方法一&#xff1a; 在代码中编写插入命令 1.复制源代码并解压 源代码链接&#xff1a;SQLite Download Page 2.生成动态库 3.将动态库复制到根目录下的/usr/lib/下 4.编写一个操作文件sq_insert.c 5.编译sq_insert.c 6.将生成的运行文件 复制到根目录下 7.运行./s…

抗量子密码学算法

抗量子密码学算法的核心目标是抵抗量子计算机&#xff08;尤其是能运行Shor算法、Grover算法的大规模量子计算机&#xff09;的攻击&#xff0c;其安全性不依赖于传统的“大整数分解”“离散对数”等易被量子算法破解的数学问题&#xff0c;而是基于量子计算机难以高效求解的新…

设计模式(C++)详解—工厂方法模式(2)

<摘要> 工厂方法模式就像一个万能玩具工厂&#xff0c;爸爸&#xff08;抽象工厂&#xff09;定义了制作玩具的标准流程&#xff0c;但让儿子们&#xff08;具体工厂&#xff09;决定具体生产哪种玩具。这种模式解决了"既要规范生产流程&#xff0c;又要灵活适应变化…

187. Java 异常 - 什么是异常?

文章目录187. Java 异常 - 什么是异常&#xff1f;&#x1f6a8; 什么是“异常”&#xff1f;✅ 定义&#xff1a;&#x1f9f1; 异常对象中包含什么&#xff1f;Java 是怎么“处理”异常的&#xff1f;&#x1f9ef; 什么是异常处理器&#xff08;Exception Handler&#xff0…

3D Tiles 工具

概述 3D Tiles 工具是一组用于转换、优化、处理和分析 3D Tiles 数据的工具和实用程序。 安装 要在本地目录中安装 3D Tiles 工具&#xff0c;请运行以下命令&#xff1a; npm install 3d-tiles-tools如果想直接使用 Git 仓库的克隆版本&#xff0c;请参阅开发者设置。 命…

【编号520】全国4500多个地震灾害点位数据(2021.2-2025.8)

今天小编整理分享的是 全国4500多个地震灾害点位数据&#xff08;2021.2-2025.8)。概况数据概况全国4500多个地震灾害点位数据&#xff08;2021.2-2025.8&#xff09;地质灾害点位数据-地震&#xff01;数据含发生时间、地点、经纬坐标、灾害规模等。数据为shp格式和excel表格…

DriftingBlues: 4靶场渗透

DriftingBlues: 4 来自 <https://www.vulnhub.com/entry/driftingblues-4,661/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.128&#xff0c;靶场IP192.168.23…