🎈个人公众号:🎈 :✨✨✨ 可为编程✨ 🍟🍟
🔑个人信条:🔑 为与不为皆为可为🌵
🍉本篇简介:🍉 本篇探讨了Java语言的历史发展和未来方向,如有出入还望指正。关注公众号【可为编程】回复【面试】领取年度面试题!!!
Java 经过近 30 年的发展,您可能会认为该语言会出现一些磨损的迹象,但事实并非如此。2022 年的 Java 并不是一种正在衰落的语言,而是一种为软件开发的蓬勃发展的未来做好准备的语言,这种永远流行的语言远未消亡,它正在与时俱进,为未来做好准备。
无论你看什么排名系统,无论是 TIOBE 指数、编程语言流行度指数、RedMonk 的两年一度的语言排名,还是 GitHub 的年度State of the Octoverse,Java 在发布后不久就一直稳居前三语言之列。1995 年。然而,随着时间的推移,听听开发人员群体的一般闲言碎语,您可能会认为 Java 实际上正处于一个巨大的衰落时期,甚至濒临死亡。仔细看看其中一些受欢迎程度的数字,您可能会说 Java 已经慢慢地将市场份额让给了它的语言竞争对手,这是它即将消亡的另一个明显迹象。一些支持者可能会争辩说,只是不断有更多的语言出现——因此,蛋糕会变大,而碎片会变小。尽管如此:印象很重要。
虽然 Java 在其早期发展过程中可能遇到了一些问题,但如今该语言及其更大的生态系统已经加快步伐,以各种方式满足未来的需求。事实上,它从未真正离开过任何地方:Amazon、Google、Netflix、Pinterest、Spotify、Square 和 Zoom 等公司都在其庞大的代码库中使用了 Java。更不用说过去十年中许多大规模数据基础设施都是由 Java 提供支持的,该语言是 Apache Hadoop、Kafka 和 Spark 等的支柱。你可以随意宣布它再次消亡,但我们现在看到的 Java 有点复兴了;最近谨慎地认为它无法满足这些未来用例的语言的复兴。
也就是说,Java可以用LL Cool J不朽的话来形容:“不要称之为复出,我在这里已经很多年了,我在摇滚我的同龄人,让傻瓜们感到恐惧。”
关注公众号【可为编程】回复【面试】领取年度最新面试题!!!
对Java多年的不满
Java 于 1995 年首次出现,承诺具有“一次编写,随处运行”(WORA) 的能力,这一特性使其在与当时占主导地位的、依赖于平台的语言(如 C 和 C++)的竞争中脱颖而出。推出后不久,它就通过 Java 小程序进入了 Web 浏览器,开发人员突然拥有了一种跨越 Apple 与 PC 战线以及蓬勃发展的万维网的语言。虽然 1995 年 PHP、Ruby 和 Javascript 也发布了,但没有人能体验到 Java 迅速流行起来。
在短短两年内,Java 的受欢迎程度排名第三,仅次于 C 和 C++。到 1998 年,它超过了 C++,并在 2001 年超越 C 成为第一。在六年的时间里,Java 占领了软件开发领域。尽管这一地位将持续十多年,但在 Java 世界中并非一切都如此。
EPI-USE Labs 的首席解决方案架构师Andrich van Wyk回忆起 Java 编程语言 (JPL) 的发展停滞不前的时期,尽管它占据主导地位,但似乎还存在问题。他说,最低点出现在 2009 年左右,当时 Java 6 已经问世近三年了,而 Java 7 距离发布还有两年的时间。当 Java 7 终于到来时,van Wyk 回忆道,这是“经过五年开发的一个相对平庸的版本”,并将当时的情况描述为“开发人员渴望更现代的语言功能、更简洁的代码和新的编程范例”。
这些愿望的证据无处不在:Ruby 的 Rails 框架可能正处于其最初炒作周期的顶峰,而 Node.js 才刚刚出现,两者都体现了诸如代码简洁、快速原型设计和用于快速构建现代应用程序的库等功能。网络应用程序。换句话说,它们有很多 Java 所没有的东西,至少在当时是这样。
“所有这些东西后来都可以通过现代版本和 Spring Boot 等框架在 Java 中实现,但我们必须等到 2014 年 Java 8 的发布,复兴才开始,”van Wyk 回忆道。“Java 6 和 8 之间的近十年时间就是问题所在。”
如果说Java有一个濒临死亡的时刻的话,那就是那时了。对于 Java 来说幸运的是,公司和开发人员都全力以赴地使用 Java,并且它在许多组织中都根深蒂固。即使许多用户越来越不满意并且该语言的创新已经停滞,Java 仍然提供性能以及大量的库和工具。也许它从未完全兑现“一次编写,随处运行”的承诺,但它提供了一种高性能、内存安全的语言,非常适合互联网基础设施和大规模应用程序。
尽管如此,2014 年 Java 8 和 Spring Boot 的推出还是给 Java 生态带来了一股新鲜空气,并开启了一段复兴时期。Spring Boot 是十年前推出的流行 Spring 框架的继承者,最终帮助减少了 Java 众所周知的一些冗长内容,并且 Java 8 引入了开发人员一直焦急等待的许多功能,例如日期和时间 API 以及更多功能。Lambda 表达式的预期到来。
在六年的时间里,Java 占领了软件开发领域。尽管这一地位将持续十多年,但在 Java 世界中并非一切都如此。
关注公众号【可为编程】回复【面试】领取2023年最新面试题!!!
转折点
虽然 van Wyk 指出 2014 年是 Java 的一个重大转折点,但Eclipse 基金会执行董事Mike Milinkovich指出另外两个时刻也很关键。首先也是最重要的,随着 2018 年 Java SE 10 的发布,Java 的发布节奏发生了变化,确保每六个月发布一个新版本的 Java,而不是之前通常长达数年的时间范围。
“Java 现在正在与许多快速发展的平台竞争,”Oracle 产品经理Dalibor Topić说。“因此,它还必须开始更快地前进,最大限度地减少 Java 用户和开发人员等待新版本的痛苦,同时以惯用的高品质交付每个新的 Java 版本。”
通过致力于定期发布节奏,Java 加入了许多现代语言的行列。Ruby、.NET、Python 和 Javascript 都采用每年发布一次的节奏,而 Go 每六个月发布一个新版本,Rust 每六周发布一个新的稳定版本。凭借六个月的节奏,Java 功能可以更快地发布,并且在未准备就绪时更容易推迟,因为等待将不再是不确定的。范威克说,喷气推进实验室的创新立即得到改善。
“随着 Java 9 的出现以及 2018 年左右发布节奏的加快,Java 确实取得了长足的进步,”他说。“规模较小但频率更高的发布确实运作良好。”
与此同时,Milinkovich 指出 Oracle Java 开发工具包 (JDK) 的变化给 Java 开发人员和在生产或商业目的中运行 Java 应用程序的公司带来了巨大的影响。Oracle 于 2017 年首次宣布并于 2019 年 4 月生效,要求这些用户购买年度订阅才能继续接收 Oracle Java 平台标准版 (Java SE) 产品、Oracle JDK 8 和 11 的安全补丁。Java 的长期支持实际上是免费的。作为企业,您可以在 Java 上运行应用程序,而不必频繁地向前移动版本。这种现状发生了变化,迫使 Java 用户要么每六个月迁移一次,要么向 Oracle 或其他公司寻求商业支持许可。”Milinkovich 解释道。
Java 生态系统非但没有阻碍创新,反而蓬勃发展。这一变化促使亚马逊、微软、IBM、阿里云和华为等众多云提供商提供自己的经过技术兼容性套件 (TCK)测试和支持的 OpenJDK 版本作为回应。第一个回应是伦敦 Java 用户组发布的AdoptOpenJDK 。
伦敦 Java 用户组的负责人Martijn Verburg表示,该组首次发布 AdoptOpenJDK 是因为他们不确定开发人员在 Oracle 对 OpenJDK 的更改下拥有哪些使用权利。“他们希望确保为开发人员永久提供免费(如啤酒中)和免费(如使用中)的 OpenJDK 二进制文件,”Verburg 说。Verburg 解释说,AdoptOpenJDK 是一个“多利益相关者项目”,最终“转移到 Eclipse 基金会(称为 Adoptium),以在软件基金会中提供对免费二进制文件 (Temurin) 的访问权限。”
Milinkovich 表示,OpenJDK 的变化“鼓励多家公司参与成为自己的 Java 平台提供商的游戏。生态系统中供应商数量的增长有助于 Java 的多样性和可持续性,因为许多各方被迫投资于生产高质量的 Java 运行时。”
关注公众号【可为编程】回复【面试】领取年度最新面试题!!!
Java 不那么缓慢而稳定地迈向未来
Java 经过近 30 年的发展,您可能会认为该语言会出现一些磨损的迹象,但事实并非如此。2022 年的 Java 并不是一种正在衰落的语言,而是一种为软件开发的蓬勃发展的未来做好准备的语言。当 Java 在 2010 年代中期再次开始创新时,云原生开发的阴影已经笼罩在头顶上,现在它越来越成为默认选项,特别是对于大规模运行的企业和软件而言。VMware 软件工程副总裁 Ryan Morgan表示,虽然 Go 等其他语言在设计时就考虑到了云计算,但 Java 却常常被认为体积庞大。
“Java 一直存在阴影,人们认为‘它臃肿、重量级、不是云原生、不是为云构建的、它不允许你在公共云中可能想要的密度’, ”摩根说。“为了真正消除这些神话,我们做了很多工作。”
就 VMware 而言,它正致力于通过即将发布的 Spring Framework 6 和 Spring Boot 3 来改进 Java 的云原生特性,Morgan 将其称为 Spring 的“第三幕”。使用GraalVM构建的 Spring 将提供“Spring 内的完整本机支持,这意味着您将能够采用任何 Spring 应用程序并将其编译为占用空间和启动时间更小的本机二进制文件。这对于您可能在边缘看到的各种其他工作负载确实非常有益。”
Spring 并不是唯一一个这样做的人。红帽的Quarkus和Micronaut项目都在帮助推动 Java 进入一些人以前认为 Java 不可能实现的领域:进入边缘并进入微服务架构,在这些领域,小尺寸和快速启动时间可能是关键。同样,Loom 项目的目标是通过在 JVM(而不是操作系统内核)中实现线程,将轻量级线程引入 Java 平台。“这代表着 Java 支持并发能力的显着提高,使该平台更适合当今的许多云规模应用程序,”Milinkovich 说道。“借助 Project Loom,用 Java 编写高度并发的应用程序对于开发人员来说将变得更加简单,并且比现在更具可扩展性。”
对于 Milinkovich 来说,他认为 Quarkus、Micronaut、Loom 和 Adoptium 等项目将 Java 引入下一代开发人员。
“Java 已经存在 25 年了,我相信它还会存在 25 年。我认为它正在经历一场复兴,无论是从技术角度来看,还是从生态系统角度来看,同样重要。”Milinkovich 说道。“开发人员要记住的一件事是,对 Java 技能的需求量非常非常大。这确实有助于吸引开发人员的持续支持,我认为您会看到 Java 在可预见的未来将继续保持在最受欢迎的语言和平台的前三名之列。”
欢迎感兴趣的小伙伴一起探讨学习知识,以上是个人的一些总结分享,如有错误的地方望各位留言指出,十分感谢。觉得有用的话别忘点赞、收藏、关注,手留余香! 😗 😗 😗
欢迎大家关注【可为编程】,成长,进步,编程,技术、掌握更多知识!