Java 30周年!回顾其在移动、企业应用和云原生领域的贡献,JVM功不可没。开源生态如Spring Boot、OpenJDK功不可没。Java持续演进,拥抱泛型、lambda,同时保持向后兼容性。未来,Java将在GenAI领域面临挑战,Embabel等项目或助力其超越Python。
译自:Java at 30: Java Pioneers Look Back, Forward
作者:Darryl K Taft
Java 编程语言上个月庆祝了它的 30 岁生日。这种承诺让开发者“一次编写,随处运行”的语言不仅生存了下来,而且在三十年的技术进步中蓬勃发展。
从早期的手机到今天的云原生应用程序和新兴的 AI 格局,Java 已经证明了它的持久力,甚至超出了其创建者的预期。
我联系了行业资深人士、开发者、平台架构师和思想领袖,他们亲身见证并参与了 Java 的发展,以了解是什么让这种语言如此持久,以及未来面临的挑战和机遇。
Mike Milinkovich,Eclipse 基金会的执行董事,强调了该语言在多个领域的基础性贡献:“Java 迎来 30 岁生日是一个真正的里程碑。Java ME [Java Platform, Micro Edition] 定义了移动电话市场十多年,Java SE [Java Platform, Standard Edition] 为我们提供了无处不在的 Java 虚拟机 (JVM),Java EE [Java Platform, Enterprise Edition] 为一代人重新定义了企业应用程序开发。”
与此同时,JBoss(现在是 的一部分)的创始人,开源 Java 领域的先驱 Marc Fleury 吹捧了 Java 在现代计算基础设施中的根本作用:“Java,特别是开源 Java,已经成为网络基础设施的代名词。Java 是互联网管道不可分割的一部分。“一次编写,随处运行”和“网络就是计算机”的口号 [Sun Microsystems(Java 的创建者,被 Oracle 收购)的标语] 已经成为现实。”
实现这一成功的技术基础不容低估。Rod Johnson,Spring Framework 的创建者,指出 JVM 是一个基石。
“JVM 是一件了不起的软件。它强大而高效,运行着世界上大部分的程序,”他说。
“JVM 是一件了不起的软件。它强大而高效,运行着世界上大部分的程序。”
— Rod Johnson, Spring Framework 的创建者
Forrester 分析师 Andrew Cornwall 也表达了同样的观点,他指出“将 VM 与语言分离,允许其他语言,如 Groovy 和 Kotlin,以创新的方式使用 Java VM 和字节码。”
这些架构决策的实际影响可能最好由那些将整个职业生涯建立在该平台上的开发者来说明。
Mik Kersten,Mylyn 项目的创建者和 Tasktop(现在是 Planview 的一部分)的创始人,他的整个技术职业生涯都建立在 Java 之上,他强调了该平台的可扩展性优势。 “随着应用程序复杂性的增长,你会更早地转向 Java,根据我的经验,它实际上可以更好地扩展。”他从 AspectJ(Java 编程语言的 面向切面编程 (AOP) 扩展)以及他在 Xerox PARC 的研究到创立 Tasktop 的历程,说明了 Java 的持久力——即使在 Python 中进行 AI 应用程序的原型设计,“整个实现,生产实现,都是 Java,”Kersten 说。
此外,Intellyx 的分析师 Eric Newcomer 指出,Java 作为“第一种‘一次编写,随处运行’的语言”和“第一种广泛使用的面向对象语言”的先驱作用,为随后的企业采用奠定了基础,他说。
Java 的成功不仅仅在于技术优势,还在于在正确的时间出现在正确的地点。 Grady Booch,统一建模语言 (UML) 的创建者,以及 IBM Research 软件工程的首席科学家,告诉 The New Stack,Java “在完美风暴的背景下诞生:商业网络正在爆炸式增长;迫切需要更具表现力的网络体验;现有语言有点过于笨重。”
“[Java] 在完美风暴的背景下诞生:商业网络正在爆炸式增长;迫切需要更具表现力的网络体验;现有语言有点过于笨重。”
— Grady Booch, UML 的创建者
Forrester 的 Cornwall 扩展了这个时机优势。
“当它在 1995 年问世时,Java 带来了面向对象编程和自动内存管理,而没有强迫开发人员偏离熟悉的类 C 语法,”他说。“它与互联网一起成长,并且通过 J2EE [Java 2 Platform, Enterprise Edition],明确地针对企业。”
企业重点被证明至关重要。Newcomer 指出,“IBM(和其他公司)在 Java EE 上投入了大量资金,作为 CORBA [Common Object Request Broker Architecture] 的替代方案”,并且 “EE 的 servlet 引擎推动了应用服务器的普及,因为每个人都争先恐后地建立网站。”
然而,也许没有哪个观点比 xqizit 的 CEO Cameron Purdy 对 Java 可能最黑暗的时刻和随后的复活的描述更令人震惊。他说,当 Oracle 收购 Sun Microsystems 时,“Sun 公司总共有零工程师在 Java 平台上工作”。“关键安全漏洞的积压量巨大,其中一些已经在野外被积极利用。”
他说,接下来发生的事情简直是了不起的。
Purdy 补充说:“在接下来的 15 年里,该团队所做的事情简直令人惊叹。” “第一部分的工作是找到并修复无数的安全漏洞,这肯定是让人感到最糟糕的工作。” Oracle 不仅稳定了该平台,还实施了新的六个月发布节奏,使 Java 能够持续发展。
Purdy 说:“Oracle 不仅‘没有扼杀它’,而且实际上兑现了对 Java 平台进行负责任管理的承诺”,尽管他承认 Oracle 当时在开发者社区中的声誉褒贬不一,但他还是给予了应有的肯定。
Java 能够长期存在的核心在于它拥抱了开源原则。Milinkovich 强调了开源社区的关键作用。
“特别是 Apache 软件基金会需要被认可为许多伟大的 Java 项目的所在地,包括 Harmony(Android 的一个关键组件)、Jakarta 和 Tomcat。Eclipse 基金会贡献了诸如 Eclipse IDE 和 Jetty 等项目。”
他说,多年前,Sun Microsystems 创造了“创新发生在其他地方”这句话,并有目的地将 Java 建立为一个开放平台。“然后,当他们开源 Java 并创建 OpenJDK 项目时,他们进一步推动了这一点。该模型经受住了时间的考验,包括在收购和多次许可变更中幸存下来。”
此外,Milinkovich 补充说:“由于充满活力和创新的生态系统,包括 Android、Spring 和 Spring Boot 等关键要素,以及 Temurin 等多个 OpenJDK 发行版,Java 今天继续蓬勃发展。” “Jakarta EE 通过多次发布、供应商支持的大幅增加以及稳定的创新渠道,重新焕发了企业 Java 领域的活力。”
Spring Framework 的 Johnson 指出:“JVM 始终允许使用新语言。它比 Java 更大,反过来也有助于 Java。Java 社区已经产生了许多令人惊叹的开源软件,这有助于创造商业价值。”
事实上,本文中的人们能够围绕他们的开源企业 Java 项目进行构建以赚取大量资金,这一点变得显而易见。 例如,曾在 Sun Microsystems 工作的 Fleury 将他的开源 JBoss Java 应用服务器项目发展成一家公司 (JBoss),后来 Red Hat 以 3.5 亿美元的价格收购了该公司。Johnson 将 Spring Framework 发展成一家名为 SpringSource 的公司,后来 VMware 收购了该公司。Oracle 收购了 Purdy 的公司 Tangosol,以获得其基于 Java 的 Coherence 分布式缓存和内存数据网格,并让他担任开发高级副总裁。Kersten 利用他基于 Java 的 Mylyn 任务聚焦框架推出了 Tasktop,后来 Planview 收购了该公司。
与此同时,Java 最令人印象深刻的成就之一是它能够在保持与遗留代码兼容性的同时不断发展。
IDC 分析师 Arnal Dayaratna 总结了这一点。
“Java 提供了一种罕见的组合,包括运行时稳定性、强大的工具、广泛的开发者生态系统以及对向后兼容性的坚定承诺。它不断发展——拥抱泛型、lambda、模块化和虚拟线程——同时保持其生态系统的连贯性,”他说。
“Java 提供了一种罕见的组合,包括运行时稳定性、强大的工具、广泛的开发者生态系统以及对[向后兼容性]的坚定承诺。它不断发展——拥抱泛型、lambda、模块化和虚拟线程——同时保持其生态系统的连贯性。”
— Arnal Dayaratna, IDC 分析师
Kersten 称这是 Java 能够长期存在的关键因素。
“向后兼容性,在包括 Oracle 管理在内的所有管理下,都实现了惊人的向后兼容性。而且由于我们所有的应用程序都非常庞大且难以维护,因此这一点非常重要,”他说。
Kersten 将此与其他平台进行了对比:“当你不断更改事物时,客户很难真正处理这些向后兼容性问题,而 Java 已经做到了这一点,并坚持了下来,并信守了在这方面的承诺。”
Cornwall 也赞同这种观点。
“尽管语言进行了重大现代化改造,但 Java 在保持向后兼容性方面做得非常出色。许多在早期 Java 编译器上创建的类文件仍然可以在今天的 VM 上运行。”
Chris Richardson 是一位位于加利福尼亚州奥克兰市的软件架构顾问和 Java Champion,他有着略有不同的看法——尽管他曾是“前 Lisper”——但他对语言设计进步的总体步伐感到失望,但他承认“Java 在将象牙塔概念(例如,来自 Lisp 的概念),如垃圾回收,引入到“蓝领语言”中方面做得非常出色。在 Java 8 之前的停滞期之后,该语言不断发展。因此,虽然我对语言设计进步的总体步伐感到失望,但 Java 仍然是我首选的编程语言。”
创新和稳定性之间的平衡需要驾驭市场力量。Futurum Group 的分析师 Brad Shimmin 观察到,“长期成功取决于多种因素。首先,维护者能否足够快地推进该语言以跟上市场趋势,同时提供足够的向后兼容性以使客户满意——尤其是管理大型代码库的客户?”
然而,Cornwall 表示,这种成功也带来了一种认知挑战。
“如今,在开发者中,Java 被认为有点老旧,尽管语言进行了重大现代化改造。这主要是因为更大比例的 Java 开发是对现有系统进行例行维护,而不是全新开发。正如 COBOL 对于大型机一样,Java 现在是云业务的核心支柱,”他说。
“如今,在开发者中,Java 被认为有点老旧,尽管语言进行了重大现代化改造。这主要是因为更大比例的 Java 开发是对现有系统进行例行维护,而不是全新开发。正如 [COBOL] 对于大型机一样,Java 现在是云业务的核心支柱。”
— Andrew Cornwall, Forrester 分析师
随着 Java 进入第四个十年,它可能面临迄今为止最大的考验。 有新人警告说:“如果不是更大的话,该行业正在经历一场与 GenAI [生成式人工智能] 中的 Web 一样大的变革。对于 Java 来说,这将是一个巨大的考验(即,Java 是否能像其他语言一样适应 AI)。”
然而,Azul 的副 CTO Simon Ritter 告诉 The New Stack,Java 完全能够应对这一挑战,并且很可能 取代 Python 在 AI 开发中的地位。
尽管面临这一挑战,前景仍然乐观。Johnson 表示,他相信“未来是光明的。JVM 在下一波应用程序中将发挥重要作用:释放 GenAI 可以带来的商业价值。”
Eclipse 基金会的 Milinkovich 也对此表示乐观。
“展望 Java 的未来 30 年,我被我们在生态系统中不断看到的创新所鼓舞。我清楚地记得,随着新技术的出现,许多人预测 Java 会消亡。但 Java 在云原生计算领域继续蓬勃发展,我们还看到用 Java 编写的重要的人工智能相关项目。”
事实上,Johnson 已经启动了一个名为 Embabel 的革命性项目,这是一个用于 JVM 的代理框架。
在他的 博客文章 中,Johnson 承认了 Python 在 AI 开发中的强大功能,甚至问道:“为什么不直接用 Python 编写呢?” 他指出,“在过去的几年里,Python 一直是 AI 的主要语言。在这一点上,每个开发人员都需要精通 Python。我很高兴我精通。然而,AI 比 GenAI 广泛得多。Python 为更广泛的 AI 提供了一个很棒的生态系统,包括 TensorFlow、PyTorch 和许多其他库。”
然而,Johnson 宣称“世界上许多关键的业务逻辑都在 JVM 上运行,这是有充分理由的。GenAI 启用它是至关重要的。”
因此,“Embabel 是一个代理框架,最初是为 JVM 设计的,其目的不仅是为了赶上 Python 代理框架,而且是为了超越它们。”
“Embabel 是一个代理框架,最初用于 JVM,其目的不仅仅是赶上 Python 代理框架,而是超越它们。”
Rod Johnson,Spring Framework 的创建者
其他技术可以从 Java 三十年的历程中学到什么?
IDC 的 Dayaratna 概括了其本质:“这种在不破坏遗留代码的情况下进行现代化的能力使 Java 成为任务关键型应用程序不可或缺的一部分。很少有语言能与之媲美这种务实的弹性,”他说。
此外,Purdy 在庆祝 Java 复苏的同时,也令人清醒地提醒人们,即使是成功的平台也是脆弱的:“Java 的长寿从未得到保证”,但“Java 在过去十年中为这样一个成熟的平台和语言所提供的成果令人惊叹。”
在 Java 刚刚庆祝其 30 岁生日之际,它证明了开放治理、社区协作以及创新与稳定之间微妙平衡的力量。虽然挑战依然存在——尤其是在快速发展的人工智能领域——但 Java 的过往记录表明,它将继续适应并在未来一段时间内蓬勃发展。
这种曾经承诺在任何地方运行的语言确实已经在任何地方运行,并且没有放缓的迹象。