JDK各版本特性总结 Evergreen 2025年10月27日 java 预计阅读 56 分钟 ## Java 8 新特性  - [JEP 126](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+126&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTI2IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.PXdtaUgMOMvyEJSr1DJkt085Tm2yLUspVZyP7GUsipY&zhida_source=entity):Lambda 表达式:[Java 8 新特性—Lambda 表达式](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1747461365) - JEP 126:函数式接口:[Java 8 新特性—函数式接口](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1841959591) - JEP 179:方法引用:[Java 8 新特性—方法引用和构造器引用](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1019158498) - [JEP 150](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+150&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTUwIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.aOzh3J3CQqNXv5RgB-0usLRvGsGUWYq0Nm4ZiTuxqAU&zhida_source=entity):接口的默认方法:[Java 8 新特性—接口默认方法和静态方法](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/9298099860) - [JEP 107](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+107&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTA3IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.J1WcWbWTLBxVYKLPhm1-BHHi98qpecUPuCmDFDRGFBI&zhida_source=entity):Stream API:[Java 8 新特性—Stream API 对元素流进行函数式操作](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/6972779809) - Optional 类:[Java 8 新特性— 利用 Optional 解决NullPointerException](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1810194665) - [JEP 170](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+170&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTcwIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.818BNtYAZukf70C_6ek3f4VJ_cxkhQt73IgpqpUV4Q8&zhida_source=entity):新的日期时间 API:[Java 8 新特性—日期时间 API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1658730277) && [Java 8 新特性—日期时间格式化](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1765935055) - [JEP 120](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+120&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTIwIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.0fZCIFsHT1X9XQYBeKUCkIu1K0nWouvWT8c7vYTR2z8&zhida_source=entity):重复注解:[Java 8 新特性—重复注解@Repeatable](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/8453320489) - Base64 编码解码:[Java 8 新特性—全新的、标准的 Base64 API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1066055319) - [JEP 104](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+104&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTA0IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.SB8nyclFYxD3pzp-Y3-MfZ6m-12M8pmH5ccvT8z5bsA&zhida_source=entity):类型注解:[Java 8 新特性—类型注解](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/2019475189) - [JEP 101](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+101&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMTAxIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.IUK5NmLFypdAVgHsk4rZO353siXjCU54nfSqF3Yd9uc&zhida_source=entity):类型推断优化:[Java 8 新特性—类型推断优化](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/6176475946) - JEP 174:Nashorn JavaScript 引擎 - JEP 122:移除Permgen ## Java 9 新特性  - [JEP 261](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+261&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMjYxIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.Hst7zCEDNG72wKWkJ-2DBPWgUkP-QY5qB6v6qoT9hyw&zhida_source=entity): 模块系统:[Java 9 新特性—模块化](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/2044128092) - JEP 269: 集合工厂方法:[Java 9 新特性—新增只读集合和工厂方法](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/6358413511) - [JEP 222](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+222&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMjIyIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.T1LezRsx4zPZFiC2eQ6wq3QBwO32AcB32TXa_OUtc_k&zhida_source=entity):Jshell:[Java 9 新特性—REPL 工具:JSheel 命令](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/2132633297) - [JEP 213](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+213&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMjEzIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.Wyji99BSja0nFOVwZP3De9b2UGc4NNQxyHjpW4cx6gk&zhida_source=entity):接口支持私有方法:[Java 9 新特性—接口支持私有方法](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/4535468349) - Stream API 增强:[Java 9 新特性—Stream API的增强](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/2547807010) - Optional 的增强:J[ava 9 新特性—Optional 的增强](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1624717282) - 改进 try-with-resources:[Java 9 新特性—try-with-resources的升级](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1487108972) - JEP 102:Process API - JEP 264:平台日志 API 和 服务 - JEP 266: 反应式流(Reactive Streams) - JEP 224: HTML5 Javadoc - JEP 238: 多版本兼容 JAR 文件 - JEP 277:改进的弃用注解 @Deprecated - JEP 213:改进钻石操作符(Diamond Operator) - 增强 CompletableFuture:[Java 9 新特性—改进CompletableFuture](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1843207164) ## Java 10 新特性  - JEP 286:局部变量类型推断:[Java 10 新特性—局部变量类型推断](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1075067951) - JEP 304:统一的垃圾回收接口 - JEP 307:并行全垃圾回收器 G1 - JEP 310:应用程序类数据共享 - JEP 312:线程-局部变量管控 - JEP 313:移除 Native-Header 自动生成工具 - JEP 314:额外的 Unicode 语言标签扩展 - JEP 316:备用存储装置上的堆分配 - JEP 317:基于 Java 的 实验性 JIT 编译器 - JEP 319:根证书认证 - JEP 322:基于时间的版本发布模式 - 新增 API ## Java 11 新特性  - JEP 181: 基于嵌套的访问控制 - 新增 String API:[Java 11 新特性—新增 String API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/9457186945) - JEP 321:全新的 HTTP 客户端 API:[Java 11 新特性—全新的 HTTP 客户端 API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1131244380) - JEP 323:局部变量类型推断的升级:[Java 11 新特性—局部变量类型推断的增强](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1501251408) - JEP 318:Epsilon—低开销垃圾回收器 - [ZGC](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=ZGC&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJaR0MiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyMzc4OTM1MzQsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.qccMbYsVyTEbKMqskVYpWYppFZ1WqJSZzYyma3jVUBk&zhida_source=entity):可伸缩低延迟垃圾收集器 - JEP 335:废弃 Nashorn JavaScript 引擎 - 增加 Files API:[Java 11 新特性—新增 Files API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/8589000958) - Optional API 增强:[Java 11 新特性—Optional API 的增强](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1414447929) - JEP 328:飞行记录器(Flight Recorder) - JEP 330:运行单文件源码程序 - JEP 320:删除 Java EE 和 corba 模块 ## Java 12 新特性  - JEP 189:Shenandoah 垃圾收集器(预览特性) - JEP 325:Switch 表达式(预览特性):[Java 12 新特性—Switch 表达式](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/5782529848) - JEP 334:JVM 常量 API - JEP 230:微基准测试套件(JMH)的支持 - 新增 String API:[Java 12 新特性—新增 String API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/6401260394) - 新增 Files API:[Java 12 新特性—新增 Files API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/2000691792) - 新增 NumberFormat API:[Java 12 新特性—新增 NumberFormat API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1940664105) - 新增 Collectors API:[Java 12 新特性—新增 Collectors API](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/2901979956) - JEP 340:移除多余ARM64实现 - JEP 341:默认CDS归档 - JEP 344:G1的可中断 mixed GC ## Java 13 新特性  - [JEP 354](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+354&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzU0IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.TKRl741fZX5UYRGJEcs36Xrg8jPA8XQNgKTrxYMLZEE&zhida_source=entity):增强 Switch 表达式(第二次预览):[Java 13 新特性—增强 Switch 表达式](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/9120322209) - [JEP 355](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+355&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzU1IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.ry_mv3LJhv-9ofKmhGN7NroStyNw8lyUh8qmhAxCpDk&zhida_source=entity):文本块(预览特性):[Java 13 新特性—文本块](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/7430445828) - [JEP 353](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+353&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzUzIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ._h-Rzf1mtzhA5ZFSciDEzpwO6YKnFhAyFeHTUfX43oE&zhida_source=entity):重构 Socket API - JEP 350:动态 CDS - JEP 351:增强 ZGC 释放未使用内存 ## Java 14 新特性  - [JEP 361](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+361&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzYxIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.kG8WJKGx0OcsSOAkknnhGNSjSG53MfFd2HmY_pJmMhw&zhida_source=entity): 表达式(正式特性) - [JEP 368](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+368&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzY4IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.1PwkAcf68lsITMBj9emnfn0GaXQ4tWWsH7q8X4vNTYo&zhida_source=entity):增强文本块(第二次预览) - [JEP 359](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+359&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzU5IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.N9ccPm0h6M3rVnA4zr39lI6DSYRpW-TU9gViROCvZj0&zhida_source=entity):Records (预览) :[Java 14 新特性—新特性 Record 类型](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/8932587293) - JEP 305:模式匹配的 instanceof(预览):[Java 14 新特性—模式匹配的 instanceof](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/3436282193) - JEP 358:改进 NullPointerExceptions 提示信息:[Java 14 新特性—改进 NullPointerExceptions 提示信息](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1662953266) - [JEP 343](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=JEP+343&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJKRVAgMzQzIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjM3ODkzNTM0LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.sukeD0Zq42Y4WRPUgA9DnJ0CBFAEZMov8Kz2ITDaUa4&zhida_source=entity):打包工具(孵化) - JEP 345:[NUMA-Aware 内存分配](https://zhida.zhihu.com/search?content_id=237893534&content_type=Article&match_order=1&q=NUMA-Aware+内存分配&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NjE3NDM0OTUsInEiOiJOVU1BLUF3YXJlIOWGheWtmOWIhumFjSIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjIzNzg5MzUzNCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.dv5Dr5dL_Fp_Bh9IYhP3E9n0sySaE9BC0l9eRjZwYHw&zhida_source=entity) - JEP 349:JFR Event Streaming - JEP 364:macOS 上的 ZGC(实验性) - JEP 365:Windows 上的 ZGC(实验性) - JEP 366:弃用 ParallelScavenge + SerialOld GC 组合 - JEP 367:删除 Pack200 工具和 API - JEP 363: 删除 CMS 垃圾收集器 - JEP 370:外部存储器访问 API(孵化器版) ## Java 15 新特性  - JEP 339:Edwards-Curve 数字签名算法 (EdDSA) - JEP 360:密封的类和接口(预览):[Java 15 新特性—密封的类与接口](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1777232038) - JEP 371:隐藏类 Hidden Classes:[Java 15 新特性—隐藏类](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1690418335) - JEP 372:移除 Nashorn JavaScript 引擎 - JEP 373:重新实现 DatagramSocket API - JEP 374:禁用偏向锁定 - JEP 375:模式匹配的 instanceof(第二次预览) - JEP 377:ZGC—可伸缩低延迟垃圾收集器(正式特性) - JEP 378:文本块(正式特性) - JEP 379:Shenandoah—低暂停时间垃圾收集器(正式特性) - JEP 381:移除 Solaris 和 SPARC 支持 - JEP 383:外部存储器访问 API (二次孵化器版) - JEP 384: Record (第二次预览) - JEP 385: 废除 RMI 激活 ## Java 16 新特性  - JEP 338:向量 API(孵化器) - JEP 347:启用 C++14 语言特性 - JEP 357:将JDK的源代码库从Mercurial迁移到Git - JEP 369:将JDK的源代码库托管到GitHub - JEP 376:ZGC 并发线程处理 - JEP 380:Unix-Domain 套接字通道 - JEP 386:AlpineLinux 移植 - JEP 387:弹性元空间 - JEP 388:Windows/AArch64 移植 - JEP 389:外部函数与内存 API(孵化器) - JEP 390:对基于值的类发出警告 - JEP 392:打包工具(正式版) - JEP 393:外部存储器访问 API(第三次孵化) - JEP 394:instanceof 模式匹配(正式特性) - JEP 395:Records (正式特性) - JEP 396:默认强封装 JDK 内部元素 - JEP 397:密封类(第二预览) ## Java 17 新特性  - JEP 356:增强型伪随机数生成器:[Java 17 新特性—增强型伪随机数生成器](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1777241237) - JEP 382:新的 macOS 渲染管线 - JEP 391:macOS/AArch64 端口 - JEP 398:移除 Applet API - JEP 406:模式匹配的 Swith 表达式(预览):[Java 17 新特性—模式匹配的 Swith 表达式](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/9479813794) - JEP 407:删除 RMI 激活 - JEP 409:密封类(正式特性) - JEP 410:移除实验性的 AOT 和 JIT 编译 - JEP 411:废弃安全管理器 - JEP 412:外部函数与内存 API(第二次孵化) - JEP 414:向量 API(第二次孵化) ## Java 18 新特性  - JEP 400:默认UTF-8编码 - JEP 408:简易Web服务器 - JEP 413:支持在 Java API 文档中加入代码片段 - JEP 416:用方法句柄重新实现核心反射 - JEP 417:向量 API(第三孵化器) - JEP 418:互联网地址解析 SPI - JEP 419:外部函数和内存 API(第三孵化器) - JEP 420: 模式匹配 Switch 表达式(预览) - JEP 421:弃用 Finalization 功能 ## Java 19 新特性  - JEP 405:Record模式(预览):[Java 19 新特性—Record模式](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/9674439600) - JEP 422:JDK移植到Linux/RISC-V - JEP 424:外部函数和内存API(预览) - JEP 425:虚拟线程(预览):[Java 19 新特性—虚拟线程](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1865448759) - JEP 426:向量API(第四次孵化) - JEP 427:模式匹配的 Switch(第三次预览) - JEP 428:结构化并发(孵化功能) ## Java 20 新特性  - JEP 429:作用域值(第一次孵化) - JEP 432:Record 模式(第二次预览) - JEP 433:模式匹配的 Switch 表达式(第四次预览) - JEP 434:外部函数与内存 API(第二次预览) - JEP 436:虚拟线程(第二次预览) - JEP 437:结构化并发(第二次孵化) - JEP 438:向量 API(第五次孵化) ## Java 21 新特性  - JEP 430:字符串模板 (预览):[Java 21 新特性—字符串模板](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1880587197) - JEP 431:有序集合:[Java 21 新特性—有序集合](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1895017259) - JEP 439:分代 ZGC - JEP 440:Record 模式 - JEP 441:switch 模式匹配 - JEP 442:外部函数和内存 API (第三次预览) - JEP 443:未命名模式和变量 (预览):[Java 21 新特性—未命名模式和变量](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/1961861176) - JEP 444:虚拟线程(正式特性) - JEP 445:未命名类和 main 方法 (预览):[Java 21 新特性—未命名类和 main 方法](https://link.zhihu.com/?target=https%3A//www.skjava.com/series/article/6780334511) - JEP 446:作用域值 (预览) - JEP 448:向量 API(第六次孵化) - JEP 449:弃用 Windows 32 位 x86 端口 - JEP 451:准备禁止动态加载代理 - JEP 452:密钥封装机制 API 安全库 - JEP 453:结构化并发(预览) ### Java 8(★ 最核心,必须掌握) 1. **Lambda 表达式** ```java List list = Arrays.asList("a", "b", "c"); list.forEach(s -> System.out.println(s)); ``` 2. **函数式接口 + 方法引用** ```java Function f = String::length; // 方法引用 System.out.println(f.apply("hello")); // 5 ``` 3. **Stream API** ```java long count = list.stream() .filter(s -> s.startsWith("a")) .count(); ``` 4. **Optional 防 NPE** ```java Optional.ofNullable(user) .map(User::getAddress) .map(Address::getCity) .orElse("UNKNOWN"); ``` 5. **接口默认方法** ```java interface Log { default void debug(String s){ System.out.println("DEBUG: "+s); } } ``` 6. **新的日期时间 API** ```java LocalDate today = LocalDate.now(); DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy/MM/dd"); System.out.println(today.format(f)); ``` --- ### Java 9(★ 集合工厂、Stream、try-with-resources 升级最实用) 1. **只读集合工厂方法** ```java List colors = List.of("red", "green", "blue"); ``` 2. **Stream API 增强** ```java Stream.ofNullable(null) // 不会抛 NPE .forEach(System.out::println); ``` 3. **接口私有方法** ```java interface A { default void foo(){ bar(); } private void bar(){ System.out.println("helper"); } } ``` 4. **改进 try-with-resources** ```java // 不必再声明额外变量 try (reader) { // reader 已在外面定义 ... } ``` --- ### Java 10(★ var 局部类型推断,代码更简洁) 1. **var 类型推断** ```java var map = Map.of("a", 1, "b", 2); // 编译器推断为 Map for (var entry : map.entrySet()) { ... } ``` --- ### Java 11(★ HTTP Client、String API、单文件跑程序) 1. **全新 HTTP Client** ```java HttpClient client = HttpClient.newHttpClient(); HttpRequest req = HttpRequest.newBuilder(URI.create("https://openjdk.org")).build(); HttpResponse resp = client.send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(resp.statusCode()); ``` 2. **String 新增 API** ```java " \n\t hello \t".strip(); // "hello" "Java11".repeat(3); // "Java11Java11Java11" ``` 3. **直接运行单文件源码** ```bash $ java HelloWorld.java // 无需 javac ``` --- ### Java 12~13(★ Switch 表达式、文本块,代码可读性猛增) 1. **Switch 表达式(12 预览→14 正式)** ```java int num = switch (day) { case "MON", "TUE", "WED" -> 1; case "THU" -> 2; default -> 0; }; ``` 2. **文本块 Text Blocks(13 预览→15 正式)** ```java String json = """ { "name": "Bob", "age" : 25 } """; ``` --- ### Java 14~16(★ Record、instanceof 模式匹配、密封类) 1. **Record 不可变数据载体(14 预览→16 正式)** ```java record Point(int x, int y) {} Point p = new Point(3,4); System.out.println(p.x()); // 3 ``` 2. **instanceof 模式匹配** ```java if (obj instanceof String s && s.length() > 5) { System.out.println(s.toUpperCase()); } ``` 3. **密封类(15 预览→17 正式)** ```java sealed interface Shape permits Circle, Square {} final class Circle implements Shape {} final class Square implements Shape {} ``` --- ### Java 17(LTS,★ 生产主流版本) 1. **上面 14~16 的全部正式特性** (Record、密封类、模式匹配 instanceof 已稳定) 2. **增强的伪随机数生成器** ```java RandomGeneratorFactory f = RandomGeneratorFactory.of("L128X256MixRandom"); RandomGenerator rng = f.create(); System.out.println(rng.nextInt(100)); ``` --- ### Java 19~21(★ 虚拟线程、模式匹配集大成) 1. **虚拟线程(19 预览→21 正式)** ```java try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 10_000) .forEach(i -> executor.submit(() -> doSomething(i))); } ``` 2. **Switch 模式匹配(21 正式)** ```java static String formatter(Object o) { return switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case String s -> String.format("String %s", s); default -> o.toString(); }; } ``` 3. **Record 模式(21 正式)** ```java record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point(int x, int y)) { System.out.println(x + y); } } ``` 4. **字符串模板(21 预览)** ```java String name = "Joan"; String info = STR."My name is \{name}"; ``` --- ### 一张速查表(按优先级) | 必会等级 | 特性 | | -------- | ---------------------------------------------------------- | | ★★★ | Lambda + Stream、Optional、接口默认方法、新的日期 API | | ★★ | var 类型推断、集合工厂、Switch 表达式、文本块、HTTP Client | | ★ | Record、密封类、instanceof 模式匹配、虚拟线程、字符串模板 |
评论区