java 版本变更列表

  • Java SE 8
  • Java SE 9
  • Java SE 10
  • Java SE 11
  • Java SE 12
  • Java SE 13
  • Java SE 14
  • Java SE 15
  • Java SE 16
  • Java SE 17
  • Java SE 18

参考资料: Wiki :java 版本历史

Java SE 8

Java 8 于 2014 年 3 月 18 日发布

  • JSR 335,JEP 126 :lambda 表达式支持
  • JSR 223,JEP 174 :Nashorn项目,一个 JavaScript 运行时,它允许开发人员在应用程序中嵌入 JavaScript 代码
  • JSR 308,JEP 104 :在 Java 类型上的注解
  • JSR 337 JEP 120 :重复注解
  • JSR 310 JEP 150 :日期和时间 API,基于Joda-Time日期时间处理库的实现
  • JEP 178 :静态链接 JNI 程序库
  • JEP 153 :执行 JavaFX 应用程序(直接执行 JavaFX 的应用程序的 JAR 包)
  • JEP 122 :删除永久代
  • 无符号整数算术

Java SE 9

Java SE 9 于 2017 年 9 月 21 日发布

  • JSR 376 :在Jigsaw项目中将JDK模块化
  • JavaDB被移出JDK
  • JEP 222 :jshell:Java Shell(一个 Java 交互式顶层构件)
  • JEP 193 :变量句柄:定义一个标准方法来调用java.util.concurrent.atomic和sun.misc.Unsafe操作的等价物
  • JEP 213 :Milling Project Coin,允许在私有实例方法上使用@SafeVarargs;允许在 try-with-resources 语句中使用有效最终变量作为资源;如果推断类型的参数类型是可表示的,则允许具有匿名类的菱形;完成从 Java SE 8 开始从合法标识符名称集中删除下划线;支持接口中的私有方法
  • JEP 254 :紧凑字符串
  • JEP 268 :XML 目录
  • JEP 295 :AOT编译(通过 Graal VM 实现)
  • JEP 263 :HiDPI 图形:自动缩放和调整大小
  • JEP 266 :更多的并发更新。包含响应式流的Java实现,及其部分替代品java.util.concurrent.Flow。
  • JEP 282 :jlink:Java链接器。该工具可以为模块生成一个包含了其所有依赖项的自定义运行时映像,同时允许生成一个包括运行它的JVM的可执行文件。

Java SE 10

OpenJDK 10 于2018年3月20日发布

  • JEP 286 :局部变量类型推断
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream();
  • JEP 296 :将所有JDK分支集成到同一个版本库中
  • JEP 304 :垃圾回收器接口
  • JEP 307 :G1 的并行 Full GC
  • JEP 310 :应用程序类级别数据共享
  • JEP 312 :线程本地握手
  • JEP 313 :删除本地代码头文件生成器javah
  • JEP 314 :更多的Unicode语言标签扩展
  • JEP 316 :在可选的内存设备上申请堆内存空间
  • JEP 317:实验性的基于Java的JIT编译器。这是 Linux x64 下 Graal 动态编译器的集成
  • JEP 319 :内置根证书
  • JEP 322 :基于时间的版本命名

Java SE 11

JDK 11 于 2018 年 9 月 25 日发布,它提供 LTS 长期支持

  • JEP 181 :针对嵌套成员的访问控制
  • JEP 309 :动态类文件常量
  • JEP 315 :利用 Aarch64 的特有架构改进其上的性能
  • JEP 318 :Epsilon:无操作垃圾收集器
  • JEP 320 :移除 Java EE 和 CORBA 模块
  • JEP 321 :HTTP Client
  • JEP 323 :lambda参数的局部变量语法
  • JEP 324 :支持 Curve25519 和 Curve 448 密钥协议
  • JEP 327 :Unicode 10
  • JEP 328 :添加Java飞行记录器(JFR),其用于创建性能分析记录
  • JEP 329 :ChaCha20 和 Poly1305 加密算法
  • JEP 330 :运行单文件源码程序
  • JEP 331 :低开销堆分析
  • JEP 332 :支持 TLS 1.3
  • JEP 333 :添加ZGC(一个可扩展的低延迟垃圾收集器)
  • JEP 335 :弃用 Nashorn JavaScript 引擎
  • JEP 336 :弃用 Pack200 相关的工具及 API

Java SE 12

JDK 12 于2019年3月19日发布

  • JEP 189 :Shenandoah:一个实验性的低延迟垃圾收集器
  • JEP 230 :细粒度性能评审包
  • JEP 325 :Switch 表达式(预览阶段)
int ndays = switch(month) {case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;case APR, JUN, SEP, NOV -> 30;case FEB -> {if (year % 400 == 0) yield 29;else if (year % 100 == 0) yield 28;else if (year % 4 == 0) yield 29;else yield 28; }
};
  • JEP 334 :JVM Constants API
  • JEP 340 :仅保留一个 AArch64 平台的移植
  • JEP 341 :默认类数据共享归档
  • JEP 344 :针对G1,提供可中止的混合垃圾收集
  • JEP 346 :针对G1,及时释放已申请但未使用的内存

