首页 > 自考资讯 > 高考百科

聊聊JDK1.0到JDK20的那些事儿(jdk1.8.0_271)

小条 2024-06-27

1.前言

最近我们组一直在举办读书角活动,我想每个程序员都知道这本书。到了一天结束时,我内心的知识变得模糊了。从之前浏览过的JDK发展史和JVM虚拟机家族入手,这次查阅了相关资料,收集了JDK各个版本演化过程中发生的一些趣闻。它很有意思。下面对JDK的发展历史进行概述和分享。

480d464e57b243c196a193f1c933a411~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720053447&x-signature=%2FEr378u%2BruQo6UHyJ4ipUZRGuF4%3D

2.JDK各版本特性及趣闻

JDK版本的演变以及每个版本的功能0bd50e19e6b148dea83a381a103d790e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720053447&x-signature=IsKxVNaH1cEFC%2Bod0GA8OeVCWfI%3D JDK 1.0(1996):

包含Java 语言、Java 类库和Java 虚拟机。支持图形用户界面(GUI) 和数据库连接(JDBC) 等功能。

“Oak”是Java语言的前身。 “Oak”这个名字被其他公司使用,因此Java 的创建者Sun 决定在1995 年将其更名为“Java”。 据说这个名字来源于咖啡店。当时在设计Java语言时,创始团队的成员去一家咖啡店买咖啡,注意到咖啡店的名字是“Java Coffee”,就决定用“Java”作为新名字。到。

JDK 1.1(1997-2):

添加了内部类、JavaBeans、远程方法调用(RMI)等功能。

JDK 1.2/Java 2 (1998-12):

引入了Swing组件、反射机制和动态代理、集合框架、Java 2D和Java 3D图形等功能。

这是Java SE第一个具有真正商业价值的版本。此版本引入了Java 命名空间等功能,使您可以更好地组织和管理Java 应用程序。现阶段存在三种虚拟机共存:Classic VM、HotSpot VM、Exact VM,其中HotSpot诞生于1999年4月。

JDK 1.3 (2000-5):

添加了Java 平台功能、底层类库、增强的AWT 和Swing 用户界面等等。

当时,Sun面临着来自微软的严峻挑战,微软推出了.NET Framework,试图推翻Java的地位。因此,Sun决定加速Java的开发,使其更具竞争力。

JDK 1.4LST (2002-2):

引入Java 管理扩展(JMX)、称为NIO(新I/O)的新I/O API、断言、内置XML 解析器(SAX 和DOM)以及其他功能。

这是Java SE 最全面的版本之一。该版本引入了NIO 和XML 解析器等新功能,以提高Java 程序的性能和可扩展性。

JDK 5.0/Java 1.5 (2004-9):

引入了泛型、枚举、自动装箱和拆箱、注释和并发编程API 等功能。

这是Java SE 功能最丰富的版本之一。该版本引入了泛型、类型安全枚举、自动装箱/拆箱和注释等新功能,使编写Java 程序更加简洁和简化。

从这个版本开始,Sun 放弃了不起眼的“JDK 1.x”命名法,并将产品版本号更改为“JDK x”。 Sun这样做的原因是为了避免版本号的混乱,以及更好地传达Java平台的快速迭代和更新。从JDK 5.0开始,Java平台的发布计划就是每年发布一个版本。采用了新的命名方案。

JDK 6 (2006-12):

引入了JDBC 4.0 API、Java监控和管理控制台(JConsole)、增加了对动态语言的支持、改进了GUI工具包(Swing)、改进了Java Web Start、提高了性能和安全性等功能。

JDK的更新无法保持每两年发布一次大版本的发展速度,导致JDK 6的生命周期异常漫长。 Java 6 广泛应用于银行和其他系统有几个可能的原因。

稳定性高:经过多年的实践和测试,Java 6是一个比较成熟稳定的版本,满足金融行业的稳定性要求。 Java 7和Java 8等较新的版本有更多的功能和优化,但这些功能可能不是所有银行都需要的,并且新版本稳定性的验证和测试需要花费一定的时间。

可控性强:银行等系统对软件可控性要求非常高,必须保证软件运行稳定,具有良好的可维护性。在这方面,Java 6的新功能和更新相对较少,使其相对易于维护和控制。

成本考虑:对于一些大型组织来说,升级到最新的Java 版本可能成本高昂。例如,现有代码或应用程序可能需要修改、重新测试或审核。此外,许多旧系统仍在运行Java 6,升级到新版本需要重新评估风险和收益,以及额外的成本和投资。

换句话说,Java 6由于其稳定性、可控性和成本,正在更多地被应用在银行等系统中。但随着时间的推移和新版本的推出,银行等系统也需要逐步升级到更高级的Java版本,以满足业务需求并提高运营效率。

此外,虽然Java 7 和Java 8 带来了更多新功能和优化,但银行等系统升级到新版本需要大量代码重写、测试和安全性重新评估,原因之一是需要大量成本。为什么银行和其他公司使用Java 6 作为开发平台。

JDK 7 (2011-7):

引入了诸如switch 语句的字符串表示形式、二进制文字和下划线数字表示以及Try with Resources 语句等功能。

在JDK 7的开发过程中,Sun深陷技术和商业竞争的泥潭,公司股票市值跌至峰值的3%,导致JDK 7的开发无法按计划进行。为了尽快解决JDK 7长时间延迟的问题,Oracle在收购Sun后不久就宣布推出“B计划”。这大大降低了JDK 7 的规划目标,以确保JDK 7 的正式版本。预定发布日期:2011 年7 月28 日。

