百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

java进化史2

bigegpt 2024-09-06 17:55 9 浏览

java 进化史1

目前来看,使用量最多的三个版本应该是JDK8,JDK11,JDK17 了。这三个版本也是LTS版本,同时推荐大家使用的版本。

因为JDK8以后,oracle宣布商用版本开始收费,所以很多人一直没有升级,大家都觉得我的8还能再战十年,不过也差不多哈,[笑哭]哈哈哈。。。

jdk8将更新到 至少2030年12月。

jdk11 将更新到至少 2026年9月。

jdk17 将更新到至少 2024年9月。

jdk18 将更新到2022年9月,到时将会被jdk19取代。

还是8牛逼哈,不想更新的兄弟们可以接着白嫖

Java SE 8 LTS

2014年3月发布,主要特性:

  • JSR 335,JEP 126:Lambda项目中提供的语言级匿名函数支持(官方称为Lambda表达式,非官方亦称为闭包
  • JSR 223,JEP 174:Nashorn项目,一个JavaScript运行时,允许开发人员在应用程序中嵌入JavaScript代码
  • JSR 308,JEP 104:在Java类型上的注解
  • JSR 337,JEP 120:重复注解Repeatable
  • JSR 310,JEP 150:日期和时间API,基于Joda-Time日期时间处理库的实现
  • JEP 178:静态连接JNI程序库
  • JEP 153:执行JavaFX应用程序(直接执行JavaFX的应用程序的JAR包)
  • JEP 122:移除了虚拟机内存管理中的永久世代,使用元空间Metaspace代替
  • 无符号整数算术
  • 函数式接口
  • 方法引用
  • 接口默认方法
  • Stream API
  • Optional解决NullPointerException
  • Base64

Java SE 9

2017年9月发布,非LTS版本,OpenJDK于2018年3月停止更新,主要特性:

  • JSR 376:在Jigsaw项目中将JDK模块化
  • JEP 222:JShell
  • JEP 295:AOT编译(通过Graal VM实现)
  • JEP 268:XML Catalogs
  • JEP 266:更多的并发更新,包含响应式流的Java实现,及其部分替代品java.util.concurrent.Flow
  • JEP 193:变量句柄,定义一个标准方法来调用java.util.concurrent.atomic和sun.misc.Unsafe操作的等价物
  • JEP 282:jlink,Java链接器,该工具可以为模块生成一个包含了其所有依赖项的自定义运行时映像,同时允许生成一个包括运行它的JVM的可执行文件
  • JavaDB被移出JDK
  • JEP 263:高DPI图像,自动缩放与尺寸自适应
  • 提供List.of()、Set.of()、Map.of()和Map.ofEntries()等工厂方法
  • 接口支持私有方法
  • Optional类改进
  • 多版本兼容JAR包
  • try-with-resources改进
  • Stream API改进

Java SE 10

2018年3月发布,非LTS版本,OpenJDK于2018年9月停止更新,主要特性:

  • JEP 286:局部变量类型推断
  • JEP 317:实验性的基于Java的JIT编译器,Linux x64下Graal动态编译器的集成
  • JEP 310:应用程序类级别数据共享
  • JEP 322:基于时间的版本命名
  • JEP 307:适用于G1的多线程完全垃圾回收
  • JEP 304:垃圾回收器接口
  • JEP 314:更多的Unicode语言标签扩展
  • JEP 319:内置根证书
  • JEP 312:线程本地握手
  • JEP 316:在可选的内存设备上申请堆内存空间
  • JEP 313:删除本地代码头文件生成器javah
  • JEP 296:将所有JDK分支集成到同一个版本库中
  • 不可变集合改进
  • Optional新增orElseThrow()方法

Java SE 11

2018年9月发布,LTS版本,AdoptOpenJDK于2024年10月或之后停止更新,Amazon Corretto于2027年9月或之后停止更新,最后延伸支持日期:2026年9月
主要特性:

  • JEP 181:针对嵌套成员的访问控制
  • JEP 309:动态类文件常量
  • JEP 315:利用Aarch64的特有架构改进其上的性能
  • JEP 318:Epsilon,无操作垃圾收集器
  • JEP 320:移除Java EE和CORBA模块
  • JEP 321:HTTP Client重写,支持HTTP/1.1和HTTP/2,也支持websockets
  • 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

2019年3月发布,非LTS版本,OpenJDK于2019年9月停止更新,主要特性:

  • JEP 189:Shenandoah,一个实验性的低延迟垃圾收集器
  • JEP 230:细粒度性能评审包
  • JEP 325:Switch表达式扩展(预览阶段)
  • JEP 334:JVM Constants API
  • JEP 340:仅保留一个AArch64平台的移植
  • JEP 341:默认类数据共享归档
  • JEP 344:针对G1,提供可中止的混合垃圾收集
  • JEP 346:针对G1,及时释放已申请但未使用的内存
  • 新增NumberFormat对复杂数字的格式化
  • 字符串支持transform、indent操作
  • 新增方法Files.mismatch(Path, Path)
  • Teeing Collector
  • 支持Unicode 11

Java SE 13

2019年9月发布,非LTS版本,OpenJDK于2020年3月停止更新,主要特性:

  • JEP-350:动态CDS归档
  • JEP-351:增强ZGC释放未使用内存
  • JEP-353:重新实现旧版Socket API
  • JEP-354:Switch表达式扩展,引入yield关键字(预览版本)
  • JEP-355:文本框(预览阶段)
  • 增强ZGC释放未使用内存

Java SE 14

2020年3月发布,非LTS版本,OpenJDK于2020年9月停止更新,主要特性:

  • JEP-305:使用instanceof的模式匹配(预览)
  • JEP-343:打包工具(孵化中)
  • JEP-345:在G1中,对不均匀的内存访问(NUMA)情况下的内存申请优化
  • JEP-349:JFR Event Streaming
  • JEP-352:使字节缓冲区能够映射到非易失性存储器上
  • JEP-358:有帮助的NullPointerExceptions
  • JEP-359:记录类(预览)
  • 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(孵化中)
  • Record类型,类似于Lombok的@Data注解

Java SE 15

2020年9月发布,非LTS版本,OpenJDK于2021年3月停止更新,主要特性:

  • JEP 339:Edwards-Curve数据签名算法(EdDSA),EdDSA是一种现代的椭圆曲线签名方案
  • JEP 360:封闭类(预览)Sealed Classes,可以是封闭类或封闭接口,防止其他类或接口扩展或实现
  • JEP 371:隐藏类Hidden Classes,不能直接被其他类的字节码使用,只能在运行时生成类并通过反射间接使用它们
  • JEP 372:移除Nashorn JavaScript脚本引擎、APIs及jjs工具
  • JEP 373:重新实现DatagramSocket API接口,更改java.net.DatagramSocket和java.net.MulticastSocket为更简单的底层实现,更易于维护和调试,新的底层实现将很容易使用虚拟线程
  • JEP 374:准备禁用和废除偏向锁
  • JEP 375:使用instanceof的模式匹配(第二次预览)
  • JEP 377:ZGC,一个可伸缩、低延迟的垃圾回收器
  • JEP 378:文本块"""
  • JEP 379:Shenandoah,一个低停顿时间的垃圾回收器
  • JEP 381:移除Solaris和SPARC端口,移除了Solaris/SPARC、Solaris/x64和Linux/SPARC端口的源代码及构建支持
  • JEP 383:外存访问API(孵化),可以允许Java应用程序安全有效地访问Java堆之外的外部内存
  • JEP 384:Records(第二次预览),某些场合可以干掉Lombok,能自动生成类构造器、toString()、hashCode()、equals()以及类似getter的变量访问方法
  • JEP 385:废除RMI激活,RMI激活是RMI种一个过时的组件

Java SE 16

2021年3月发布,非LTS版本,OpenJDK与2021年9月停止更新,主要特性:

  • JEP 338:提供了jdk.incubator.vector来用于矢量计算
  • JEP 347:在JDK C++的源码中允许使用C++14的语言特性
  • JEP 357:OpenJDK源码的版本控制从Mercurial(hg)迁移到git
  • JEP 369:将OpenJDK源码的版本控制迁移到GitHub上
  • JEP 376:ZGC,实现了并发thread-stack处理来降低GC safepoints的负担
  • JEP 380:对socket channel及server socket channel的api提供对unix domain socket的支持
  • JEP 386:将glibc的jdk移植到使用musl的alpine linux上
  • JEP 387:支持不再使用的class metadata归还内存给操作系统,降低内存占用
  • JEP 388:移植JDK到Windows/AArch64
  • JEP 389:提供jdk.incubator.foreign来简化native code的调用
  • JEP 390:提供@jdk.internal.ValueBased来用于标注作为value-based的类
  • JEP 392:jpackage在JDK14引入,JDK15作为incubating工具,在JDK16转正,从jdk.incubator.jpackage转为jdk.jpackage,它支持Linux:deb & rpm,MacOS:pkg & dmg,Windows:msi & exe

Java SE 17

2021年9月发布,LTS版本,Azul于2029年9月停止更新,Microsoft于2027年9月停止更新,最后延伸支持日期:2024年9月
主要特性:

  • JEP 306:恢复始终执行严格模式的浮点定义,修复25年前英特尔的浮点指令存在的一些问题
  • JEP 356:引入RandomGenerator及RandomGeneratorFactory提供更好的随机数生成
  • JEP 382:使用Apple Metal API为MacOS新增了Java 2D internal rendering pipeline
  • JEP 391:迁移JDK到MacOS/AArch64
  • JEP 398:标记Applet API为废弃方便后续移除
  • JEP 403:对JDK内部的API进行更强的封装
  • JEP 406:引入switch模式匹配的preview版本,instanceof的模式匹配在JDK14作为preview,在JDK15作为第二轮的preview,在JDK16转正
  • JEP 407:移除Remote Method Invocation(RMI),它在JDK15的JEP 385被废弃
  • JEP 409:Sealed Classes在JDK15作为preview引入,在JDK16作为第二轮preview,在JDK17转正
  • JEP 410:移除实验性的Java版本的AOT及JIT Compiler
  • JEP 411:废弃Java1.0引入的Security Manager方便后续移除
  • JEP 412:引入Foreign Function & Memory API
  • JEP 414:JDK 16引入了Vector API(Incubator)提供了jdk.incubator.vector来用于矢量计算,JDK17进行改进并作为第二轮incubator
  • JEP 415:允许应用去配置指定上下文及动态选择的deserialization filters

Java SE 18

2022年3月发布,JDK 18 将是一个短期功能版本,只支持六个月。
主要特性:

  • JEP 400:指定 UTF-8 作为标准 Java API 的默认字符集。
  • JEP 408:引入一个简单的 Web 服务器。
  • JEP 413:支持在 Java API 文档中加入代码片段。
  • JEP 416 :用方法句柄重新实现核心反射。
  • JEP 417:Vector API(第三孵化器)。
  • JEP 418:互联网地址解析 SPI。
  • JEP 419:外部函数和内存 API(第二孵化器)。
  • JEP 420: switch 模式匹配表达式。
  • JEP 421:弃用 Finalization 功能。

参考文章:
https://www.jianshu.com/p/f3c16441b746

相关推荐

Linux gron 命令使用详解(linux gminer)

简介gron是一个独特的命令行工具,用于将JSON数据转换为离散的、易于grep处理的赋值语句格式。它的名字来源于"grepableon"或"grepable...

【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linu

学习Linux并掌握Java环境配置及SpringBoot项目部署是一个系统化的过程,以下是从零开始的详细指南,帮助你逐步掌握这些技能。一、Linux基础入门1.安装Linux系统选择发行版:推荐...

Linux常用的shell命令汇总(linux中shell的作用)

本文介绍Linux系统下常用的系统级命令,包括软硬件查看、修改命令,有CPU、内存、硬盘、网络、系统管理等命令。说明命令是在Centos6.464位的虚拟机系统进行测试的。本文介绍的命令都会在此C...

零成本搭建个人加密文件保险柜(适用于 Win11 和 Linux)

不依赖收费软件操作简单,小白也能跟着做支持双系统,跨平台使用实现数据加密、防删除、防泄露内容通俗无技术门槛,秒懂秒用使用工具简介我们将使用两个核心工具:工具名用途系统支持Veracrypt创建加密虚...

如何在 Linux 中使用 Gzip 命令?(linux怎么用gzip命令)

gzip(GNUzip)是Linux系统中一个开源的压缩工具,用于压缩和解压缩文件。它基于DEFLATE算法,广泛应用于文件压缩、备份和数据传输。gzip生成的文件通常带有.gz后缀,压缩效率...

Linux 必备的20个核心知识点(linux内核知识点)

学习和使用Linux所必备的20个核心知识点。这些知识点涵盖了从基础操作到系统管理和网络概念,是构建扎实Linux技能的基础。Linux必备的20个知识点1.Linux文件系统层级标...

谷歌 ChromeOS 已支持 7z、iso、tar 文件格式

IT之家6月21日消息,谷歌ChromeOS在管理文件方面进行了改进,新增了对7z、iso和tar等格式的支持。从5月的ChromeOS101更新开始,ChromeOS...

如何在 Linux 中提取 Tar Bz2 文件?

在深入解压方法之前,我们先来了解.tar.bz2文件的本质。.tar.bz2是一种组合文件格式,包含两个步骤:Tar(TapeArchive):tar是一种归档工具,用于将多个文件或目录打包...

如何在 CentOS 7/8 上安装 Kitematic Docker 管理器

Kitematic是一款流行的Docker图形界面管理平台,适用于Ubuntu、macOS和Windows操作系统。然而,其他发行版(如CentOS、OpenSUSE、Fedora、R...

Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!

之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...

爬虫搞崩网站后,程序员自制“Zip炸弹”反击,6刀服务器成功扛住4.6万请求

在这个爬虫横行的时代,越来越多开发者深受其害:有人怒斥OpenAI的爬虫疯狂“偷”数据,7人团队十年心血的网站一夜崩溃;也有人被爬虫逼到极限,最后只好封掉整个巴西的访问才勉强止血。但本文作者却走...

Ubuntu 操作系统常用命令详解(ubuntu必学的60个命令)

UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...

Linux面板8.0.54 测试版-已上线(linux主机面板)

Linux面板8.0.54测试版【增加】[网站]Java项目新增刷新列表按钮【增加】[网站]PHP项目-Apache-服务新增守护进程功能【增加】[网站]Python项目创建/删除网站时新增同时创建...

开源三剑客——构建私有云世界的基石

公共云原生的浪潮正在席卷这个世界,亚马逊AWS、谷歌GCP和微软的Azure年收入增长超过了30%,越来越多的公司和个人开始将自己的服务部署到云环境中,大型数据中心的规模经济带来了成本的降低,可以在保...

2.2k star,一款业界领先的私有云+在线文档管理系统

简介kodbox可道云(原KodExplorer)是业内领先的企业私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品...