Java SE 13

JDK 13 于2019年9月17日发布

  • JEP-350 : 动态 CDS 归档
  • JEP-351 : ZGC: 取消提交未使用存储器
  • JEP-353 : 重新实现旧版 Socket API
  • JEP-354 : Switch 表达式(预览阶段)
  • JEP-355 : 文本块(预览阶段)
String html = """<html lang="en"><body><p>Hello, world</p></body></html>""";

Java SE 14

JDK 14 于 2020 年 3 月 17 日发布

  • JEP-305 :使用 instanceof 的模式匹配(预览)

if (obj instanceof String) {String s = (String) obj;System.out.println( s.length() );
}if (obj instanceof String s) {System.out.println( s.length() );
}
  • JEP-343 :打包工具(孵化中)
  • JEP-345 :在 G1 中,对不均匀的内存访问(NUMA)情况下的内存申请优化
  • JEP-349 :JFR Event Streaming
  • JEP-352 :使字节缓冲区能够映射到非易失性存储器上
  • JEP-358 :有帮助的 NullPointerExceptions
  • JEP-359 :记录类(预览)
record Point(int x, int y) { }
Point p = new Point(3,4);
System.out.println( p.x() );
  • JEP-361 :Switch 表达式(标准)
  • JEP-362 :弃用 Solaris 和 SPARC 平台上的移植版本
  • JEP-363 :移除 Concurrent Mark Sweep (CMS) 垃圾收集器
  • JEP-364 :适用于 macOS 的 ZGC
  • JEP-365 :适用于 Windows 的 ZGC
  • JEP-366 :弃用 ParallelScavenge + SerialOld 的垃圾收集器组合
  • JEP-367 :移除 Pack200 相关的工具及 API
  • JEP-368 :文本块(第二预览版本)
  • JEP-370 :外部内存访问 API(孵化中)

Java SE 15

JDK 15 于 2020 年 9 月 15 日发布

  • JEP 339 :爱德华兹曲线数字签名算法 (EdDSA)
  • JEP 360 :密封类(预览版)
package com.example.geometry;public abstract sealed class Shapepermits Circle, Rectangle, Square {...}
  • JEP 371 :隐藏类
  • JEP 372 :移除 Nashorn JavaScript 引擎
  • JEP 373 :重新实现旧的 DatagramSocket API
  • JEP 374 :禁用和弃用偏向锁
  • JEP 375 :instanceof 的模式匹配(第二次预览)
  • JEP 377 :ZGC:可扩展的低延迟垃圾收集器
  • JEP 378 :文本块
  • JEP 379 :Shenandoah:一种低暂停时间的垃圾收集器
  • JEP 381 :删除 Solaris 和 SPARC 端口
  • JEP 383 :外部内存访问 API(第二个孵化器)
  • JEP 384 :记录(第二次预览)
  • JEP 385 :弃用 RMI 激活以进行删除

Java SE 16

DK 16 于 2021 年 3 月 16 日发布

  • JEP 338 :矢量 API(孵化中)
  • JEP 347 :启用 C++14 语言功能
  • JEP 357 :从 Mercurial 迁移到 Git
  • JEP 369 :迁移到 GitHub
  • JEP 376 :ZGC:并发线程堆栈处理
  • JEP 380 :Unix 域套接字通道
  • JEP 386 :Alpine Linux 端口 (还不稳定)
  • JEP 387 :弹性元空间
  • JEP 388 :Windows/AArch64 端口
  • JEP 389 :外部链接器 API(孵化中)
  • JEP 390 :基于值的类的警告
  • JEP 392 :打包工具
  • JEP 393 :外部内存访问 API(第三个孵化器)
  • JEP 394 :instanceof 的模式匹配
  • JEP 395 :记录
  • JEP 396 :默认情况下强封装 JDK 内部
  • JEP 397 :密封类(第二次预览)

Java SE 17

DK 17 是自 2021 年 9 月以来的当前长期支持(LTS) 版本

  • JEP 306 :恢复始终严格的浮点语义
  • JEP 356 :增强的伪随机数生成器
  • JEP 382 :新的 macOS 渲染管道
  • JEP 391 :macOS/AArch64 端口
  • JEP 398 :弃用 Applet API 以进行删除
  • JEP 403 :强烈封装 JDK 内部
  • JEP 406 :开关的模式匹配(预览版)
  • JEP 407 :删除 RMI 激活
  • JEP 409 :密封类
  • JEP 410 :删除实验性 AOT 和 JIT 编译器
  • JEP 411 :弃用安全管理器以进行删除
  • JEP 412 :外部函数和内存 API(孵化中)
  • JEP 414 :Vector API(第二个孵化器)
  • JEP 415 :特定于上下文的反序列化过滤器

