Java/JDK各版本主要特性汇总

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图形设计)

 

Qt6技术概览 开源时序型数据库 InfluxDB
微信公众号