找回密码
 立即注册
查看: 131|回复: 0

Java正在卷土重来?别开玩笑了,它明明一直很火

[复制链接]

3

主题

0

回帖

17

积分

新手上路

积分
17
发表于 2022-9-9 22:52:18 | 显示全部楼层 |阅读模式


永远流行的语言远未消亡,它正在加速发展并为未来做好了准备。
“Java 不行了?”“Java 统治地位已不复存在?”——作为一门历史悠久的经典语言,在新语言层出不穷的时代,Java 似乎隔三差五就要面对类似的消极评价。随意听听近来开发人员们的流言蜚语,你可能会认为 Java 正处于一个大的衰退期,甚至到了垂死挣扎的边缘。再仔细看那些人气数据,你也会认为 Java 已经慢慢地将市场份额拱手让给了它的竞争对手。
但一些反对“Java 消亡论”的支持者可能会反驳说,是因为有越来越多的语言出现,所以大家能分到的蛋糕也越来越小。

事实上,无论你看的是哪家排名,比如 TIOBE 指数、编程语言流行指数、RedMonk 的双年度语言排名,又或者是 GitHub 的年度 Octoverse 状态,你会发现 Java 自 1995 年发布以来一直都跻身前三名。

本文作者 Mike Melanson 认为,虽然早期 Java 的发展遇到过一些小问题,但如今这门语言及其更大的生态系统已经加快发展步伐,以各种方式来满足未来的需求。同时,他强调说,Java 一直都没有离开过:亚马逊、谷歌、Netflix、Pinterest、Spotify、Square 和 Zoom 等公司都在其庞大的代码库中使用了 Java。更不用说在过去的十年中,许多大型数据基础设施都是由 Java 来提供支持的,这门语言可以说是 Apache Hadoop、Kafka 和 Spark 等公司的支柱。

本文中,Mike 试图复盘 Java 的一些重要发展节点及梳理现状,从而佐证其观点:Java 正在复兴。同时,“别说这是所谓的‘卷土重来’,Java 已经在这里呆很多年了。”

那些年对 Java 的不满
Java 于 1995 年首次亮相,并承诺能够“一次编写,随处运行”(WORA),这一特性使它在当时占主导地位且依赖平台的语言(如 C 和 C++)中脱颖而出。在推出后不久,它就通过 Java 小程序(applet)进入了 Web 浏览器,开发者们就突然有了一种可以跨越苹果与 PC 战线的语言,并进入到蓬勃发展的万维网。虽然在 1995 年还诞生了 PHP、Ruby 和 Javascript,但它们都没有像 Java 那样迅速流行起来。

接下来短短两年时间,Java 的受欢迎程度就排到了第三名,仅次于 C 和 C++。到 1998 年,它超过了 C++,并于 2001 年超过 C,攀升至第一宝座。在六年的时间里,Java 主导了软件开发世界。虽然这一地位持续了十多年,但在 Java 世界中,并非所有人都对它感到满意。

EPI-USE Labs 的首席解决方案架构师 Andrich van Wyk 回忆起 Java 语言发展停滞不前的时期,那时候尽管它处于主导地位,但也受到了质疑。低谷出现在 2009 年左右,当时 Java 6 已经推出将近三年,而 Java 7 还差两年才能问世。当 Java 7 最终问世时,van Wyk 回忆说,它“虽然经过了 5 年的开发,但它还是一个相对平庸的版本”。

他将当时描述为“开发人员渴望更现代的语言功能、更少的冗长代码、以及新的编程范式”的时代。Ruby 的 Rails 框架可能正处于其最初的操作周期的顶峰,而 Node.js 才刚刚出现,两者都体现了代码简洁、快速原型化、以及可用于快速构建现代 Web 应用程序的库等特性。换句话说,它们有许多 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 表达式。

转折点
虽然 van Wyk 指出 2014 年是 Java 的一个重要转折点,但 Eclipse 基金会执行董事 Mike Milinkovich 指出了另外的两个关键时刻。首先是 2018 年,随着 Java SE 10 的发布,Java 的发布节奏就发生了变化,确保每六个月发布一个新版本而不是像之前那样长达数年的时间。

“Java 现在正与许多快速发展的平台竞争,”甲骨文的产品经理 Dalibor Topić说。“因此,它还必须得开始更快地前进,最大限度地减少 Java 用户和开发人员等待新版本的痛苦,同时以惯有的高质量水平交付每个新的 Java 版本。”

