JDK各版本特性总结

Java SE 1.0

1996-01-23 Oak(橡树)

初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢。

   此版本包括两个部分:运行环境(即Java Runtime Environment, JRE)和开发环境(Java Development Kit,JDK)。运行环境包括核心API、集成API、用户界面API、发布技术、Java虚拟机(Java Virtual Machine,JVM)五个部分;其中开发环境包括编译Java程序的编译器(javac 命令)。

Java SE 1.1

1997-02-19

该版本增加了JIT(Just In Time,即时编译)编译器,相对于传统编译器,它会将经常用到的指令保存到内存中,当下次调用的时候不需要重新编译了,此方式让JDK在效率上有了较大优势。

此外还引入新特性:

JAR - jar包

JDBC (Java Database Connectivity)- 数据库连接规范

内部类(Inner Class)

Java Beans

RMI(Remote Method Invocation)- 远程调用

反射 (Reflection)

Java SE 1.2

1998-12-08 Playground(操场)

JDK1.2是一个里程碑式的重要版本,Sun在这个版本中把Java技术体系拆分为三个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform,Micro Edition)。

在语言和API层面上,Java添加了strictfp关键字,Java类库添加了现在Java编码之中极为常用的一系列Collections集合类等。

JDK1.2 Solaris Exact VM,附带JIT解释器,提升GC性能,精准内存管理(Accurate Memory Management),数据类型敏感等特性。但其生命周期很短暂,很快被Hotspot取代。

此外还引入新特性:

集合框架

字符串常量做内存映射

JIT编译器 (Just In Time)

对打包Java文件数字签名

控制授权访问系统资源的策略工具

JFC(Java Foundation Classes) Swing 1.0, 拖放和Java2D类库

Java插件

JDBC可滚动结果集,BLOB、CLOB、批量更新和用户自定义类型

Applet中添加声音支持


Java SE 1.3

2000-05-08 Kestrel(红隼)

 该版本的改进主要体现在Java类库上(如数学运算和新的Timer API等),JNDI服务从JDK 1.3开始被作为一项平台级服务提供(以前JNDI仅仅是一项扩展服务),使用CORBA IIOP来实现RMI的通信协议等。JDK1.3 对Java的各个方面都做了大量优化和增强。

Hotspot 做为默认虚拟机发布。

引入的新特性包括:

数学运算

Timer API(时间)

Java Sound API(声音)

CORBA IIOP实现RMI的通信协议

Java 2D新特性

JAR文件索引

Java SE 1.4

2002-02-13 Merlin(隼)

此版本是JDK历史上最为成熟的版本。此时Compaq、Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。JDK1.4已经可以使用Java实现大多数的应用。

在此期间,Java语言在企业应用领域大放异彩,涌现大量基于Java语言的开源框架:Struts、WebWork、Hibernate、Spring等;大量企业应用服务器也开始涌现:WebLogic、WebSphere、JBoss等。

Classic VM退出历史舞台。

引入的新特性包括:

XML处理

Java打印服务

日志API(Logging)

Java Web Start

JDBC 3.0 API

断言机制

参数API (Preferences)

链式异常处理

支持IPV6

正则表达(Regular)

image I/O API

NIO(高级流)

Java SE 5

2004-09-30 Tiger(老虎)

万众期待的版本,同时,Sun将JDK1.5改为Java 5.0,J2EE、J2SE和J2ME也相应的改为Java SE、Java ME、Java EE。增加了泛型、增强for循环、可变数量的形参、注解(Annotations)、自动拆箱和装箱等功能;发布新的企业级平台规范,如通过注释等新特性来简化EJB的复杂性,并推出EJB3.0规范,还推出了自己的MVC框架规范:JSF。

JDK 5在Java语法易用性上做出了非常大的改进。如:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在JDK 5中加入的。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。另外,JDK 5是官方声明可以支持Windows 9x操作系统的最后一个JDK版本。

引入的新特性包括:

泛型(Generic)

For-Each循环

自动装箱与拆箱

类安全枚举 (Enum)

可变参数(Varargs)

静态导入(import static)

元数据注解(Annotation)

内省(Introspect)

内存模型(JMM)

并发包(java.util.concurrent)

Java SE 6

2006-12-11 Mustang(野马)

该版本引入了一个支持脚本引擎的新框架、UI的增强、对WebService支持的增强(JAX-WS2.0和JAXB2.0)、一系列新的安全相关的增强、JDBC4.0、Compiler API、通用的Annotations支持。且对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的实现都有相当多的改动。

提供初步的动态语言支持(通过内置Mozilla JavaScript Rhino引擎实现)、提供编译期注解处理器和微型HTTP服务器API,等等。

