jdk版本特性一览(持续补充新版本)

大家现在用的那个版本,是不是jdk8最后一个免费版本,

考虑用open jdk啦,升级那个版本比较靠谱呢。

Java  5

引入泛型功能(伪泛型)

增强循环,可以使用迭代循环,Iterator

支持自动装箱和自动拆箱

支持类型安全的枚举

支持可变参数

支持静态引入

支持元数据(注解)功能

引入Java Instrumentation

Java 6

支持脚本语言

引入JDBC 4.0 API

引入Java Compiler API

支持可插拔注解

Java 7

支持了switch语句以String作为条件,至此已支持4中基本类型(byte, char , short ,int),2种对象类型(枚举,String)

优化增强了泛型对象类型推断

支持了在一个语句块中捕获多种异常,既一个catch,可以|多个异常

支持try-with-resources语法,自动为资源类进行关闭,而无需finally进行

引入Java NIO2开发包,支持了AIO

支持了数值的二进制表示方式,比如0b1010000, 以前只能8,10,16进制的表示

钻石型语法,省略类型参数的声明

支持了动态语言

Java 8

支持lambda表达式

支持集合的Stream流处理

支持Functional函数式接口

对各个类支持了很多对应的lambda增强方法

增强接口,支持了接口的默认和静态的具体方法

支持LocalDate等时间包,以改进原有Date

支持Optional来改进Null值的处理

优化了HashMap和ConcurrentHashMap

Java 9

支持了HTTP/2客户端

支持Java平台级模块系统,既模块化

支持了JShell,既类似node.js, python一样的命令行工具,对待简单的东西,可以直接命令测试

改进Javadoc, 使得Javadoc可以搜索

集合的工厂方法,支持了List.of(), Set.of(), Map.of()的方式初始化不可变集合,省略了大量代码,语法糖

改进的Stream API,比如ofNullable(),dropWhile(),takeWhile()等

增强接口,支持了私有接口具体方法,补充了Java8默认和静态方法的支持

把G1垃圾收集器作为默认的垃圾收集器,并标注CMS为过时收集器

引入了响应式流Reactive Streams API, 支持了响应式编程

