2026年8月JDK 28的JEP列表逐渐清晰。没有虚拟线程那种刷屏级发布但几个改动——值对象预览、Shenandoah分代模式默认开启、严格字段初始化——每一个都直指JVM深处。升级前不看清楚生产环境可能莫名其妙就炸了。一、先厘清一个时间线用户提到的“8月6日Initial RC9月15日GA”——这是JDK 27的时间线不是JDK 28。JDK 28是2027年3月发布的非LTS特性版本目前仍在积极开发中Early-Access builds已开放下载。那么问题来了JDK 27还没正式GA为什么现在就要关注JDK 28因为JDK 28的JEP列表已经基本清晰几个重量级特性正在向目标冲刺。现在不看清楚等明年3月升级时再踩坑就晚了。二、JEP 401值对象——Java十年最大的语言变动这是JDK 28最重磅的特性没有之一。值对象Value Objects是不可变、无对象标识identity的对象。它们的相等性由字段值决定而非内存地址java// 传统对象两个不同的实例不相等即使字段值一样 Point p1 new Point(1, 2); Point p2 new Point(1, 2); p1 p2; // false —— 因为 identity 不同 // 值对象字段值一样就相等 value class Point(int x, int y) { } Point p1 new Point(1, 2); Point p2 new Point(1, 2); p1 p2; // true —— 按值比较值对象的意义远不止语法糖JVM可以用更紧凑的内存布局表示值对象减少内存占用和GC压力不可变性天然适合并发场景不用再写防御性拷贝为Valhalla项目的终极目标——值类型Value Types——铺平道路代价值对象是预览语言特性生产环境需要加--enable-preview。而且这是Java语言层面近十年最大的变动之一——OpenJDK为此贡献了近20万行代码。第三方库、框架、字节码工具都可能被影响。⚠️升级前必做检查代码中是否依赖对象标识如比较、synchronized锁、System.identityHashCode()。值对象在这些场景下的行为与传统对象完全不同。三、JEP 535Shenandoah GC——分代模式默认开启继JDK 27将G1设为全局默认GC后【JEP 523】JDK 28对Shenandoah GC下了同样的决心默认启用分代Generational模式非分代模式被标记为弃用未来版本将移除。分代模式的好处年轻代和老年代分开管理多数对象死在年轻代GC开销大幅降低吞吐量和延迟的平衡更优特别是在大堆内存场景代价非分代模式下的调优参数将失效如-XX:ShenandoahGCMode相关参数如果你之前手动禁用了分代模式-XX:-UseShenandoahGCGenerational升级后这个参数不再起作用⚠️升级前必做检查JVM启动参数中是否有Shenandoah相关的非分代模式调优。如果有重新评估并移除否则可能被静默忽略。四、JEP 539严格字段初始化——JVM层的安全保障这是一个JVM预览特性针对的是语言设计者和编译器开发者普通应用开发者短期内不会直接接触。核心逻辑字段必须被显式初始化之后才能读取永远不会观察到0、null、false等默认值。java// 传统JVM行为未初始化的final字段可能被观察到默认值 // 严格初始化后编译器会阻止这种情况意义为基于JVM的其他编程语言如Kotlin、Scala提供更强的初始化完整性保证减少因字段未初始化导致的难以排查的空指针异常代价字节码生成工具、AOP框架、ORM框架可能需要适配新的初始化语义预览特性默认不启用⚠️升级前必做如果你使用CGLIB、ByteBuddy、ASM等字节码操作库在JDK 28上跑一遍回归测试。五、JEP 540简单JSON API——终于不用引第三方库了Java开发者等了二十多年的东西——标准库自带的JSON API以孵化器Incubator模块形式引入。这意味着未来可能不再需要引入Jackson、Gson、JSON-B等第三方库来处理基础JSONAPI设计会参考现有主流实现降低学习成本孵化器模块意味着API可能会变化生产环境慎用⚠️升级前必做可以在测试环境试用但生产环境暂时不建议依赖孵化器API——未来版本可能调整。六、JEP 541弃用macOS/x64移植版Apple已经停止支持x64架构全面转向Apple Silicon。JDK 28正式弃用macOS/x64移植版未来版本将移除。影响如果你还在Intel Mac上开发JDK 28仍可用但后续版本可能不再支持CI/CD流水线中如果使用macOS x64 runner需要提前规划迁移⚠️升级前必做检查开发和CI环境中的macOS x64依赖提前规划迁移到Apple Silicon或Linux。七、其他值得关注的变动JEP 542PEM编码支持——标准API处理PEM格式的密钥和证书未来可能不再依赖BouncyCastleParallelRefProcBalancingEnabled标志移除——该标志在JDK 26被弃用、JDK 27被标记为过时JDK 28正式移除ListFormat单引号转义修复——java.text.ListFormat不再受MessageFormat单引号转义语义影响Class文件版本升级到v71.0——代表Java SE 28jlink新增证书裁剪插件八、升级清单该干嘛现在2026年8月关注JEP 401值对象——代码中是否依赖对象标识是否有大量使用比较对象的逻辑检查Shenandoah GC调优参数——是否有-XX:-UseShenandoahGCGenerational移除或重新评估评估字节码工具兼容性——CGLIB、ByteBuddy、ASM在JDK 28 EA上的表现规划macOS x64迁移——如果还在用Intel Mac开发或CIJDK 28 RC发布后预计2027年初在测试环境部署JDK 28跑一遍核心应用的回归测试重点测试使用比较对象的代码值对象语义变化检查GC日志和监控确认Shenandoah分代模式的行为是否符合预期扫描代码中是否有依赖未初始化字段默认值的黑魔法生产环境JDK 28是非LTS版本Oracle只提供6个月支持。核心生产系统建议等待下一个LTS版本预计JDK 29或后续版本。JDK 28适合测试环境踩坑和为LTS版本做准备不适合直接上生产。九、总结JDK 28没有虚拟线程那种“刷屏级”发布但值对象预览是Java语言近十年最大的变动之一Shenandoah分代模式默认开启动的是GC的底层逻辑严格字段初始化动的是JVM的初始化语义。三个改动每一个都可能让依赖特定行为的老代码在生产环境莫名其妙就炸了。升级前不看清楚等明年3月GA之后再踩坑代价就大了。现在就去下载JDK 28 Early-Access在测试环境跑起来。