news 2026/2/1 2:36:22

JDK新特性梳理:从JDK8到JDK21的演进

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JDK新特性梳理:从JDK8到JDK21的演进

概述

JDK8 作为业界经典版本,至今仍是企业中使用最广泛的 JDK 版本。随着 JDK 版本迭代,从 JDK9 开始,JDK 改为每半年推出新版本,每三年推出一个 。本文以 JDK21(最新 LTS 版本)为准,梳理 JDK8 之后的重要新特性,帮助开发者了解 Java 生态的发展方向。


一、语法增强

1. 文本块(Text Blocks)

  • 使用三个引号声明长文本块("""
  • 支持String.format格式化
  • 新增转义字符:\\(行连接)、\\s(单个空白字符)
Stringquery=""" SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = ' %s ' \\ ORDER BY `EMP_ID`, `LAST_NAME`; """;System.out.println(String.format(query,"合肥"));

2. Switch 表达式增强

  • 扩展case匹配类型
  • 支持yield关键字提供流程控制
  • 语法更简洁,可替代复杂if-else
inttmp=switch(name){case"李白","杜甫","白居易"->1;case"苏轼","辛弃疾"->2;default->{System.out.println("其他朝代诗人");yield3;}};

3. var 自动类型推断

  • 用于局部变量类型推断
  • 限制:不能用于属性、函数返回值、类型不明确的 Lambda 表达式
varnums=newint[]{1,2,3,4,5};// 自动推断为int[]varsum=Arrays.stream(nums).sum();// 自动推断为int

二、重要扩展功能

1. 记录类(record)

  • 用于表示不可变数据结构
  • 自动生成构造器、getter 方法、equalshashCodetoString
  • 不能通过反射修改值
publicrecordPoint(intx,inty){}Pointp=newPoint(10,20);System.out.println(p.x()+"===="+p.y());

2. 隐藏类(Hidden Classes)

  • 不能被其他类直接使用的类
  • 通过读取目标类字节码创建
  • 用于动态类生成,替代 ASM 等字节码操作技术
byte[]classInBytes=Base64.getDecoder().decode(CLASS_INFO);Class<?>proxy=MethodHandles.lookup().defineHiddenClass(classInBytes,true,MethodHandles.Lookup.ClassOption.NESTMATE).lookupClass();

3. 密封类(Sealed Classes)

  • 限制父类可以被哪些子类继承
  • 通过sealed修饰,配合permits指定可继承的类
  • 三种子类类型:final(不可再继承)、non-sealed(可继承)、sealed(可继续密封)
publicsealedabstractclassShapepermitsCircle,Rectangle,Square{publicabstractintlines();}publicfinalclassCircleextendsShape{@Overridepublicintlines(){return0;}}

4. 虚拟线程(Virtual Threads)

  • 用户态线程,以用户态多个线程对应内核态一个真实线程
  • 极大提升多线程并发能力
  • 通过Executors.newVirtualThreadPerTaskExecutor()创建
try(varexecutor=Executors.newVirtualThreadPerTaskExecutor()){IntStream.range(0,10_000).forEach(i->{executor.submit(()->{System.out.println("Virtual Task"+i+" is running");Thread.sleep(Duration.ofSeconds(1));returni;});});}

三、JDK 模块化机制

1. 什么是模块化

  • JDK9 开始引入
  • 模块化后,JDK 内部功能以module形式存在
  • 可使用java --list-modules查看系统模块

2. 模块化与类加载机制

  • 类加载器调整:PlatformClassLoader替换ExtClassLoader
  • 双亲委派机制调整:类加载请求优先委派给对应模块的类加载器

3. 自己实现一个模块

  • 在模块根目录创建module-info.java
  • 使用requires声明依赖
  • 使用exportsopens声明对外 API
  • 使用providesuses实现服务提供者接口
moduleroy.demoModule2{exportscom.roy.service;providescom.roy.service.HelloServicewithcom.roy.service.impl.MorningHello,com.roy.service.impl.EveningHello;}

四、JDK 的向量计算 API

1. 向量计算简介

  • 利用现代 CPU 的 SIMD 指令进行高效并行计算
  • SIMD:Single Instruction Multiple Data(单指令多数据)

2. 使用方式

  • 需要引入模块:requires jdk.incubator.vector;
  • 使用VectorSpecies定义向量形状
  • 使用向量操作进行高效计算
VectorSpecies<Float>species=FloatVector.SPECIES_256;varva=FloatVector.fromArray(species,newfloat[]{1,2,3,4,5,6,7,8,9},1);varvb=FloatVector.fromArray(species,newfloat[]{8,7,6,5,4,3,2,1},0);varvc=va.mul(vb);System.out.println(vc);

五、GC 垃圾回收器优化

1. GC 算法演进

  • JDK15:默认废弃偏向锁
  • JDK17:仍可手动开启偏向锁(XX:+UseBiasedLocking
  • JDK21:移除偏向锁相关参数

2. 垃圾回收器变化

  • CMS 被废弃(JDK14 彻底删除)
  • SerialOld 被废弃
  • ZGC 转正(JDK11 引入,JDK15 正式使用)
  • Shenandoah 集成(非官方,但被 Oracle 接受)

3. 当前默认 GC

  • JDK21 版本默认垃圾回收器依然是 G1

六、GraalVM

1. GraalVM 简介

  • 由 Java 语言编写,用于替代 HotSpot 的 C1/C2 编译器
  • 可将 Java 应用程序编译成机器语言,绕过 class 文件翻译过程
  • 提升应用启动速度

2. GraalVM 优势

  • 云原生架构下,提升启动速度和预热时间
  • 通过 Truffle 框架可快速实现自定义编程语言
  • 与 Spring 框架逐步兼容

总结

JDK 从 8 到 21 的演进,体现了 Java 生态在语法、性能、模块化和云原生适应性方面的持续进步。虽然 JDK8 仍是企业主流版本,但 JDK17 和 JDK21 作为 LTS 版本,已为 Spring6/SpringBoot3 等框架提供了支持。了解这些新特性,不仅能帮助开发者跟上技术发展,还能在实际项目中选择更优的解决方案,提升应用性能和可维护性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/29 4:21:32

零配置启动Fun-ASR,语音转写从此变得简单

零配置启动Fun-ASR&#xff0c;语音转写从此变得简单 你有没有过这样的经历&#xff1a;会议刚结束&#xff0c;录音文件还在手机里躺着&#xff0c;而老板已经催着要纪要&#xff1b;培训视频积压了一堆&#xff0c;却没人有时间听一遍再整理成文字&#xff1b;客服通话成百上…

作者头像 李华
网站建设 2026/1/29 4:21:31

科哥OCR镜像更新日志:新增功能和性能改进汇总

科哥OCR镜像更新日志&#xff1a;新增功能和性能改进汇总 1. 更新概览&#xff1a;这次升级带来了什么 最近一次镜像更新&#xff0c;不是简单打个补丁&#xff0c;而是对整个 OCR 文字检测工作流做了一次系统性打磨。如果你之前用过这个镜像&#xff0c;会发现现在打开 WebU…

作者头像 李华
网站建设 2026/1/29 4:21:10

对比其他TTS模型,GLM-TTS优势在哪?

对比其他TTS模型&#xff0c;GLM-TTS优势在哪&#xff1f; 在语音合成领域&#xff0c;用户早已不满足于“能读出来”&#xff0c;而是追求“像真人一样说话”——有乡音、有情绪、有呼吸感&#xff0c;甚至能在一句话里自然切换语调起伏。市面上的TTS方案五花八门&#xff1a…

作者头像 李华
网站建设 2026/1/29 4:20:55

跨境电商好帮手:多语言客服机器人一键搭建教程

跨境电商好帮手&#xff1a;多语言客服机器人一键搭建教程 1. 为什么跨境电商急需多语言客服机器人 你有没有遇到过这样的场景&#xff1a;凌晨三点&#xff0c;德国客户发来一条德语咨询&#xff1a;“Mein Bestellung Nr. 12345 ist noch nicht angekommen – was ist los?…

作者头像 李华