引入的新特性包括:

命名方式变动

脚本语言支持

编译API和微型HTTP服务器API

锁与同步

垃圾收集

类加载

JDBC 4.0(jdbc高级)

Java Compiler (Java™ 编程语言编译器的接口)

可插拔注解

Native PKI(公钥基础设)

Java GSS (通用安全服务)

Kerberos ( 一种安全认证的系统)

LDAP (LDAP )

Web Services (web服务即xml传输)

JTable的排序和过滤

嵌入式数据库 Derby

Java SE 7

2011-07-28 Dolphin(海豚)

Oracle收购Sun公司后,随即宣布大幅裁剪了JDK 7预定目标,以保证JDK 7的正式版能够于2011年7月28日准时发布。

该版本引入了二进制整数、支持字符串的switch语句、菱形语法、多异常捕捉、自动关闭资源的try语句等新特性。提供新的G1收集器(G1在发布时依然处于Experimental状态,直至2012年4月的Update 4中才正式商用)、加强对非Java语言的调用支持(JSR-292,这项特性在到JDK 11还有改动)、可并行的类加载架构等。

引入的新特性包括:

switch 语句支持 String 字符串

泛型对象类型推断 - 调用泛型类的构造方法时,可以省去泛型参数,编译器会自动判断。

catch 多个异常捕获 - 多个异常通过使用 “|”操作符分隔

支持动态语言

改进泛型类型可变参数

语法上支持集合而不一定是数组

新增获取环境信息的工具方法

boolean类型反转:空指针安全,参与位运算

两个char之间的equals方法

安全的加减乘除

Java集合(Collections)增强 - map集合支持并发请求

引入Java NIO.2开发包

数值可以加下划线用作分隔符

null值得自动处理

简化了可变参数方法的调用

提供GI收集器

加强对非Java语言的调用支持(JSR-292,升级类加载架构)

Java SE 8(LTS)

2014-03-18

该版本带来了全新的Lambda表达式,函数式接口、Lambda 表达式、集合的流式操作、注解的更新、安全性的增强、IO\NIO 的改进、完善的全球化功能等。

引入的新特性包括:

Lambda表达式

改进的类型推断

Java类型的注释

重复注释

方法参数反射

TLS 1.1和TLS 1.2默认启用

有限的doPrivileged

基于密码加密的更强算法

JSSE服务器中的SSL / TLS服务器名称指示(SNI)扩展支持

支持AEAD算法

KeyStore增强功能

SHA-224消息摘要

对NSA Suite B加密的增强支持

对于高熵随机数生成更好的支持

新PKIXRevocationChecker类

适用于Windows的64位PKCS11

Kerberos中的新rcache类型5重放缓存

协议转换和约束委派的Kerberos 5

默认情况下禁用弱加密

GSS-API / Kerberos 5机制的未绑定SASL

用于多个主机名的SASL服务

JNI桥接到Mac OS X上的本机JGSS

在SunJSSE提供程序中支持更强大的临时DH密钥

支持JSSE中的密码套件首选项自定义

全新的JavaFX

Java工具的操作增强

Unicode增强功能,包括对Unicode 6.2.0的支持

采用Unicode CLDR数据和java.locale.providers系统属性

新日历和区域设置API

引入新的Date Time API

Nashorn JavaScript引擎

并行阵列排序

标准编码和解码Base64

无符号算术支持

新的并发

Java XML技术增强功能

虚拟机操作增强

Java SE 9

2017-09-22

JDK 9带着Jigsaw最终发布了,除了Jigsaw外,JDK 9还增强了若干工具(JS Shell、JLink、JHSDB等),整顿了HotSpot各个模块各自为战的日志系统,支持HTTP 2客户端API等91个JEP。

JDK 9 提供了超过 150 项新功能特性,包括备受期待的模块化系统、可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说 JDK 9 是一个庞大的系统工程,完全做了一个整体改变。

引入的新特性包括:

平台级modularity(原名:Jigsaw) 模块化系统

Java 的 REPL 工具: jShell 命令

多版本兼容 jar 包(这个在处理向下兼容方面,非常好用)

语法改进:接口的私有方法

语法改进:UnderScore(下划线)使用的限制

底层结构:String 存储结构变更(这个很重要)

集合工厂方法:快速创建只读集合

增强的 Stream API

全新的 HTTP 客户端 API

其它特性

Java SE 10

2018-03-20

该版本的主要研发目标是内部重构,诸如统一源仓库、统一垃圾收集器接口、统一即时编译器接口(JVMCI在JDK 9已经有了,这里是引入新的Graal即时编译器)等,这些都将会是对未来Java发展大有裨益的改进,但对普通用户来说JDK 10的新特性就显得乏善可陈,毕竟它只包含了12个JEP,而且其中只有本地类型推断这一个编码端可见的改进。

