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.
- instanceof/switch 可以使用 when 限制匹配条件
- 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 .
监控相关:
- JEP 509: JFR CPU-Time Profiling (Experimental) and JDK Flight Recorder.
- JEP 518: JFR Cooperative Sampling
- JEP 520: JFR Method Timing & Tracing
Security 库:
- JEP 470: PEM Encodings of Cryptographic Objects (Preview) and The DEREncodable Interface
- JEP 510: Key Derivation Function API
其他:
- Graal JIT 内置实验性编译器移除.
- 不再支持 32-bit x86.
评论(0)
暂无评论