我的个人博客:www.moonkite.cn
大家好,我是风筝。
不管你是不是还用 Java 8,JDK23都如约而至了,就在昨天(2024年9月17日),JDK 23 正式发布了。
JDK23不是 LTS版本(长期支持版),下一个LTS版本是 JDK 25,预计2025年9月发布。
目前 JDK LTS 版本有 JDK1.8、JDK11、JDK17、JDK21。
据调查显示,2024年JDK各版本市场占有率最高的是 JDK17,占35.4%。这当然是国外的数据了,如果统计国内的话, 估计 JDK1.8 还是绝对主导的。
JDK 23 新特性
455:模式、instanceof 和 switch 中的基本类型(预览) 466:类文件 API(第二次预览) 467:Markdown 文档注释 469:向量 API(第八次孵化器) 473:流收集器(第二次预览) 471:弃用 sun.misc.Unsafe 中用于删除的内存访问方法 474:ZGC:默认的分代模式 476:模块导入声明(预览) 477:隐式声明的类和实例主方法(第三次预览) 480:结构化并发(第三次预览) 481:作用域值(第三次预览) 482:灵活的构造函数体(第二次预览)
前面几个是 JDK 23 的新特性,基本上都是预览版,有的是第二次预览、还有第三次预览的。预览就是还不能用在生产环境的,像结构化并发已经第三次预览了,没想到还没有成为正式功能,那可能就要等到 JDK25了。
正式的功能
Markdown 文档注释,就是在代码注释中支持 Markdown 格式,用处不大。
弃用 sun.misc.Unsafe 中用于删除的内存访问方法,前面的版本中也有对 Unsafe 的修订,相当于是在处理历史遗留问题,填坑的功能。
ZGC:默认采用分代模式,ZGC 从 JDK15开始成为正式功能,并在 JDK17和 JDK21中被广泛应用,但是一直都是默认的非分代模式。我们学过Java 垃圾收集的肯定都知道老年代和年轻代,但是JDK23之前的 ZGC 是不分区的,这样一来呢,在性能上就有所下降。优化垃圾收集器的性能一直是 Java 的重要工作,所以这不,为了提高性能,JDK23把分代 ZGC 作为默认配置了。
升不升级
升不升级永远是一个软件或者一个开源项目永恒的主题,在 Java 中更是有 “你发任你发,我用 java8”的老梗。
升不升级很多情况下不是我们一拍脑袋就能决定的。
公司项目, 稳定性永远排在第一位,很少有技术负责人愿意盯着这个风险进行升级,因为结果往往是费力不讨好的。
个人项目呢,升级也没那么简单,如果一个项目已经跑得好好的,为什么要升级它呢。另外,升级一个项目也要看整个生态,Java 的生态中有一大部分被掌握在 Spring 、Spring Boot 的手里,所以,很多时候能不能升级,要看 Spring等周边配套支不支持我们升级。
还可以看看风筝往期文章
古时的风筝,一个程序员,一个写作者。