Java 10 的 12 项关键新特性:

局部变量的类型推断。该特性在社区讨论了很久并做了调查,可查看 JEP 286 调查结果

将 JDK 的多个代码仓库合并到一个储存库中

垃圾收集器接口。通过引入一个干净的垃圾收集器(GC)接口,改善不同垃圾收集器的源码隔离性。

向 G1 引入并行 Full GC

应用类数据共享。为改善启动和占用空间,在现有的类数据共享(“CDS”)功能上再次拓展,以允许应用类放置在共享存档中

线程局部管控。允许停止单个线程,而不是只能启用或停止所有线程

移除 Native-Header Generation Tool (javah)

额外的 Unicode 语言标签扩展。包括:cu (货币类型)、fw (每周第一天为星期几)、rg (区域覆盖)、tz (时区) 等

在备用内存设备上分配堆内存。允许 HotSpot 虚拟机在备用内存设备上分配 Java 对象堆

基于 Java 的 JIT 编译器(试验版本)

根证书。开源 Java SE Root CA 程序中的根证书

基于时间的版本发布模式。“Feature releases” 版本将包含新特性,“Update releases” 版本仅修复 Bug

Java SE 11(LTS)

2018-09-25

该版本有ZGC这样的革命性的垃圾收集器出现,也有把JDK 10中的类型推断加入Lambda语法这种可见的改进。InfoQ:Java 11 正式发布,新特性解读

Java 11 的 17 项关键新特性(JEP):

嵌套类可见性控制

动态文件常量

改进 Aarch64 Intrinsics

Epsilon–一个无操作的垃圾收集器

删除 Java EE 和 CORBA 模块

HttpClient

用于 Lambda 参数的局部变量语法

Curve25519 和 Curve448 算法的密钥协议

Unicode 10

Flight Recorder(飞行记录器)

haCha20 和 Poly1305 加密算法支持

Launch Single-File Source-Code Programs(启动单一文件的源代码程序)

低开销的 Heap Profiling

TLS 1.3支持

ZGC: A Scalable Low-Latency Garbage Collector(可伸缩低延迟垃圾收集器)

弃用 Nashorn JavaScript 引擎

弃用 Pack200 工具和 API

Java SE 12

2019-03-19

只包含8个JEP,其中主要有Switch表达式、Java微测试套件(JMH)等新功能,最引人注目的特性无疑是加入了由RedHat领导开发的Shen-andoah垃圾收集器。Shenandoah作为首个由非Oracle开发的垃圾收集器,目标又与Oracle在JDK 11中发布的ZGC几乎完全一致,两者天生就存在竞争。

Java 12 的 8 项关键新特性(JEP):

Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) :新增一个名为 Shenandoah 的垃圾回收器,它通过在 Java 线程运行的同时进行疏散 (evacuation) 工作来减少停顿时间。

Microbenchmark Suite:新增一套微基准测试,使开发者能够基于现有的 Java Microbenchmark Harness(JMH)轻松测试 JDK 的性能,并创建新的基准测试。

Switch Expressions (Preview) :对 switch 语句进行扩展,使其可以用作语句或表达式,简化日常代码。

JVM Constants API :引入一个 API 来对关键类文件 (key class-file) 和运行时工件的名义描述(nominal descriptions)进行建模,特别是那些可从常量池加载的常量。

One AArch64 Port, Not Two :删除与 arm64 端口相关的所有源码,保留 32 位 ARM 移植和 64 位 aarch64 移植。

Default CDS Archives :默认生成类数据共享(CDS)存档。

Abortable Mixed Collections for G1 :当 G1 垃圾回收器的回收超过暂停目标,则能中止垃圾回收过程。

Promptly Return Unused Committed Memory from G1 :改进 G1 垃圾回收器,以便在空闲时自动将 Java 堆内存返回给操作系统。

Java SE 13

2019-09-17

该版本通过改善Java SE平台和JDK的性能,稳定性和安全性来提高开发人员的生产力。这次的JDK13包含了5个JEP(Java Enhancement Proposals)和一个Unicode 12.1的支持总共6大主要新特性。

JDK13的六大重要特性:

支持Unicode 12.1

动态CDS归档(Dynamic CDS Archiving)

java.net.Socket和java.net.ServerSocket API的重新实现

ZGC的增强

文本块(预览语言功能)

switch表达式(预览语言功能)

Java SE 14

2020-03-17

JDK 14 中新增了以下16个新特性:

instanceof的模式匹配 (预览)

打包工具 (Incubator)

