[JDK 8到JDK 25]
以下是JDK 8到JDK 25主要更新的功能和特性概要:
JDK 8:
- 引入Stream API,支持函数式编程和集合的并行操作。
- 新的日期时间API(java.time包),替代旧的Date/Calendar。
- Lambda表达式简化代码。
- 默认方法允许在接口内添加方法实现。
- 新的Nashorn Javascript引擎。
- JavaFX 3D图形支持。
- Compact Profiles支持减少嵌入式设备的运行时大小。[1]
JDK 9:
- 模块系统(Project Jigsaw)引入模块化JDK。
- JShell:Java交互式REPL。
- 字符串内部表示优化,采用byte数组代替UTF-16以节省内存。
- 改进的javadoc和javac工具支持。
- 支持Unicode 8.0。
- 序列化过滤增强安全性。
- 改进的JMX支持和新JVM参数。[2]
JDK 10:
- 基于局部变量类型推断的var关键字。
- 应用类数据共享(AppCDS)。
- 并行Full GC改进。
- 垃圾收集器接口的增强。[3]
JDK 11:
- 长期支持版本(LTS)。
- 新的HTTP客户端API。
- 新的字符串方法(如repeat、isBlank等)。
- 改进的GC,包括ZGC实验性支持。
- 移除Java EE和CORBA模块。[4]
JDK 12:
- Switch表达式的预览,简化switch代码。
- JVM常量API。
- Shenandoah低暂停GC的实验性支持。
- 一些性能改进。[5]
JDK 13:
- Switch表达式第二预览,增加yield语句。
- Legacy Socket API重写,支持未来纤程(Project Loom)。
- 文本块(Text Blocks)预览,方便多行字符串编写。[6]
JDK 14:
- Switch表达式正式引入。
- Records预览,简化数据载体类的定义。
- Helpful NullPointerException,改进NPE异常信息。
- NVM垃圾收集改进。[7]
JDK 15:
- 文本块正式引入。
- 密封类(Sealed Classes)预览,限制类的继承范围。
- 隐藏类(Hidden Classes)支持动态语言实现。
- ZGC垃圾收集改进。[8]
JDK 16:
- Records正式引入。
- Pattern Matching for instanceof。
- 新的Vector API试验。
- 支持Unix域socket。
- JEP 376 删除弃用的GrowableArrayTable。[9]
JDK 17:
- LTS版本。
- 密封类正式引入。
- 新的macOS渲染器Metal。
- 强化的伪随机数发生器。
- Foreign Function & Memory API预览。[10]
JDK 18:
- 简化的Socket绑定API。
- UTF-8作为默认的字符集。
- Vector API改进。
- Simple Web Server。[11]
JDK 19:
- 预览Virtual Threads(纤程)。
- 预览Structured Concurrency。
- Foreign Function & Memory API预览。
- Vector API第四次孵化。
- Locale构造器弃用,推荐使用Locale.of()。[12]
JDK 20:
- Project Loom 虚拟线程进一步完善预览。
- Pattern Matching for switch预览。
- Record Patterns预览。[13]
JDK 21及以后版本(JDK 21-25):
- 预计会进一步完善Project Loom(虚拟线程和结构化并发)。
- 可能会引入更多对模式匹配的支持。
- Foreign Function & Memory API逐步正式化。
- 模块系统和性能优化持续改进。
- 安全性和现有API现代化调整。
[1][2][3][4][5][8][6][9][10][11][12][13]