Java SE Version 16

于2021-03-16发布。

引入的新特性:

  • 适用于 instanceof 的模式匹配;
  • 记录;
  • ZGC 并发线程处理;
  • Unix-Domain 套接字通道;
  • 打包工具;
  • 对基于值的类发出警告;
  • 默认强封装 JDK 内部元素;
  • 向量 API(孵化器);
  • 外部链接器 API(孵化器);
  • 外部存储器访问 API(第 3 个孵化器);
  • 密封类(第二预览);
  • 启用 C++14 语言特性(在 JDK 源代码中)
  • 将 OpenJDK 社区的源代码存储库从 Mercurial(hg)迁移到 Git,并将它们托管在 GitHub 上以供 JDK 11 及更高版本使用,其中包括将 jcheck、webrev 和 defpath 工具等工具更新到 Git;
  • 将 JDK 移植到 Alpine Linux 和其他使用 musl 作为 x64 上主要 C 库的发行版上;
  • 将 JDK 移植到 Windows AArch64(ARM64)

Java SE Version 15

于2020-09-15发布。

引入的新特性:

  • Hidden Classes;
  • 删除 Nashorn JavaScript Engine;
  • 新的垃圾回收器ZGC正式上线;
  • ext Blocks 标准化;
  • 新的垃圾回收器Shenandoah上线;

Java SE Version 14

于2020-03-17发布。

引入的新特性:

  • 改进的switch表达式,第一次出现在Java 12和13中,在Java 14中获得了完全的支持;
  • instanceof支持模式匹配(语言特性);
  • record 特性,省去写get,equals()等方法;
  • NullPointerException(JVM特性),精确到哪一行;
  • 打包工具 (Incubator);
  • G1的NUMA内存分配优化;
  • JFR事件流;
  • 非原子性的字节缓冲区映射;
  • 友好的空指针异常;
  • 弃用Solaris和SPARC端口;
  • 移除CMS(Concurrent Mark Sweep)垃圾收集器;
  • macOS系统上的ZGC;
  • Windows系统上的ZGC;
  • 弃用ParallelScavenge + SerialOld GC组合;
  • 移除Pack200 Tools和API;
  • 文本块 (第二个预览版);
  • 外部存储器API (Incubator);

Java SE Version 13

于2019-09-17发布。

