boxmoe_header_banner_img

 

文章导读

Java 版本特性(更新)


avatar
wars 25 9 月, 2025 112
Java 版本 发布日期 发布间隔
JDK 1.0 1996-01-23 -
JDK 1.1 1997-02-18 13 个月
J2SE 1.2 1998-12-04 22 个月
J2SE 1.3 2000-05-08 17 个月
J2SE 1.4 2002-02-13 21 个月
J2SE 5.0(1.5) 2004-09-30 31 个月
Java SE 6(1.6) 2006-12-11 27 个月
Java SE 7(1.7) 2011-07-28 55 个月
Java SE 8(1.8) LTS 2014-03-18 32 个月
Java SE 9(1.9) 2017-09-21 42 个月
Java SE 10(1.10) 2018-03-20 6 个月
Java SE 11 LTS 2018-09-25 6 个月
Java SE 12 2019-03-19 6 个月
Java SE 13 2019-09-17 6 个月
Java SE 14 2020-03-17 6 个月
Java SE 15 2020-09-16 6 个月
Java SE 16 2021-03-16 6 个月
Java SE 17 LTS 2021-09-14 6 个月
Java SE 18 2022-03-22 6 个月
Java SE 19 2022-09-20 6 个月
Java SE 20 2023-03-21 6 个月
Java SE 21 LTS 2023-09-19 6 个月
Java SE 22 2024-03-19 6 个月
Java SE 23 2024-09-17 6 个月
Java SE 24 2025-03-18 6 个月
Java SE 25 LTS 2025-09-16 6 个月

JDK 1.0

于 1996-01-23 发布, 第一个稳定版本 1.0.2 被成为 Java 1, 包含:

  • 基础类支持: java.lang 基本类型库, java.util 实用类型库.
  • 图形支持: AWT.
  • I/O 以及 Network 库支持.
  • Java applet 小程序支持.

JDK 1.1

于 1997-02-19 发布, 包含:

  • JavaBeans 标准给出(无参构造/Get/Set).
  • 内部类 支持.
  • JDBC/SQL 支持(DriverManager, Connection, Statement, ResultSet…).
  • RMI 远程调用 和 序列化 支持.
  • JIT 支持(Only Windows).
  • i18n/Unicode 支持.

J2SE 1.2

项目代号 Playground, 于 1998-12-08 发布 从该版本开始改名 J2SE 以和 EE/ME 区分, 将 Java 平台规模扩大了三倍, 包含:

  • strictfp 关键字.
  • 新的 Swing GUI 库发布(JFrame, JButton…), AWT 支持 2D.
  • 集合库发布(Collection, A/L/List, H/T/Set, H/T/L/Map…).
  • HotSpot 发布, JIT 全平台支持, 此时默认 JVM 还是 Classic VM.
  • Java IDL(CORBA) 跨平台跨语言远程调用支持.
  • Java Plug-in.
  • Java JNDI.

J2SE 1.3

于 2020-05-08 发布, 主要包含 1.2 的优化增强以及以下新特性:

  • HotSpot JVM 全平台支持, 并变为默认 JVM, JIT 和 GC 大幅度优化.
  • Sound 支持.
  • Java JPDA 发布(-agentlib:jdwp=dt_socket), Java 调试标准化, 支持远程调试.
  • Synthetic proxy classes 支持, 可实现动态代理.

J2SE 1.4

于 2004-09-30 发布, 这是第一个经由 JSR 在开源社区流程下发布的版本, 里程碑版本之一, 起到承上启下的作用.

  • assert 断言关键字发布.
  • NIO 库发布, 基于 ByteBuffer 的 SocketChannel + Selector 轮询.
  • Logging API 库发布.
  • XML 解析库发布.
  • IPv6 SSL/TLS 支持集成.

Java SE 5

