1.前言
最近我们组一直在举办读书角活动,我想每个程序员都知道这本书。到了一天结束时,我内心的知识变得模糊了。从之前浏览过的JDK发展史和JVM虚拟机家族入手,这次查阅了相关资料,收集了JDK各个版本演化过程中发生的一些趣闻。它很有意思。下面对JDK的发展历史进行概述和分享。
2.JDK各版本特性及趣闻
JDK版本的演变以及每个版本的功能 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 供应商和容器等相关数据。
目前市场上超过56% 的应用程序使用JDK 11。相比之下,Java 8 使用率已从2020 年的84% 下降到如今的32% 左右。在过去的三年里,我在大多数公司都使用过它。您已升级到两个LTS 版本:JDK 11 或JDK 17。
JDK厂商中,亚马逊这两年的增长比较强劲,从22%上升到31%。这是目前市场上所有JDK厂商中比例最高的。
4.总结
好的。上面是对所有以前的JDK版本和相关功能的简要介绍,我首先创建了每个版本功能的思维导图并包含了详细的介绍,但我将在一篇文章中总结它们。看起来太多余了,但事实上,我们现在使用的JDK仍然是JDK8,但是前段时间通过研究JDK,我还了解了JDK9中的模块化和JDK19中的虚拟线程,并给出了一个我使用的工作演示。以验证使用情况。相关分析将在后续文章中介绍。
ps:文末附脑图照片一张~
作者:京东科技宋慧超
来源:京东云开发者社区转载请注明出处。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。