JDK各版本主要特性汇总
Java18
- 将 UTF-8 指定为标准 Java API 的默认字符集
- 提供支持静态文件的最小 Web 服务器命令行工具jwebserver
- 定义了一个全新的 SPI(service-provider interface),用于主要名称和地址的解析
- 弃用 Finalization
Java17
- Free Java License
- JDK 17 将取代 JDK 11 成为下一个长期支持版本
- Spring 6 和 Spring Boot 3需要JDK17
- 移除实验性的 AOT 和 JIT 编译器
- 恢复始终执行严格模式 (Always-Strict) 的浮点定义
Java16
- 允许在 JDK C ++源代码中使用 C ++ 14功能
- 去掉ZGC线程堆栈处理从安全点到并发阶段
- 增加 Unix 域套接字通道
- 弹性元空间能力
- 提供用于打包独立 Java 应用程序的 jpackage 工具
Java15
- EdDSA 数字签名算法
- Sealed Classes(封闭类,预览)
- Hidden Classes(隐藏类)
- 移除 Nashorn JavaScript引擎
- 改进java.net.DatagramSocket 和 java.net.MulticastSocket底层实现
Java14
- instanceof模式匹配
- Record类型,类似于Lombok 的@Data注解
- Switch 表达式-标准化
- 改进 NullPointerExceptions提示信息
- 删除 CMS 垃圾回收器
Java13
- Switch 表达式扩展(引入 yield 关键字)
- 文本块升级 """
- SocketAPI 重构
- FileSystems.newFileSystem新方法
- 增强 ZGC 释放未使用内存
Java12
- Switch 表达式扩展
- 新增NumberFormat对复杂数字的格式化
- 字符串支持transform、indent操作
- 新增方法Files.mismatch(Path, Path)
- Teeing Collector
- 支持unicode 11
Java11
- 增加一些符串处理方法
- 用于 Lambda 参数的局部变量语法
- Http Client重写,支持HTTP/1.1和HTTP/2 ,也支持 websockets
- 可运行单一Java源码文件,如:java Test.java
- ZGC:可伸缩低延迟垃圾收集器
- 支持 TLS 1.3 协议
Java10
- 局部变量类型推断
- 不可变集合的改进
- 并行全垃圾回收器 G1
- 线程本地握手
- Optional新增orElseThrow()方法
- 类数据共享
- Unicode 语言标签扩展
- 根证书
Java9
- 模块化
- 提供了List.of()、Set.of()、Map.of()和Map.ofEntries()等工厂方法
- 接口支持私有方法
- Optional 类改进
- 多版本兼容Jar包
- JShell工具
- try-with-resources的改进
- Stream API的改进
Java8
- lambada表达式
- 函数式接口
- 方法引用
- 默认方法
- Stream API 对元素流进行函数式操作
- Optional 解决NullPointerException
- Date Time API
- 重复注解 @Repeatable
- Base64
- 使用元空间Metaspace代替持久代(PermGen space)
Java7
- switch 支持String字符串类型
- try-with-resources,资源自动关闭
- 整数类型能够用二进制来表示
- 数字常量支持下划线
- 泛型实例化类型自动推断,即”<>”
- catch捕获多个异常类型,用(|)分隔开
- 全新的NIO2.0 API
- Fork/join 并行执行任务的框架
Java6
- java.awt新增Desktop类和SystemTray类
- 使用JAXB2来实现对象与XML之间的映射
- 轻量级 Http Server API
- 插入式注解处理API(lombok使用该特性来实现的)
- STAX,处理XML文档的API
- Compiler API
- 对脚本语言的支持(ruby, groovy, javascript)
Java 5
- 泛型(本质是参数化类型,解决不确定具体对象类型的问题)
- 增强的for循环(for-each)
- 自动装箱和自动拆箱(包装类型有:Integer,Double,Float,Long,Short,Character和Boolean)
- 类型安全的枚举(enum)
- 可变长度参数
- 静态引入(import static)
- 元数据(注解)
- 线程并发库(java.util.concurrent)
java1.4(2004)
- XML解析器
- Java打印服务
- Logging API(日志功能)
- Java Web Start
- JDBC 3.0 API(jdbc高级)
- 断言
- Preferences API
- 链式异常处理
- 支持IPV6
- 支持正则表达式
- 引入Imgae I/O API (图片流);
- NIO(高级流)
- XSLT转换器
java1.3 (2000)
- Timer API(时间)
- Java Sound API(声音)
- RMI通信协议
- jar文件索引
- 优化和增强
java1.2 (1998)
- J2SE/J2EE/J2ME
- EJB
- Java IDL(平台对象请求代理体系结构)
- 集合框架
- JIT(Just In Time)编译器
- 数字签名
- JFC(Java Foundation Classes), 包括Swing1.0, 拖放和Java2D类库
- Java Plug-In(运行插件)
- JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型
- Applet中添加声音支持
- 字符串常量做内存映射
- 控制授权/访问系统资源的策略工具
java1.1 (1997)
- JAR
- JDBC
- JavaBean
- RMI(远程调用)
- Inner Class(内部类)
- Reflection(反射)
java1.0 (1996 初代版本)
- Classic VM(虚拟机)
- Applet(java小应用程序)
- AWT(java图形设计)