项目代号 Tiger, 于 2004-09-30 发布, 是 Java 重大变革的第一个版本, 里程碑版本之一, 同时该版本命名发生变更为 JavSE, 代表 Java 进入了下一个大版本, 包含:

  • 泛型特性发布.
  • 注解特性发布.
  • 枚举特性发布.
  • Varargs 可变参数特性发布.
  • JUC 库发布, Executor、Future、BlockingQueue、ConcurrentHashMap.
  • for-each 循环发布.
  • 基本包装类型自动装拆箱支持.
  • JMM 内存模型变更优化, volatile/final 语义落地
  • Parallel GC 正式发布(1.4.2 已开始实验), Server Mode 开始默认使用.
  • JDK 诊断工具发布如: jconsole, jstack, jmap, jhat, jinfo, jstst.
  • 诊断标准 JMX 发布.

Java SE 6

项目代号 Mustang, 于 2006-12-11 发布, 包含:

  • Pluggable Annotation Processing 插拔式注解处理器功能发布, Maven 相应的跟进了 AnnotationProcessor 依赖管理.
  • 脚本语言支持, ScriptEngine 接口标准落地, 内置基于 Mozilla Rhino 引擎的 JavaScript 脚本语言支持.
  • Web Services 支持.
  • 内置 com.sun.net.httpserver.HttpServer 轻量级 Web Server 支持.
  • JVM 优化, 包括 JIT, GC (Parallel GC 成熟), -XX:+UseCompressedOops 64 位压缩指针可用.
  • JMX 优化, 远程连接改进即插即用.
  • JDBC 4.0.

Java SE 7

项目代号 Coin, 于 2011-07-28 发布, 距 SE 6 发布间隔长达 55 个月, 是 Java 发布间隔最长的一个版本, 里程碑版本之一, 间隔长主要由于:

  • Java 6 发布后再企业市场全面落地, 期间对 Java 6 做了大量维护优化和企业支持.
  • Oracle 收购 Sun 影响.
  • Java 7 的改进较底层, 研发周期长.

特性包括:

  • Script API 动态语言支持库发布, JVM 指令层面支持 JVM 动态语言如: Groovy、Scala、JRuby、Jython、Clojure.
  • 小语法增强
    • switch 支持 String.
    • try-with-resource 自动资源管理支持, try(FileInputStream in).
    • 泛型推断改进, new ArrayList<>().
    • 泛型+Varargs 冲突改进, @SafeVarargs.
    • 二进制字面量表示支持, (byte)0b00100001.
    • 数字字面量支持下划线分隔表示, long num = 1_000L.
    • 异常处理增强, catch 多异常 | 表示支持, throws 多异常类型推断优化.
  • JUC 扩展
    • 任务并发拆合: ForkJoinPool/Task, 类似 MapReduce.
    • 并发队列增加: Linked/TransferQueue, ConcurrentLinkedDeque.
    • 多阶段县城同步: Phaser.
    • Atomic 原子类型增加: AtomicLongArray/IntegerArray/ReferenceArray, AtomicReferenceFieldUpdater.
  • NIO.2
    • 本地 IO 增强如: FileSystem, Path/Files, WatchService
    • 异步 IO 改进如: AsynchronousFileChannel/SocketChannel, CompletionHandler.
  • JVM/GC 改进
    • Server Mode 默认 Serial GC 变为 Parallel GC.
    • G1 GC 发布.
    • 64 位压缩指针默认开启, 堆大于 32GB 会自动关闭.
  • 排序算法新增 TimSort, Arrays.sort 对 Object 数组排序实现替换了 MergeSort 并将其改名 LegacyMergeSort. 但基本类型数组仍然使用 DualPivotQuickSort.

Java SE 8

项目代号 Lambda, 里程碑版本, 也是 Oracle 发布的第一个 LTS 版本, 该版本也是里程碑版本之一, 给 Java 加了点函数式味精.

  • Lambda 表达式支持, 函数式接口匿名实现语法糖, 类似限制版闭包.
  • Stream 数据流式化特性发布, 函数式, 支持延迟求值, 和基于 ForkJoinPool 的并行执行.
  • Optional 包装容器发布, 只建议用在方法返回值, 或与 Stream 结合使用(很多新手滥用).
  • DateTime API 发布.
  • 接口默认方法特性发布.
  • JavaScript 引擎由 Rhino 替换为 Nashorn, 直接将 JS 编译为 JVM 字节码, 性能大幅优化.
  • JNI 库发布, 支持 Native 库调用.
  • JVM 内存永久代移除, Metaspace 代替.
  • JUC 增强:
    • CompletableFuture: 增强版链式 Future, 支持回调和异常处理, 可手动完成.
    • StampedLock: 增强版 ReadWriteLock, 高并发性能但不可重入.
    • LongAdder/DoubleAdder, LongAccumulator/DoubleAccumulator: 高并发和自定义 Atomic 实现.
    • ConcurrentHashMap 改进, 底层实现 Segment→CAS+Synchronized, 新增函数式 API.