引入的新特性:

  • 增强优化了ZGC垃圾收集器, 归还未使用的堆内存给操作系统;
  • 将Java12引入的预览版Switch语法提为正式版,使得Switch的使用更加的顺滑和流畅;
  • 支持了"""字符串块功能;
  • 文本块升级;
  • 动态CDS档案;
  • 取消使用未使用的内存;
  • 重新实现旧版套接字API;
  • FileSystems.newFileSystem新方法;
  • nio新方法;
  • 核心库/ java.time;
  • 核心库/ java.util中:I18N;
  • 安全库/ java.security;
  • 删除功能;

Java SE Version 12

于2019-03-19发布。

引入的新特性:

  • 引入了一个叫Shenandoah 低停顿的实验性垃圾收集器;
  • 改进了G1垃圾收集器,以便在不活动时将Java堆内存归还给操作系统;
  • 引入了实验性的预览版Switch语句优化,可以省略break语句,合并多个case;
  • 引入了JVM的常量API, 有助于一些分析的实现;
  • JMH 基准测试;
  • 只保留一个 ARM 64位实现(aarch64);
  • 默认类数据共享归档文件;
  • G1的可中断 mixed GC;

Java SE Version 11

于2018-09-25发布。Java 11 是自 Java 8 后的首个长期支持版本,将支持到2026年!

引入的新特性:

  • 简化了启动单个源代码文件的方法,使得小白命令式编译运行Java文件变成更加简单,java Helloworld.java 即可;
  • 增加支持了一个叫Epsilon的低开销垃圾收集器,又被称为"No-Op(无操作)"回收器;
  • 增加支持了一个叫ZGC(Z Garbage Collector)的可伸缩低延迟垃圾收集器, 相比G1,停顿时间有了很大的改进,稳定在10ms以下;
  • 重写了HttpClient,提供了新的标准化HttpClient API, 以后不再需要引入apache包的HttpClient或是okhttp就能支持高性能的网络5.编程;
  • 增加了对TLS 1.3的支持;
  • 允许了飞行记录器进行商用下的使用;
  • 更好的支持了动态语言,在JVM层面增加了invokedynamic指令;
  • 支持了在lambda内部使用var声明局部变量;
  • 基于嵌套的访问控制;
  • 动态的类文件常量;
  • 改进 Aarch64 Intrinsics;
  • 移除 Java EE 和 CORBA 模块,JavaFX 也已被移除;
  • 采用 Curve25519 和 Curve448 算法实现的密钥协议;
  • Unicode 10;
  • 实现 ChaCha20 和 Poly1305 加密算法;
  • 低开销的堆分配采样方法;
  • 弃用 Nashorn JavaScript 引擎;
  • 弃用 Pack200 工具及其 API;

Java SE Version 10

于2018-03-20发布。

引入的新特性:

  • 支持了局部变量的类型推导,支持了局部变量的var声明
  • 优化改进了G1垃圾回收器,采用并行化mark-sweep-compact算法
  • 将原来用 Mercurial 管理的众多 JDK 仓库代码,合并到一个仓库中,简化开发和管理过程。
  • 统一的 GC 接口
  • 应用程序类数据 (AppCDS) 共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间。
  • ThreadLocal 握手交互。在不进入到全局 JVM 安全点 (Safepoint) 的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停。
  • 移除 JDK 中附带的 javah 工具。可以使用 javac -h 代替。
  • 使用附加的 Unicode 语言标记扩展。
  • 能将堆内存占用分配给用户指定的备用内存设备。
  • 使用 Graal 基于 Java 的编译器,可以预先把 Java 代码编译成本地代码来提升效能。
  • 在 OpenJDK 中提供一组默认的根证书颁发机构证书

Java SE Version 9

于2017-09-21发布。

引入的新特性:

  • 模块化的 JVM,使之可以在内存有限的设备上运行。JVM 可以只运行那些应用程序需要的模块和 API;
  • 支持了JShell,既类似node.js, python一样的命令行工具,对待简单的东西,可以直接命令测试;
  • 改进Javadoc, 使得Javadoc可以搜索;
  • 支持了List.of(), Set.of(), Map.of()的方式初始化不可变集合,省略了大量代码,语法糖;
  • 改进的Stream API,比如ofNullable(),dropWhile(),takeWhile()等;
  • 增强接口,支持了私有接口具体方法,补充了Java8默认和静态方法的支持;
  • 把G1垃圾收集器作为默认的垃圾收集器,并标注CMS为过时收集器;
  • 引入了响应式流Reactive Streams API, 支持了响应式编程;
  • 支持了HTTP/2客户端;

Java SE Version 8

于2014-03-14发布。从Java 8开始开发代号已经弃用了,所以从Java 8之后已经没有官方的开发代号了。

引入的新特性:

  • 支持Functional函数式接口;
  • 支持Lambda表达式;
  • 对各个类支持了很多对应的lambda增强方法;
  • 支持集合的Stream流处理;
  • 支持Optional来改进Null值的处理;
  • 支持LocalDate等时间包,以改进原有Date;
  • 增强接口,支持了接口的default方法和静态方法;
  • Type注解;
  • 优化了HashMap和ConcurrentHashMap;
  • Nashhorn JavaScript引擎;
  • 并发计数器;
  • Parallel操作;
  • 移除PermGen Error;
  • TLS SNI;

Java SE Version 7

开发代号是Dolphin(海豚),于2011-07-28发行。

引入的新特性:

  • switch语句块中允许以String作为分支条件;
  • 在创建泛型对象时应用类型推断;
  • try/catch 可以 catch 多个异常类型;
  • 支持动态语言;
  • 支持try-with-resources;
  • 引入Java NIO.2开发包;
  • 数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线;
  • 钻石型语法;
  • Boolean类型反转,空指针安全,参与位运算;
  • Objects类增加避免空指针的equals方法;
  • 对Java集合( Collections)的增强支持;
  • null值的自动处理。

Java SE Version 6

开发代号为Mustang(野马),于2006-12-11发行。

引入的新特性:

  • 支持脚本语言;
  • 引入JDBC 4.0 API;
  • 引入Java Compiler API;
  • 可插拔注解;
  • 增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;
  • 继承Web Services;
  • 做了很多优化。

J2SE Version 5.0

开发代号为Tiger(老虎),于2004-09-30发行。

引入的新特性:

  • 引入泛型;
  • 增强循环,可以使用迭代方式;
  • 自动装箱与自动拆箱;
  • 类型安全的枚举;
  • 可变参数;
  • 静态引入;
  • 元数据(注解);
  • 新的线程模型和并发库;
  • 引入Instrumentation。

J2SE Version 1.4

开发代号为Merlin(隼),于2004-02-06发行(首次在JCP下发行)。

引入的新特性:

  • XML处理;
  • Java打印服务;
  • 引入Logging API;
  • 引入Java Web Start;
  • 引入JDBC 3.0 API;
  • 引入断言;
  • 引入Preferences API;
  • 引入链式异常处理;
  • 支持IPv6;
  • 支持正则表达式;
  • 引入Image I/O slot machine API。

J2SE Version 1.3

开发代号为Kestrel(红隼),于2000-05-08发行。

引入的新特性:

  • 引入Java Sound API;
  • jar文件索引;
  • 对Java的各个方面都做了大量优化和增强。

J2SE Version 1.2

开发代号为Playground(操场),于1998-12-08发行。(为了区别于 J2EE和 J2ME)

引入的新特性:

  • 引入集合(Collection)框架;
  • 对字符串常量做内存映射;
  • 引入JIT(Just In Time)编译器;
  • 引入对打包的Java文件进行数字签名;
  • 引入控制授权访问系统资源的策略工具;
  • 引入JFC(Java Foundation Classes),包括Swing 1.0、拖放和Java 2D类库;
  • 引入Java 插件;
  • 在JDBC中引入可滚动结果集、BLOB、CLOB、批量更新和用户自定义类型;
  • 在Applet中添加声音支持。

JDK Version 1.1

于1997-02-19发行。

引入的新特性:

  • 引入JDBC(Java Database Connectivity);
  • 支持内部类;
  • 引入Java Bean;
  • 引入RMI(Remote Method Invocation);
  • 引入反射(仅用于内省)。

JDK Version 1.0

开发代号为Oak(橡树),于1996-01-23发行。

JDK Beta

开发代号WebRunner,alpha 和 beta Java 公开版本,于1995研发。