JDK 8LST (2014-3):

引入了Lambda 表达式、流API、日期/时间API、接口默认方法、方法引用、迭代注释、可选类、Nashorn JavaScript 引擎等。

这是Java SE最重要的版本之一,引入了lambda表达式、流API、默认方法和DateTime API等新功能,极大地提高了Java程序的编写和开发效率。 它原定于2013 年9 月发布,但最终被推迟到2014 年3 月18 日。从JDK 8 开始,Oracle 使用JEP(JDK 增强提案)来帮助定义和管理新JDK 版本中的功能。

JDK 9 (2017-9):

引入模块化系统、JShell、HTTP/2 客户端和服务器端API 等功能。

发布节奏的变化:今后,JDK 将在每年的3 月和9 月发布主要版本。六个JDK 版本中的每一个仅指定一个长期支持(LTS) 版本。 JDK 将获得三年的支持和更新,其中JDK 8 和JDK 11 为LTS 版本。 接下来是JDK 17,将于2021 年发布。

JDK 10 (2018-3):

引入了局部变量的类型推断、Javadoc 和其他功能改进。

2018年3月27日,法院裁定谷歌应赔偿甲骨文总计88亿美元。要知道,2009年,甲骨文仅仅花费了74亿美元就收购了Sun。收购完成后,Sun 立即投入使用。该专利将谷歌告上法庭,但经过甲骨文法律部门的多次操作,诉讼的赔偿使得Sun的收购几乎是免费的。

JDK 11LST (2018-9):

引入了HTTP客户端API、基于Nest的访问控制、飞行记录器、Epsilon GC以及改进的ZGC(Z垃圾收集器)等功能。

这是Java SE中长期支持的最新版本,引入了HTTP客户端、Lambda参数的局部变量语法、ZGC等新功能,具有显着的实用价值。 2018 年10 月,最后一届JavaOne2018 在旧金山举行,标志着1996 年与Java 一起诞生和成长的年度开发者盛会落下帷幕。此外,Java Mission Control (JMC) 是Oracle 开发的一个用于监视、管理和分析Java 应用程序的工具,该开发团队也于6 月份被Oracle 解散。

JDK 12(2019 年3 月):

引入了Switch 式预览功能和微基准测试套件等功能。

2019 年2 月,JDK 12 发布前夕,Oracle 正如之前宣布的那样,将在六个月后放弃对OpenJDK 之前版本的维护,RedHat 也将从Oracle 的维护中接管OpenJDK 8 和OpenJDK 11 的管理。做过。责任。

JDK 13(2019 年9 月):

引入了文本块预览功能和动态CDS存档等功能。

JDK 14LST(2020 年3 月):

引入了实例模式匹配预览功能和非易失性内存支持等功能。

JDK 15(2020 年9 月):

引入了屏蔽类预览功能和Edwards-Curve 数字签名算法等功能。

JDK 16(2021 年3 月):

引入记录类预览功能、矢量API等。

JDK 17LST(2021 年9 月):

长期支持版本,引入了模式匹配和密封类等正式功能。

JDK 18(2022 年3 月):

引入简单的Web 服务器,支持向Java API 文档添加代码片段,并将UTF-8 建立为Java API 的默认字符集。

JDK 19(2022 年9 月):

引入结构化并发API 以简化多线程编程并支持虚拟线程。

JDK 20LST(2023 年3 月):

介绍录音模式、开关模式匹配等。

3. 目前市场上JDK版本的使用情况

New Relic 最近发布了报告《深入理解JVM虚拟机》。该报告收集了数百万在线应用程序的数据,并统计了生产中最常用的JDK 版本、最受欢迎的JDK 供应商和容器等相关数据。

bdf4aa604d1a47039b47ba44b1cd09d8~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720053447&x-signature=%2FQcrjbP33xETnRv3vh7KOmCpP2I%3D 目前市场上超过56% 的应用程序使用JDK 11。相比之下,Java 8 使用率已从2020 年的84% 下降到如今的32% 左右。在过去的三年里,我在大多数公司都使用过它。您已升级到两个LTS 版本:JDK 11 或JDK 17。

92ac4a501b9b4833ad715a2bcce8ec0f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720053447&x-signature=qQe9j45DcbMDsXd8F2ib3iXm2k8%3D JDK厂商中,亚马逊这两年的增长比较强劲,从22%上升到31%。这是目前市场上所有JDK厂商中比例最高的。

4.总结

好的。上面是对所有以前的JDK版本和相关功能的简要介绍,我首先创建了每个版本功能的思维导图并包含了详细的介绍,但我将在一篇文章中总结它们。看起来太多余了,但事实上,我们现在使用的JDK仍然是JDK8,但是前段时间通过研究JDK,我还了解了JDK9中的模块化和JDK19中的虚拟线程,并给出了一个我使用的工作演示。以验证使用情况。相关分析将在后续文章中介绍。

ps:文末附脑图照片一张~

d29cfe1a6448490b9213a7b38e2ab836~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720053447&x-signature=Yi9lMCLTDnPF28eLDNyB9ooBxeo%3D 作者:京东科技宋慧超

来源:京东云开发者社区转载请注明出处。

版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