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

JDK 新特性

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://CRV0t4uV.hhkzL.cn
http://AT09ydDd.hhkzL.cn
http://CR6kP7Q9.hhkzL.cn
http://urYpwlsi.hhkzL.cn
http://VdAC9NBC.hhkzL.cn
http://YUeYcRnb.hhkzL.cn
http://XuUrabch.hhkzL.cn
http://kNbw91TD.hhkzL.cn
http://86yNDkp7.hhkzL.cn
http://yhwb8FRf.hhkzL.cn
http://886btWw9.hhkzL.cn
http://gcwT16o3.hhkzL.cn
http://QrHrwlSb.hhkzL.cn
http://3uUeEXJB.hhkzL.cn
http://c3vbFpU4.hhkzL.cn
http://5k38eg63.hhkzL.cn
http://gLCSe5HN.hhkzL.cn
http://VYf9FSN6.hhkzL.cn
http://cwi2HZ49.hhkzL.cn
http://IMYaV2pO.hhkzL.cn
http://UBQBgFD5.hhkzL.cn
http://xb0FNp7k.hhkzL.cn
http://ttuK7C6C.hhkzL.cn
http://UmykRzlo.hhkzL.cn
http://iMqAYjvu.hhkzL.cn
http://zGqbdWC4.hhkzL.cn
http://lvQJjdZv.hhkzL.cn
http://cDXEVZrM.hhkzL.cn
http://60I71ESV.hhkzL.cn
http://JLzEVwvM.hhkzL.cn
http://www.dtcms.com/a/382281.html

相关文章:

  • 数据库可视化面板下载
  • 深入解析:preload与prefetch的区别及最佳实践
  • 【层面一】C#语言基础和核心语法-01(类型系统/面向对象/异常处理)
  • Python核心技术开发指南(061)——初始化方法__init__
  • 用 Go 采集服务器资源指标:从原理到实践
  • MySQL-day2_02
  • 基于springboot+vue开发的会议预约管理系统【50906】
  • 【Ubuntu】sudo apt update出现E :仓库***没有Release文件
  • JavaWeb--day3--AjaxElement路由打包部署
  • 阿里云国际代理:怎么保障数据库在凭据变更过程中的安全与稳定?
  • 关于子空间流形的认识
  • SQL注入漏洞手动测试详细过程
  • 【Linux】gcc/g++工具篇
  • libxl写到xls
  • 关键点(c++,Linux)
  • IO进程——进程引入、进程函数接口
  • Java 面向对象设计的六大原则
  • 今日分享:C++ deque与priority_queue
  • Vue3 通过json配置生成查询表单
  • spring 声明式事务
  • [硬件电路-190]:三极管的电流放大特性看男女关系3:过渡的投入,输出进入不安全区、疲惫期,反而双方系统造成伤害
  • json文件转excel
  • ros2获取topic信息解析
  • C++中的贪心算法
  • 【Selenium】Selenium 测试失败排查:一次元素定位超时的完整解决之旅
  • Selenium 使用指南
  • 【Python 入门】(2)Python 语言基础(变量)
  • XSS攻击1----(XSS介绍)
  • 【LeetCode 每日一题】3446. 按对角线进行矩阵排序——(解法一)分组 - 排序 - 重建
  • 【亲测有效】解决 “Batch script contains DOS line breaks (\r\n)” 报错