Java SE 9

项目代号 Jigsaw, 里程碑版本之一, 该版本之后 Java 的大版本发布变革缩短为半年一次.

  • Jigsaw 模块化系统发布, 相关 JSR/JEP 明确表示不追求 OSGI 的动态(如模块热插拔), 只有两个目的:
    • 1-JDK 项目自身的工程治理.
    • 2-强封装明确 API 边界隐藏内部实现.
  • String 内存占用优化, 内部存储由 char[]→byte[], 纯 Latin-1 字符时仅用 1 byte 存储字符.
  • Reactive Streams 支持(java.util.concurrent.Flow), 异步和背压处理.
  • 引入实验性 AOT, 新增 jaotc 工具, 为指定平台预编译部分本地库, 简化加速启动.
  • Jlink 定制化 JRE 工具发布, 按需裁剪模块.
  • JShell 交互式工具发布.
  • 集合快速创建工厂方法新增, 如 List.of, Map.of, Set.of.
  • JVM 默认 GC 从 Parallel GC 变更为 G1 GC.
  • Process 库增强, 提供更多信息和控制功能.
  • Unsafe 部分功能代替方案 VarHandle 发布.
  • 小语法改进
    • 接口新增私有方法特性, 仅能在接口内使用, 而不暴露给实现类.
    • 彻底移除禁止 _ 标识符(变量名).
    • try-with-resource 自动资源管理声明优化, 直接使用已有资源.
    • 泛型推导 <> 优化, 支持匿名类.

Java SE 10

从 Java SE 10 开始, 大版本发布间隔变为 6 个月一次, 但是非 LTS 的大版本特性可以称为预览特性, 仅供尝鲜使用, 接下来只会描述 LTS 大版本之间更新的内容.

  • 局部变量类型推断(var)
  • 内存和 GC 改进

Java SE 11

TODO

压缩指针优化, 支持 64G-128G 大堆

ZGC

JavaScript 引擎移除

字符串增强

HttpClient 标准

ZGC(11), Shenandoah(12), Valhalla(14), Panama(15), Loom(19)

Java SE 17

TODO

record

Java SE 21

TODO

Java SE 25

语法改进:

  • JEP 507:
    • instanceof/switch 可以使用 when 限制匹配条件 obj instanceof int i when i > 0.
    • instanceof/switch 支持安全类型转换 if (obj instanceof int i) {, 不需要手动转换了.
    • 基础类型支持 instanceof, switch 语句.
    • instanceof 支持自动解构 record.
  • JEP 511: import module 模块导入.
  • JEP 512:
    • 紧凑源文件: 可以不需要声明 class A{} 直接写内部实现.
    • Main 方法声明简化: void main() { System.out.print(""); }
    • 控制台交互 Print(ln) 简化: IO.print("Hello, World!");
    • java.base 包默认导入不需要显示编写.
  • JEP 513: 构造方法支持 super()/this() 前编写语句.

库更新改进:

  • JEP 505: StructuredTaskScope 结构化并发改进.
  • JEP 506: ScopedValue 作用域值, 在 作用域/线程/子线程 共享, 类似 ThreadLocal.
  • JEP 502: StableValue 稳定值, 可延迟初始化的常量.
  • JEP 508: Vector 向量 API.

性能改进:

  • JEP 519: 64-bit 架构对象头大小由 96/128位 → 64位.
  • JEP 514: AOT 命令行缓存生成和使用简化.
  • JEP 515: 热点方法分析持久化, 二次运行预编译预热优化功能发布, 类似 Azul ReadyNow.
  • JEP 521: Shenandoah .

监控相关:

Security 库:

其他:

  • Graal JIT 内置实验性编译器移除.
  • 不再支持 32-bit x86.


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码