java进化史2 java序列化
yuyutoo 2024-10-23 16:40 23 浏览 0 评论
目前来看,使用量最多的三个版本应该是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
相关推荐
- Python操作Word文档神器:python-docx库从入门到精通
-
Python操作Word文档神器:python-docx库从入门到精通动动小手,点击关注...
- Python 函数调用从入门到精通:超详细定义解析与实战指南 附案例
-
一、函数基础:定义与调用的核心逻辑定义:函数是将重复或相关的代码块封装成可复用的单元,通过函数名和参数实现特定功能。它是Python模块化编程的基础,能提高代码复用性和可读性。定义语法:...
- 等这么长时间Python背记手册终于来了,入门到精通(视频400集)
-
本文毫无套路!真诚分享!前言:无论是学习任何一门语言,基础知识一定要扎实,基础功非常的重要,找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路,你的进步速度也会快很多,无论我们学习的目的是什么,...
- 图解Python编程:从入门到精通系列教程(附全套速查表)
-
引言本系列教程展开讲解Python编程语言,Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。Python生态丰富,库(模块)极其丰富,这使...
- Python入门教程(非常详细)从零基础入门到精通,看完这一篇就够
-
本书是Python经典实例解析,采用基于实例的方法编写,每个实例都会解决具体的问题和难题。主要内容有:数字、字符串和元组,语句与语法,函数定义,列表、集、字典,用户输入和输出等内置数据结构,类和对象,...
- Python函数全解析:从入门到精通,一文搞定!
-
1.为什么要用函数?函数的作用:封装代码,提高复用性,减少重复,提高可读性。...
- Python中的单例模式:从入门到精通
-
Python中的单例模式:从入门到精通引言单例模式是一种常用的软件设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁创建和销毁的对象,比如日志对象、线程池、缓存等...
- 【Python王者归来】手把手教你,Python从入门到精通!
-
用800个程序实例、5万行代码手把手教你,Python从入门到精通!...
- Python从零基础入门到精通:一个月就够了
-
如果想从零基础到入门,能够全职学习(自学),那么一个月足够了。...
- Python 从入门到精通:一个月就够了
-
要知道,一个月是一段很长的时间。如果每天坚持用6-7小时来做一件事,你会有意想不到的收获。作为初学者,第一个月的月目标应该是这样的:熟悉基本概念(变量,条件,列表,循环,函数)练习超过30个编...
- Python零基础到精通,这8个入门技巧让你少走弯路,7天速通编程!
-
Python学习就像玩积木,从最基础的块开始,一步步搭建出复杂的作品。我记得刚开始学Python时也是一头雾水,走了不少弯路。现在回头看,其实掌握几个核心概念,就能快速入门这门编程语言。来聊聊怎么用最...
- 神仙级python入门教程(非常详细),从0到精通,从看这篇开始!
-
python入门虽然简单,很多新手依然卡在基础安装阶段,大部分教程对一些基础内容都是一带而过,好多新手朋友,对一些基础知识常常一知半解,需要在网上查询很久。...
- Python类从入门到精通,一篇就够!
-
一、Python类是什么?大家在生活中应该都见过汽车吧,每一辆真实存在、能在路上跑的汽车,都可以看作是一个“对象”。那这些汽车是怎么生产出来的呢?其实,在生产之前,汽车公司都会先设计一个详细的蓝图...
- 学习Python从入门到精通:30天足够了,这才是python基础的天花板
-
当年2w买的全套python教程用不着了,现在送给有缘人,不要钱,一个月教你从入门到精通1、本套视频共487集,本套视频共分4季...
- 30天Python 入门到精通(3天学会python)
-
以下是一个为期30天的Python入门到精通学习课程,专为零基础新手设计。课程从基础语法开始,逐步深入到面向对象编程、数据处理,最后实现运行简单的大语言模型(如基于HuggingFace...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)