Java 22 & 23 新特性概览
字符串模板(预览)STR.”Hello {name}” 在编译期分解,便于 SQL/JSON 拼接的安全审查(仍要防注入)。 Unnamed variablescatch (Exception _) 忽略异常细节;增强可读性。 23 亮点模块导入预览 import module java.base;Stream gatherers;ZGC 默认分代。预览特性开关随版本变,CI 固定 JDK patch level。 课堂外的思考学习「Java 22 & 23 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/js...
Java 21(JDK 21)新特性:虚拟线程、分代 ZGC 与有序集合
虚拟线程正式Executors.newVirtualThreadPerTaskExecutor() 可上生产(评估 pinning 与本地代码)。适合网关、RPC 客户端等阻塞调用链。 分代 ZGC年轻/老年代分离,降低分配速率高的应用开销。 -XX:+UseZGC -XX:+ZGenerational Sequenced Collections首尾元素、 reversed 视图统一 List/Set/Map 接口。API 语义更一致。 升级建议21 是下一 LTS 热点,配合 Spring Boot 3.2+ 试点虚拟线程线程池。 课堂外的思考学习「Java 21(JDK 21)新特性:虚拟线程、分代 ZGC 与有序集合」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 pr...
Java 20 新特性概览
作用域值 Scoped ValuesThreadLocal 的现代替代方向,不可变、可继承,适合在虚拟线程海量场景传递上下文,避免 ThreadLocal 清理问题。 虚拟线程二次预览,API 趋于稳定。Web 框架(Tomcat、Spring)开始提供虚拟线程执行器选项。 模式匹配Record 模式、switch 模式继续预览。关注 Release Notes 的 breaking change 小节。 课堂外的思考学习「Java 20 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jstack 命令,或一组压测对比。记录环...
Java 19 新特性概览
虚拟线程(预览)Thread.ofVirtual().start(…)。阻塞 IO 密集服务可大幅减平台线程数。注意 synchronized pinning。 结构化并发(孵化)StructuredTaskScope 把子任务生命周期绑定到作用域,取消与错误传播更清晰。 Record 模式(预览)解构 Record 组件,为 switch 模式匹配铺路。预览 API 需 –enable-preview,升级 JDK 要回归测试。 课堂外的思考学习「Java 19 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jstack 命...
Java 18 新特性概览
UTF-8 默认file.encoding 与 default Charset 统一 UTF-8,减少 Windows 与 Linux 行为差异。遗留系统依赖 GBK 需显式指定。 jwebserver1jwebserver -p 8080 -d ./public 仅静态文件,开发演示够用,非生产服务器。 其他@snippet 标记(Javadoc 代码片段);Internet-Address Resolution SPI。小版本,关注工具链即可。 课堂外的思考学习「Java 18 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd...
Java 17(JDK 17)新特性:密封类、switch 模式匹配与随机数 API
密封类 sealed限制子类集合,配合 permits 与 final/non-sealed。适合领域模型表达有限变体,与 switch 模式匹配联动。 Switch 模式匹配(预览迭代)对类型模式分支,编译器检查覆盖(取决于 sealed 层次)。 随机数RandomGenerator 统一接口,L32X64MixRandom 等算法可插拔。密码学场景仍用 SecureRandom。 LTS 升级17 是当前主流 LTS 之一,Spring Boot 3 基线。评估反射、强封装与 native 依赖。 课堂外的思考学习「Java 17(JDK 17)新特性:密封类、switch 模式匹配与随机数 API」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆...
Java 16 新特性概览
Records 正式可嵌套、可实现接口,仍不可继承类。紧凑构造器可校验参数。 Stream.toList返回不可变 List,比 collect(Collectors.toList()) 更简洁;需要可变列表仍用 toCollection。 其他Vector API 孵化器;Unix domain socket Channel;从 JDK 内部迁移到 jpackage 打包工具增强。 迁移提示检查 Lombok @Value 与 Record 重叠场景,团队统一风格。 课堂外的思考学习「Java 16 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条...
Java 14 & 15 新特性概览
Records(14 预览,16 二次预览)不可变数据载体,自动生成构造器/accessor/equals/hashCode。适合 DTO,不是实体替代。 Pattern for instanceof123if (obj instanceof String s) { System.out.println(s.length());} 作用域内自动转型,减少强制转换噪音。 15 定稿文本块正式;EdDSA;ZGC 与 Shenandoah 生产可用(平台相关)。 课堂外的思考学习「Java 14 & 15 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复...
Java 12 & 13 新特性概览
Switch 表达式(预览)箭头分支 yield 值,编译器检查穷尽性(配合 enum/pattern 后续完善)。减少 break 漏写 bug。 文本块(预览)三重引号多行字符串,自动缩进处理。JSON/SQL 模板更清晰,注意转义规则在 15 定稿。 GCShenandoah 实验(12);ZGC 归还未用堆内存(13)。非 LTS 版本适合尝鲜预览语言特性,生产谨慎。 课堂外的思考学习「Java 12 & 13 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jstack 命令,或一组压测对...
Java 11 新特性概览(重要)
HTTP Clientjava.net.http 支持 HTTP/2、异步发送,替代 HttpURLConnection。配合 BodyHandlers/ofString 简洁。 String 增强lines、strip、isBlank、repeat 减少 Apache Commons 依赖。 运行变化移除 JavaEE 模块(JAXB 等需自行引入);ZGC 实验;Epsilon 无操作 GC 用于性能基准。 LTS 意义11 是 8 之后第一个 LTS,许多企业在此完成升级。评估依赖是否仍访问 removed module。 课堂外的思考学习「Java 11 新特性概览(重要)」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把...