102:Process API Updates进程 API 更新
110:HTTP 2 ClientHTTP 2 客户端
143:Improve Contended Locking改进竞争锁定
158:Unified JVM Logging统一 JVM 日志记录
165:Compiler Control编译器控制
193:Variable Handles变量句柄
197:Segmented Code Cache分段代码缓存
199:Smart Java Compilation, Phase Two智能 Java 编译,第二阶段
200:The Modular JDK模块化 JDK
201:Modular Source Code模块化源代码
211:Elide Deprecation Warnings on Import Statements在导入语句中省略弃用警告
212:Resolve Lint and Doclint Warnings解决 Lint 和 Doclint 警告
213:Milling Project CoinMilling Project Coin
214:Remove GC Combinations Deprecated in JDK 8删除 JDK 8 中已弃用的 GC 组合
215:Tiered Attribution for javacjavac 的分层归因
216:Process Import Statements Correctly正确处理导入语句
217:Annotations Pipeline 2.0注释管道 2.0
219:Datagram Transport Layer Security (DTLS)数据报传输层安全性 (DTLS)
220:Modular Run-Time Images模块化运行时图像
221:Simplified Doclet API简化的 Doclet API
222:jshell: The Java Shell (Read-Eval-Print Loop)jshell:Java Shell(读取-评估-打印循环)
223:New Version-String Scheme新版本字符串方案
224:HTML5 JavadocHTML5 Javadoc
225:Javadoc SearchJavadoc 搜索
226:UTF-8 Property FilesUTF-8 属性文件
227:Unicode 7.0Unicode 7.0
228:Add More Diagnostic Commands添加更多诊断命令
229:Create PKCS12 Keystores by Default默认创建 PKCS12 密钥库
231:Remove Launch-Time JRE Version Selection删除启动时 JRE 版本选择
232:Improve Secure Application Performance提高安全应用程序性能
233:Generate Run-Time Compiler Tests Automatically自动生成运行时编译器测试
235:Test Class-File Attributes Generated by javac测试由 javac 生成的类文件属性
236:Parser API for NashornNashorn 解析器 API
237:Linux/AArch64 PortLinux/AArch64 端口
238:Multi-Release JAR Files多版本 JAR 文件
240:Remove the JVM TI hprof Agent删除 JVM TI hprof 代理
241:Remove the jhat Tool删除 jhat 工具
243:Java-Level JVM Compiler InterfaceJava 级 JVM 编译器接口
244:TLS Application-Layer Protocol Negotiation ExtensionTLS 应用层协议协商扩展
245:Validate JVM Command-Line Flag Arguments验证 JVM 命令行标志参数
246:Leverage CPU Instructions for GHASH and RSA利用 GHASH 和 RSA 的 CPU 指令
247:Compile for Older Platform Versions为旧平台版本编译
248:Make G1 the Default Garbage Collector使 G1 成为默认垃圾收集器
249:OCSP Stapling for TLS用于 TLS 的 OCSP 装订
250:Store Interned Strings in CDS Archives在 CDS 档案中存储内部字符串
251:Multi-Resolution Images多分辨率图像
252:Use CLDR Locale Data by Default默认使用 CLDR 区域设置数据
253:Prepare JavaFX UI Controls & CSS APIs for Modularization为模块化准备 JavaFX UI 控件和 CSS API
254:Compact Strings紧凑字符串
255:Merge Selected Xerces 2.11.0 Updates into JAXP将选定的 Xerces 2.11.0 更新合并到 JAXP
256:BeanInfo AnnotationsBeanInfo 注释
257:Update JavaFX/Media to Newer Version of GStreamer将 JavaFX/Media 更新到 GStreamer 的较新版本
258:HarfBuzz Font-Layout EngineHarfBuzz 字体布局引擎
259:Stack-Walking APIStack-Walking API
260:Encapsulate Most Internal APIs封装大多数内部 API
261:Module System模块系统
262:TIFF Image I/OTIFF 图像 I/O
263:HiDPI Graphics on Windows and LinuxWindows 和 Linux 上的 HiDPI 图形
264:Platform Logging API and Service平台日志记录 API 和服务
265:Marlin Graphics RendererMarlin 图形渲染器
266:More Concurrency Updates更多并发更新
267:Unicode 8.0Unicode 8.0
268:XML CatalogsXML 目录
269:Convenience Factory Methods for Collections集合的便利工厂方法
270:Reserved Stack Areas for Critical Sections保留关键部分的堆栈区域
271:Unified GC Logging统一 GC 日志记录
272:Platform-Specific Desktop Features特定于平台的桌面功能
273:DRBG-Based SecureRandom Implementations基于 DRBG 的 SecureRandom 实现
274:Enhanced Method Handles增强的方法句柄
275:Modular Java Application Packaging模块化 Java 应用程序打包
276:Dynamic Linking of Language-Defined Object Models语言定义的对象模型的动态链接
277:Enhanced Deprecation增强的弃用
278:Additional Tests for Humongous Objects in G1G1 中巨大对象的附加测试
279:Improve Test-Failure Troubleshooting改进测试失败故障排除
280:Indify String Concatenation指示字符串连接
281:HotSpot C++ Unit-Test FrameworkHotSpot C++ 单元测试框架
282:jlink: The Java Linkerjlink:Java 链接器
283:Enable GTK 3 on Linux在 Linux 上启用 GTK 3
284:New HotSpot Build System新的 HotSpot 构建系统
285:Spin-Wait HintsSpin-Wait 提示
287:SHA-3 Hash AlgorithmsSHA-3 哈希算法
288:Disable SHA-1 Certificates禁用 SHA-1 证书
289:Deprecate the Applet API弃用 Applet API
290:Filter Incoming Serialization Data过滤传入的序列化数据
291:Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector弃用并发标记清除 (CMS) 垃圾收集器
292:Implement Selected ECMAScript 6 Features in Nashorn在 Nashorn 中实现选定的 ECMAScript 6 功能
294:Linux/s390x PortLinux/s390x 端口
295:Ahead-of-Time Compilation提前编译
297:Unified arm32/arm64 Port统一 arm32/arm64 端口
298:Remove Demos and Samples删除演示和示例
299:Reorganize Documentation重新组织文档

