Java 17 特性速览
【摘要】 API 新增伪随机数生成器统一接口新增 RandomGenerator 接口,把 SplittableRandom、ThreadLocalRandom、SecureRandom 收进同一套 API,还附带 LXM 系列新算法。以后换个随机数算法只改一行工厂方法,不用动业务代码。Stream 多了 toListCollectors.toList 那种啰嗦写法可以退休了,Stream 直接调 t...
API 新增
伪随机数生成器统一接口
新增 RandomGenerator 接口,把 SplittableRandom、ThreadLocalRandom、SecureRandom 收进同一套 API,还附带 LXM 系列新算法。以后换个随机数算法只改一行工厂方法,不用动业务代码。
Stream 多了 toList
Collectors.toList 那种啰嗦写法可以退休了,Stream 直接调 toList 拿到不可变列表。注意返回的是只读的,想继续改还得自己再 new 一个。
Optional 的 ifPresentOrElse 与 stream
有值走消费逻辑、没值走另一个 Runnable,一句话搞定,不用再判 isPresent。optional.stream 则能把存在的值塞进 Stream 流水线里,和 flatMap 配合很顺。
十六进制浮点格式化
Formatter 和 String.format 支持 %a,把 double 按十六进制科学计数法输出,精确又无歧义,底层调试和序列化场景特别有用。
性能与内部变动
ZGC 走向生产就绪
停顿时间压到亚毫秒级,堆从几百 MB 到 TB 级都能稳住,官方把它从实验特性挪进了正式特性。只是回收器线程会多吃一点 CPU,低延迟服务换它很划算。
G1 的垃圾回收器优化
G1 支持了并行全量 GC,巨型对象分配更快,GC 线程数默认按逻辑处理器算得更聪明。总体吞吐和停顿都比 Java 11 那代顺。
AppCDS 默认可用
类数据共享不再需要你手动 dump 那一步,启动阶段直接省掉一大截类解析和加载开销。微服务冷启动、命令行工具感受最明显。
向量 API 第二轮孵化
jdk.incubator.vector 包提供类型安全的 SIMD 操作,数组加法、点积这类运算能自动映射到 CPU 向量指令,数值计算和加解密场景有倍数级提升空间。还是孵化模块,需要 --add-modules 显式开启。
安全与清理
强封装 JDK 内部 API
sun.misc.Unsafe 之类的一律不让随便反射碰了,--illegal-access 默认从 permit 改成 deny。靠内部黑魔法活的库会直接炸,迁移时这是最大的一处痛。
移除旧垃圾回收器
CMS、Shenandoah 之外的 Experimental 回收器被清扫,RMI 激活机制、Applet API、Security Manager 也进了退役名单。Java 17 是 LTS,这波删掉的东西后面不会再回来。
Deprecated 的杀手锏
Thread.stop、Thread.suspend 正式标记删除意图,Object.finalize 也进了弃用流程,别再重写 finalize 做资源回收,try-with-resources 才是正道。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)