Java SE 18

JDK 18 于 2022 年 3 月 22 日发布。

  • JEP 400 :默认为 UTF-8
  • JEP 408 :简单的 Web 服务器
  • JEP 413 :Java API 文档中的代码片段
  • JEP 416 :使用方法句柄重新实现核心反射
  • JEP 417 :Vector API(第三个孵化器)
  • JEP 418 :互联网地址解析 SPI
  • JEP 419 :外部函数和内存 API(第二次预览版)
  • JEP 420 :开关的模式匹配(第二次预览)
  • JEP 421 :弃用 Finalization 并删除

Java 版本变更列表 (Java SE 8 ~ Java SE 18 )相关推荐

  1. 如何查看java版本 ubuntu_在Ubuntu上验证JAVA安装并检查已安装的版本(如果有)

    Ubuntu中的某些应用程序要求在系统上安装Java Runtime Library.大多数Ubuntu版本默认情况下都不提供此功能,因为在您的系统上安装Java时,安全性是一个问题.一次又一次,常规 ...

  2. 织梦java版本mcms,简单好用Java cms

    一直在百度搜索类似织梦内容管理系统,最好开源,最好是java cms(被php搞伤了),大多数还是php的居多,但是真心不想折腾服务器了.铁了心要找个Java版本的开源内容管理系统,但是网上大多数不是 ...

  3. java获取java版本_在运行时获取Java版本

    最简单的方法(java.specification.version): double version = Double.parseDouble(System.getProperty("jav ...

  4. mac 修改java版本_Mac如何更改maven的java版本

    本文出于我的独立博客:Geeekr [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2: ...

  5. 八门神器java版本_【修改教程】java基础知识字符串处理_八门神器

    [Java基础知识]字符串处理1.获取字符串的长度 String s = "AIDE"; System.out.println(s "长度为:" s.lengt ...

  6. 如何在同一台计算机上安装多个Java版本

    一段时间以前,我写了一篇文章< 用示例解释Java Lambda表达式>,但是我很容易浏览Java 8,因为我在项目中使用了Java 8,并且允许我安装和使用它. 但是在我当前的项目中,我 ...

  7. mac java 版本_Mac 下 Java 多版本切换

    Step 1: 安装 jdk1.7 jdk1.8 路径如下: + /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk + /Library/Java/J ...

  8. 太肝了、最近5年183个Java面试问题列表及回答(值得收藏)

    作者: YHGui https://github.com/YHGui/easy-job/ 精彩推荐 一百期Java面试题汇总 SpringBoot内容聚合 IntelliJ IDEA内容聚合 Myba ...

  9. 安装了多个java 如何切换java版本

    安装了多个java 如何切换java版本 问题描述 平常用的是java8,最近在学习java的新特性.这就需要从java8往更高的java版本切换.由于还在使用java8,测试完新特性后我需要再切换回 ...

最新文章

  1. 挤牙膏只服英特尔!新酷睿14nm+++,性能竟超过AMD 7nm?
  2. 【洛谷】P3919 【模板】可持久化线段树(主席树)
  3. python读取excel指定行列_pandas读取excel指定行列索引header和index_col参数
  4. 数据科学家 数据工程师_数据科学家实际上赚了多少钱?
  5. 九个数的全排列(避免重复出现)
  6. 20181123_任务(套件培训)
  7. Matlab--获取300dpi或600dpi图形插入word2010中
  8. at/cron计划任务初解
  9. Makefile--基本规则(零)
  10. MySQL如何备份整个数据库
  11. 穆穆推荐-软件销售行业软件公司销售参考操作手册-之2-软件公司销售团队的组建及岗位分类
  12. 【整理】22款免费在线图表制作工具
  13. C# 中的Event EventArgs和Delegate(转载)
  14. Java-坦克大战2
  15. org.springframework.context.annotation.ConflictingBeanDefinitionException异常处理
  16. 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
  17. PAT Basic Level 1027 打印沙漏 解题思路及AC代码
  18. 安利这几个真人配音软件
  19. python 离散化_数据离散化与Python实现
  20. 11个基于HTML/CSS/JS的情人节表白可爱小游戏、小动画

热门文章

  1. 网页设计简历中个人作品html,网页设计师简历自我评价填写样本
  2. python表达式3or5的值为_表达式 3 or 5 的值为
  3. 香港云服务器比香港服务器更快吗?
  4. 巧学五笔打字-----1小时可学会,不用死背字根 [图片]
  5. statsmodels遇到的坑!!!
  6. python爬虫实战之多线程爬取前程无忧简历
  7. word2003流程图变成图片_Word中流程图怎么画 手把手教你制作!
  8. 高德地图添加瓦片图层
  9. Python continue的用法
  10. Java-Map集合