Java 10

支持了局部变量的类型推导,支持了局部变量的var声明

优化改进了G1垃圾回收器,采用并行化mark-sweep-compact算法

286:本地变量类型推断Local-Variable Type Inference
296:将 JDK 森林合并到一个存储库中Consolidate the JDK Forest into a Single Repository
304:垃圾收集器接口Garbage-Collector Interface
307:G1 的并行完整 GCParallel Full GC for G1
310:应用程序类数据共享Application Class-Data Sharing
312:线程本地握手Thread-Local Handshakes
313:删除 Native-Header生成工具 (javah)Remove the Native-Header Generation Tool (javah)
314:附加 Unicode 语言标签扩展Additional Unicode Language-Tag Extensions
316:替代存储设备上的堆分配Heap Allocation on Alternative Memory Devices
317:实验性基于 Java 的 JIT 编译器Experimental Java-Based JIT Compiler
319:根证书Root Certificates
322:基于时间的发布版本控制Time-Based Release Versioning

Java 11

简化了启动单个源代码文件的方法,使得小白命令式编译运行Java文件变成更加简单,java Helloworld.java 即可

增加支持了一个叫Epsilon的低开销垃圾收集器

增加支持了一个叫ZGC(Z Garbage Collector)的可伸缩低延迟垃圾收集器, 相比G1,停顿时间有了很大的改进,稳定在10ms以下

重写了HttpClient,提供了新的标准化HttpClient API, 以后不再需要引入apache包的HttpClient或是okhttp就能支持高性能的网络5.编程

增加了对TLS 1.3的支持

允许了飞行记录器进行商用下的使用

更好的支持了动态语言,在JVM层面增加了invokedynamic指令

支持了在lambda内部使用var声明局部变量

181:Nest-Based Access Control基于嵌套的访问控制
309:Dynamic Class-File Constants动态类文件常量
315:Improve Aarch64 Intrinsics改进 Aarch64 内在函数
318:Epsilon: A No-Op Garbage CollectorEpsilon:无操作垃圾收集器
320:Remove the Java EE and CORBA Modules删除 Java EE 和 CORBA 模块
321:HTTP Client (Standard)HTTP 客户端(标准)
323:Local-Variable Syntax for Lambda Param本地变量Lambda 参数的语法
324:Key Agreement with Curve25519 and Curv与 Curve25519 和 Curve448 的密钥协议
327:Unicode 10Unicode 10
328:Flight Recorder飞行记录器
329:ChaCha20 and Poly1305 Cryptographic AlChaCha20 和 Poly1305 加密算法
330:Launch Single-File Source-Code Program启动单文件源代码程序
331:Low-Overhead Heap Profiling低开销堆分析
332:Transport Layer Security (TLS) 1.3传输层安全 (TLS) 1.3
333:ZGC: A Scalable Low-Latency Garbage CoZGC:可扩展的低延迟垃圾收集器(实验性)
335:Deprecate the Nashorn JavaScript Engin弃用 Nashorn JavaScript 引擎
336:Deprecate the Pack200 Tools and API弃用 Pack200 工具和 API

Java 12

引入了一个叫Shenandoah 低停顿的实验性垃圾收集器

改进了G1垃圾收集器

引入了实验性的预览版Switch语句优化,可以省略break语句,合并多个case

引入了JVM的常量API, 有助于一些分析的实现