G1的NUMA内存分配优化

JFR事件流

非原子性的字节缓冲区映射

友好的空指针异常

Records (预览)

Switch 表达式 (标准)

弃用Solaris和SPARC端口

移除 CMS (Concurrent Mark Sweep)垃圾收集器

macOS 系统上的ZGC

Windows系统上的ZGC

弃用ParallelScavenge + SerialOld GC组合

移除Pack200 Tools和API

文本块 (第二个预览版)

外部存储器API (Incubator)

Java SE 15

2020-09-15

Java15主要有以下几个特性:

Edwards-Curve Digital Signature Algorithm (EdDSA)    蒙哥马利与扭曲爱德华曲线签名算法

Sealed Classes (Preview)    密封类(预览)

Hidden Classes    隐藏类

Remove the Nashorn JavaScript Engine    移除nasorn JavaScript引擎

Reimplement the Legacy DatagramSocket API    重新实现旧的DatagramSocket API

Disable and Deprecate Biased Locking    禁用和弃用偏置锁

Pattern Matching for instanceof (Second Preview)    模式匹配的instanceof(第二次预览)

ZGC: A Scalable Low-Latency Garbage Collector    ZGC:一个可扩展的低延迟垃圾收集器

Text Blocks    文本块

Shenandoah: A Low-Pause-Time Garbage Collector    Shenandoah:低暂停时间垃圾收集器

Remove the Solaris and SPARC Ports    移除Solaris和SPARC端口

Foreign-Memory Access API (Second Incubator)    外部内存访问API(第二个孵化器)

Records (Second Preview)    记录(第二次预览)

Deprecate RMI Activation for Removal    建议移除RMI激活

Java SE 16

2021-03-16

JDK16为我们带来了17个方面的提升,包括了新的语言特性、新的工具、内存管理的提升等方面。

JDK16的新特性:

内存管理的提升

新的打包工具

UNIX-Domain Socket channels

Value-based Classes的警告

Encapsulating JDK Internals by default

提供了 C++ 14语言特性

其他的一些预览版本的新特性

Java SE 17(LTS)

2021-09-14

继JDK11发布3年以来的又一个长支持(LTS)的版本,其带来了14项JEP(JDK增强建议)更新,包括10个新功能以及2个功能的删除和2个功能的弃用。Spring Boot 3.0 最低只支持JDK 17,已经不再向下兼容,这就意味着未来很多的开发者必定逐步从JDK8 转到JDK17。

Java 17新特性:

恢复始终严格的浮点语义

增强型伪随机数发生器

新的 macOS 渲染管道

macOS/AArch64 端口

弃用即将删除的 Applet API

强封装JDK的内部API

Switch模式匹配(预览)

删除 RMI 激活

密封类

删除实验性 AOT 和 JIT 编译器

弃用即将删除安全管理器

外部函数和内存 API(孵化器)

Vector API(第二次进行特性孵化)

特定于上下文的反序列化过滤器

Java SE 18

2022-03-22

JDK18带来的9个新特性:

默认 UTF-8 字符编码

简单的 Web 服务器

Javadoc 中支持代码片段

使用方法句柄重新实现反射核心功能

Vector API(三次孵化)

互联网地址解析 SPI

Foreign Function & Memory API (第二次孵化)

switch 表达式(二次孵化)

弃用删除相关

Java SE 19

2022-09-20

该版本共有7个新特性,4个预览版特性 + 2个处于孵化阶段特性 + 1个新特性。

JDK19带来的7个新特性:

Record Patterns (Preview) - Record模式(预览)

Linux/RISC-V Port - Linux/RISC-V移植

Foreign Function & Memory API (Preview) - 外部函数和内存API(预览)

Virtual Threads (Preview) - 虚拟线程(预览)

Vector API (Fourth Incubator) - 向量API(第4次孵化)

Pattern Matching for switch (Third Preview) - switch模式匹配(第3次预览)

Structured Concurrency (Incubator) - 结构化并发(孵化)

Java SE 20

2023-03-21

JDK20新特性:

Scoped Values (Incubator) 作用域值 Scoped Value(孵化器)

Record Patterns (Second Preview) Record 模式(第二预览版)

Pattern Matching for switch (Fourth Preview) switch 模式匹配(第四预览版)

Foreign Function & Memory API (Second Preview) 外部函数内存 API(第2版)

Virtual Threads (Second Preview) 虚拟线程(第二个预览版)

Structured Concurrency (Second Incubator) 结构化并发(第二个孵化器版本)

Vector API (Fifth Incubator) Vector API(第五个孵化器版本)

你可能感兴趣的:(JAVA知识点杂烩,java,开发语言)