通过致力于定期发布的节奏,Java 加入到了许多现代语言的行列。Ruby、.NET、Python 和 Javascript 都采用一年一次的发布节奏,而 Go 每六个月发布一个新版本,Rust 每六周发布一个新的稳定版本。有了 6 个月的节奏,Java 的功能可以更早地被推出,并且在没有准备好时可以更容易地推迟发布,因为等待不再是不确定事件了。

“在 2018 年前后,随着 Java 9 和发布周期的增加,Java 真正迎来了它的高潮,”他说。“更小但更频繁的版本发布确实效果不错。”

与此同时,Milinkovich 指出,Oracle Java 开发工具包(JDK)的变化,对 Java 开发人员和在生产或商业用途中运行 Java 应用的公司带来了巨大的影响。

甲骨文在 2017 年首次宣布,要求这些用户购买年度订阅服务(2019 年 4 月生效),以继续获得 Oracle Java 平台标准版(Java SE)产品、Oracle JDK 8 和 11 的安全补丁。

“过去多年来,对 Java 的长期支持实际上是免费的。作为一家企业,你可以在 Java 上运行你的应用程序,而不必频繁地升级版本。这种现状被变化了,迫使 Java 用户要么每六个月迁移一次,要么从甲骨文或其他公司那里寻求商业支持许可证,”Milinkovich 解释道。

这不仅没有阻碍创新,反而使 Java 生态系统更加繁荣。这一变化刺激了许多云计算供应商,如亚马逊、微软、IBM、阿里巴巴云和华为,提供他们的技术兼容性套件(Technology Compatibility Kit,TCK)以测试和支持 OpenJDK 版本作为回应。首个回应来自伦敦 Java 用户组(Java User Group)发布的 AdoptOpenJDK。

伦敦 Java 用户组的负责人 Martijn Verburg 表示,该组首先发布了 AdoptOpenJDK 是因为他们不确定在甲骨文围绕 OpenJDK 的变化下,开发者的使用权是什么。Verburg 说:“他们想确保有一个永久免费的 OpenJDK 二进制文件供开发者永久使用。”Verburg 解释道。

AdoptOpenJDK 是一个“多方利益相关者项目”,最终“转移给了 Eclipse 基金会(作为 Adoptium),以便在软件基金会中实现对自由二进制文件(Temurin)的访问。”

Milinkovich 说,OpenJDK 的变化“鼓励了多家公司加入成为自己的 Java 平台供应商的游戏。生态系统中供应商数量的增长对 Java 的多样性和可持续性是有帮助的,因为许多相关方都被迫投资于生产高质量的 Java 运行时,而不是像以前那样。”

图片

来自 JVM 生态系统的推动
再次回顾过去,我们还可以指出,在 Java 虚拟机(JVM)上运行的两种语言 Kotlin 和 Scala 是 Java 所谓复兴的参与者。JVM 可以运行任何 Java 字节码,这是 Java“一次编写,随处运行”承诺的关键部分。Scala 和 Kotlin 都是专门为编译成 Java 字节码并在 JVM 上运行而设计的。Scala 首次出现于 2004 年,就在 Java 在创新上陷入困境之前,Kotlin 则是在 2011 年出现,正好处于同一时期的中期。

Kotlin 和 Scala 可以利用 JVM 的稳定性和普遍性,同时也享有做 Java 根本无法承担的事情的自由。与此同时,对于任何一种语言来说,产生的风险都可以作为一个积极的证据,证明该特性可以在 JVM 上按预期运行,且不会导致系统崩溃。对于 Java 开发人员来说,JVM 上的其他语言在提供 Java 兼容性的同时,也许还能解决他们对 Java 缺陷的担忧。像 Kotlin 和 Scala 这样的语言不仅是独立的语言,有其自身的优势和用例,而且它们为开发人员提供了一种方式来熟悉 Java 之外的概念,这些概念最终可能会被引入到 JPL 中。

“在 JVM 上使用其他语言是一种非常好的方法,可以看出哪些新颖的想法可以在各自的社区中得到关注,而不必立即尝试将它们嵌入到 Java 中。”Topić说。“相反,我们可以挑选获胜的想法,并与学术界、工业界和其他开源项目的合作者公开合作,逐步调整和完善这些想法,使它们真正适用于 Java 本身,将其作为语言和库的功能浮出水面,最终让人觉得它们是‘原生’于 Java 的。”



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|粤嵌技术交流空间

GMT+8, 2025-7-7 16:02 , Processed in 0.699574 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表