189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)Shenandoah:一种低暂停时间的垃圾收集器(实验性)
230:Microbenchmark Suite微基准套件
325:Switch Expressions (Preview)切换表达式(预览)
334:JVM Constants APIJVM 常量 API
340:One AArch64 Port, Not Two一个 AArch64 端口,不是两个
341:Default CDS Archives默认 CDS 档案
344:Abortable Mixed Collections for G1G1 的可中止混合集合
346:Promptly Return Unused Committed Memory from G1立即从 G1 返回未使用的已提交内存

Java 13

增强优化了ZGC垃圾收集器, 归还未使用的堆内存给操作系统

将Java12引入的预览版Switch语法提为正式版,使得Switch的使用更加的顺滑和流畅

支持了"""字符串块功能

350:Dynamic CDS Archives动态 CDS 档案
351:ZGC: Uncommit Unused MemoryZGC:取消提交未使用的内存
353:Reimplement the Legacy Socket API重新实现 Legacy Socket API
354:Switch Expressions (Preview)切换表达式(预览)
355:Text Blocks (Preview)文本块(预览)

Java 14

通过实施 NUMA 感知内存分配来提高大型机器上的 G1 性能。

NPE精确描述产生异常的变量

switch表达式增强,支持 case 表达式 -> 逻辑

删除CMS垃圾收集器

305:Pattern Matching for instanceof (Preview)instanceof 的模式匹配(预览版)
343:Packaging Tool (Incubator)包装工具(孵化器)
345:NUMA-Aware Memory Allocation for G1G1 的 NUMA 感知内存分配
349:JFR Event StreamingJFR 事件流
352:Non-Volatile Mapped Byte Buffers非易失性映射字节缓冲区
358:Helpful NullPointerExceptions有用的 NullPointerExceptions
359:Records (Preview)记录(预览)
361:Switch Expressions (Standard)切换表达式(标准)
362:Deprecate the Solaris and SPARC Ports弃用 Solaris 和 SPARC 端口
363:Remove the Concurrent Mark Sweep (CMS) Garbage Collector删除并发标记清除 (CMS) 垃圾收集器
364:ZGC on macOSmacOS 上的 ZGC
365:ZGC on WindowsWindows 上的 ZGC
366:Deprecate the ParallelScavenge + SerialOld GC Combination弃用 ParallelScavenge + SerialOld GC 组合
367:Remove the Pack200 Tools and API删除 Pack200 工具和 API
368:Text Blocks (Second Preview)文本块(第二次预览)
370:Foreign-Memory Access API (Incubator)Foreign-Memory Access API(孵化器)

Java 15

引入隐藏类,即不能被其他类的字节码直接使用的类,独立其他类卸载

禁用偏向锁,现有并发集合和线程池等应用方式,偏向锁优化不再适用

垃圾收集器 ZGC 更改为生产状态

垃圾收集器 Shenandoah 更改为生产状态

339:Edwards-Curve Digital Signature Algorithm (EdDSA)爱德华兹曲线数字签名算法 (EdDSA)
360:Sealed Classes (Preview)密封类(预览版)
371:Hidden Classes隐藏类
372:Remove the Nashorn JavaScript Engine移除 Nashorn JavaScript 引擎
373:Reimplement the Legacy DatagramSocket API重新实现旧版 DatagramSocket API
374:Disable and Deprecate Biased Locking禁用和弃用偏向锁定
375:Pattern Matching for instanceof (Second Preview)instanceof 的模式匹配(第二次预览)
377:ZGC: A Scalable Low-Latency Garbage CollectorZGC:可扩展的低延迟垃圾收集器
378:Text Blocks文本块
379:Shenandoah: A Low-Pause-Time Garbage CollectorShenandoah:一个低暂停时间的垃圾收集器
381:Remove the Solaris and SPARC Ports删除 Solaris 和 SPARC 端口
383:Foreign-Memory Access API (Second Incubator)Foreign-Memory Access API(第二个孵化器)
384:Records (Second Preview)记录(第二次预览)
385:Deprecate RMI Activation for Removal弃用 RMI 激活以进行删除

Java 16

instanceof 的增强,可以直接拿到对应实例类型引用,不需要再自己去做强制转换

ZGC垃圾收集器优化

更及时地将未使用的 HotSpot 类元数据(即元空间)内存返回给操作系统,减少元空间占用,并简化元空间代码以降低维护成本。

338:Vector API (Incubator)矢量 API(孵化器)
347:Enable C++14 Language Features启用 C++14 语言功能
357:Migrate from Mercurial to Git从 Mercurial 迁移到 Git
369:Migrate to GitHub迁移到 GitHub
376:ZGC: Concurrent Thread-Stack ProcessingZGC:并发线程堆栈处理
380:Unix-Domain Socket ChannelsUnix 域套接字通道
386:Alpine Linux Port高山 Linux 端口
387:Elastic Metaspace弹性元空间
388:Windows/AArch64 PortWindows/AArch64 端口
389:Foreign Linker API (Incubator)外部链接器 API(孵化器)
390:Warnings for Value-Based Classes基于值的类的警告
392:Packaging Tool打包工具
393:Foreign-Memory Access API (Third Incubator)Foreign-Memory Access API(第三孵化器)
394:Pattern Matching for instanceofinstanceof 的模式匹配
395:Records记录
396:Strongly Encapsulate JDK Internals by Default默认情况下对 JDK 内部进行强封装
397:Sealed Classes (Second Preview)密封课程(第二次预览)

Java 17

增强伪随机数生成器

密封类,抽象类可用指定实现类,之外的类不可继承

306:Restore Always-Strict Floating-Point Semantics恢复始终严格的浮点语义
356:Enhanced Pseudo-Random Number Generators增强的伪随机数生成器
382:New macOS Rendering Pipeline新的 macOS 渲染管道
391:macOS/AArch64 PortmacOS/AArch64 端口
398:Deprecate the Applet API for Removal弃用 Applet API 以进行删除
403:Strongly Encapsulate JDK Internals强烈封装 JDK 内部
406:Pattern Matching for switch (Preview)开关的模式匹配(预览版)
407:Remove RMI Activation删除 RMI 激活
409:Sealed Classes密封类
410:Remove the Experimental AOT and JIT Compiler删除实验性 AOT 和 JIT 编译器
411:Deprecate the Security Manager for Removal弃用安全管理器以进行删除
412:Foreign Function & Memory API (Incubator)外部函数和内存 API(孵化器)
414:Vector API (Second Incubator)Vector API(第二个孵化器)
415:Context-Specific Deserialization Filters特定于上下文的反序列化过滤器

Java 18

简单的网络服务器

400:UTF-8 by Default默认为 UTF-8
408:Simple Web Server简单的网络服务器
413:Code Snippets in Java API DocumentationJava API 文档中的代码片段
416:Reimplement Core Reflection with Method Handles使用方法句柄重新实现核心反射
417:Vector API (Third Incubator)Vector API(第三个孵化器)
418:Internet-Address Resolution SPI互联网地址解析 SPI
419:Foreign Function & Memory API (Second Incubator)Foreign Function & Memory API (第二孵化器)
420:Pattern Matching for switch (Second Preview)开关模式匹配(第二次预览)
421:Deprecate Finalization for Removal弃用完成删除

Java 19

405:Record Patterns (Preview)记录模式(预览)
422:Linux/RISC-V PortLinux/RISC-V 端口
424:Foreign Function & Memory API (Preview)外部函数和内存 API(预览版)
425:Virtual Threads (Preview)虚拟线程(预览)
426:Vector API (Fourth Incubator)Vector API(第四个孵化器)
427:Pattern Matching for switch (Third Preview)开关的模式匹配(第三次预览)
428:Structured Concurrency (Incubator)结构化并发(孵化器)

Java 20

开发中,未发布

tobe continue

问题

Q:feature前面的编号是是干嘛的?

A:   你可以直接https://openjdk.org/jeps/[编号] 查看详细介绍

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值