当前位置: 首页 > news >正文

Java往事:机顶盒项目失败、发布会前三天重写代码、与微软对簿公堂,官方纪录片揭秘30年传奇

整理 | 屠敏

出品 | CSDN(ID:CSDNnews)

今天的 Java,是全球最成功的编程语言之一。但 30 多年前,它差一点就不存在了。

1995 年,Sun 公司一度准备放弃这个项目。彼时距离首次公开发布仅剩三天,开发团队甚至不得不推倒重写整套运行环境。而更早之前,Java 还只是一个为机顶盒开发的内部试验项目,随着业务失败险些夭折。

然而,就是这样一门几经生死的语言,最终成长为全球企业级开发的常用语言。据 TIOBE 编程语言榜单显示,Java 多年来使用率虽有所下降,但始终稳居 Top 5,至今应用仍颇为广泛。

近日,由独立媒体公司 CultRepo 推出的官方纪录片《The Java Story》正式上线 YouTube(https://www.youtube.com/watch?v=ZqGSg4b_cZA),包括 Java 之父 James GosLing,Java 集合框架创作者、《Effective Java》作者 Joshua Bloch,Apache Tomcat 创始人 James Duncan Davidson,Java 语言架构师、Oracle Java 平台团队成员 Brian Goetz 等在内的多位核心开发者和行业亲历者的讲述,首次系统回顾了 Java 从诞生到现代化演进的完整历程。

James GosLing Java 之父

Oak 雏形诞生之际:瞄准机顶盒项目却失利,团队濒临解散

Java 的诞生并非一次刻意追求“创造新语言”的技术创新,而是工程师在解决现实问题过程中水到渠成的结果。

Java 之父 James Gosling 回忆道:“我并不是某天早晨醒来,对自己说,‘这个世界需要另一种编程语言。’ 实际情况是,我们遇到了许多问题,而当时已有的编程语言反而成为了解决这些问题的障碍。”

1990 年末至 1991 年初,Sun Microsystems 启动了一项探索计划,希望跳出传统计算机市场,研究消费电子领域的发展趋势。彼时,公司集结了一批顶尖的软件和硬件工程师,包括 Mike Sheridan、Ed Frank、Patrick Naughton 和 James Gosling,组建起项目核心团队,内部项目代号定为 Oak。

据 Java 首位产品经理 Kim Polese 回忆,这个名字源于 James Gosling 编写第一行代码时,抬头望见窗外的一棵橡树。

团队最初并非为了开发一门新的编程语言,而是希望打造一套能够运行在不同消费电子设备上的统一软件平台,摆脱软件必须针对不同硬件反复适配的困境。为此,James Gosling 独立完成了 Oak 语言的语法设计、运行时环境及最初实现,并开发出 Star7 原型设备。

1992 年底,时代华纳(Time Warner)发布一份关于交互式有线电视机顶盒项目招标方案,看到行业创新机遇的 Sun 团队全力竞标,将 Oak 技术作为核心解决方案。

然而,这场倍寄予厚望的竞标最终爆冷,获胜方并不是 Sun,而是临时入局的硅图公司(SGI)。世事难料,拿下项目的硅图后续推进数年便在 1997 年彻底终止项目,本就经营困难的硅图更是雪上加霜。当然这些都是后话了。

对 Sun 公司而言,当时非常难以接受这次失利,其为此成立的专项子公司 FirstPerson 也濒临解散,约三分之一员工直接离职,三分之一人员调回 Sun 本部,仅剩十余位工程师观望留守,James GosLing、Kim Polese 等人留在其中。其实他们全员一度遭遇裁员,幸得 Sun 高管 Bill Joy 紧急介入,挽回了核心研发团队,这也为 Java 的后续重生留存了火种。

作为项目产品负责人,Kim Polese 坦言,当时推动 Oak 普及落地的目标彻底落空,失败的压力笼罩着整个团队。

“我们就像困在炸毁掩体里的难民。” 被裁员的同事把办公设备全扔在走廊。而当时留在公司的 Tim Lindholm(Java 虚拟机规范的合著者)感觉自己迟早会被开掉,如同待宰羔羊。

借力浏览器浪潮,绝境转型 Web

就在 Oak 项目濒临夭折之际,留下来的这群软硬件工程师开始重新审视最初的技术目标。Kim Polese 回忆道:“我们意识到需要回归初心。过了一段时间,我们突然发现,互联网其实就是过去几年一直在研究的东西。”

转机很快出现。1993 年,全球首款广泛流行的图形化浏览器 Mosaic 发布。James GosLing 和团队第一时间下载体验后意识到,Oak 完全可以运行在浏览器中,为 Web 带来前所未有的交互能力。

原本只能展示文本和超链接的网页,第一次有了运行程序、实现动态交互的可能,也让 Oak 找到了真正适合自己的舞台。

基于此,该团队也用 Oak 复刻了 Mosaic 浏览器的产品——WebRunner(后来改名为 HotJava),依托内嵌的动态运行能力,实现了网页动画等全新功能。这也是后来 Java Applet 的雏形。

1995 年初,Oak 正式更名 Java,传闻取名灵感来自团队日常常喝的爪哇咖啡。“项目瞬间爆火,势头猛得离谱,所有人都绷着一根弦。”

这一年也成为 Java 爆发式增长的关键年份。当年的 3 月 23 日,《圣何塞信使报》的头条报道“为什么 Sun 认为 HotJava 会带你起飞”让 Java 彻底出圈,行业关注度瞬间爆发。

面对这种超预期的爆红现场,Sun 负责 Java 兼容性的主管 Carla Schroer(L.A. Schroer)回忆道,「我常把 1995 年形容为一场“彻底成功的灾难”。它的成功远远超出了我们所有的想象,我们的电话被打爆了,而我们根本没有足够的人手去构建人们想要的所有东西。」

Tim Lindholm(Java 虚拟机规范合著者)称,彼时 Java 的热度远超 Sun 官网,尚未发布 1.0 正式版本,就已火爆全球,甚至在梵蒂冈的书店都能看到 JVM 规范书籍,足以见证其出圈速度。

发布会三天前,Java 底层被推翻重写

然而,早期网页开发者很快发现,仅靠标记语言 HTML 制作网页存在巨大局限。

James Gosling 和团队只拿出了一份粗糙原型,完善落地的重担落在 Tim Lindholm 与同期入职的 Lisp 语言专家 Frank Yellin 身上,两人要让这套系统真正稳定可用。他们负责打造商用级运行环境,确保 James Gosling 提出的多线程、垃圾回收等前沿特性能够稳定落地。后续 Tim Lindholm 与 Frank Yellin 联合编写了初代 Java 虚拟机规范。

多线程技术在当年十分新颖,行业内没有现成开源库可供复用,彼时 Tim Lindholm 本人对这套技术机制也知之甚少。

公司原定在 1995 年 Sun 全球开发者大会(日后 JavaOne 大会的前身)正式发布 Java,但彼时的运行环境频繁崩溃,发布会陷入巨大危机。

经过多轮排查,Tim Lindholm 确认 Java 原生多线程模型存在根本性缺陷,整套底层设计完全无法正常运行。

技术故障的核心根源为:SPARC 处理器执行指令的过程中,系统中断信号会被强行触发,导致内存中尚未保存的程序状态无法恢复,最终造成程序彻底宕机、服务崩溃。

Tim Lindholm 经过攻坚排查,明确了核心修复逻辑:系统中断信号仅能在程序运行的特定节点触发。

在距离开发者大会仅剩三天的极限时间里,他连夜完成了整套多线程底层库的完整重写。

大会现场,时任 Sun Microsystems CEO Scott McNealy 登台公开演示 Java,身处观众席的 Tim Lindholm 全程紧绷、忧心容错问题,最终重写后的代码稳定运行,让 Java 的首次公开亮相圆满落地。

与微软的商业拉锯战

90 年代的软件开发面临一个核心难题:软硬件之间高度绑定。开发者需要针对不同操作系统和硬件环境重复编写、调整代码,开发效率受到严重限制。

彼时,C、C++ 虽然是主流开发语言,但复杂度较高,内存管理、程序调试等问题长期困扰开发者。与此同时,CGI、Perl、ColdFusion 等 Web 技术推动了早期动态网页的发展,但在构建复杂、稳定、可扩展的应用方面,仍缺少一套统一的开发体系。

正是在这一背景下,Java 提出了“一次编写,随处运行(Write Once, Run Anywhere)”的核心理念。Java 通过引入字节码和虚拟机机制,将程序运行环境与底层硬件、操作系统隔离开来。开发者只需编写一次代码,即可通过不同平台上的 Java 虚拟机运行,大幅降低了跨平台开发成本。

Tim Lindholm 曾表示,这一理念在当时极具前瞻性,它重新定义了软件开发与硬件平台之间的关系。

Java 的优势不仅在于语法层面的简化,更在于其背后的运行机制设计。它保留了 C、C++ 开发者熟悉的编程方式,同时引入垃圾回收、多线程、动态类加载、反射等机制,降低了开发和维护复杂度。

Oracle Java 语言架构师 Brian Goetz 曾将 Java 比作“披着羊皮的狼”:它表面上延续了主流语言的开发习惯,实际上吸收了 Lisp、Haskell 等学术语言中的先进思想,并将这些研究成果转化为适用于工业开发的工程实践。

Apache Tomcat 创始人 James Duncan Davidson 曾表示,Java 内置的线程和网络能力改变了传统 Web 开发方式,而 Servlet 规范的出现,则进一步连接了 Web 服务器与企业后端系统,推动 Java 企业开发生态逐渐成熟。

Java 的快速崛起,很快触动了微软在 PC 时代建立的软件生态优势。

90 年代中期,Windows 已占据全球个人计算机市场的主导地位,而 Java 所构建的跨平台运行环境,则意味着开发者不再必须依赖 Windows 平台。这一点尤其让微软感到压力,因为当时微软正在推动 Windows NT 进入企业级市场,试图扩大自身在服务器和企业应用领域的影响力。

1996 年,微软获得 Sun 授权,在 Windows 平台上提供 Java 运行环境。Sun 原本希望借助 Windows 庞大的用户基础推动 Java 普及,但双方合作很快出现裂痕。

微软随后推出了基于 Java 的 J++ 产品,并在实现中加入 Windows 专属接口,同时未完整支持部分 Java 标准规范。1996 年比尔·盖茨的内部邮件直接暴露了微软的核心顾虑:Java 运行时正在重构操作系统生态,或将颠覆微软的垄断地位。

Sun 认为,微软此举削弱了 Java 的跨平台能力,意在推动开发者围绕 Windows 生态进行开发。

这场围绕 Java 标准和生态控制权的争议,最终演变为持续数年的法律纠纷。1997 年,Sun 正式起诉微软,指控其违反 Java 授权协议,并通过修改 Java 实现破坏“一次编写,随处运行”的核心理念。Sun 团队随后展开大量测试和取证工作,试图证明微软实现中的兼容性问题并非技术偶然,而是对 Java 标准的偏离。

Tim Lindholm 回忆称,自己曾连续多日出庭作证,接受微软方面的质询。“这件事对我们团队而言,完全是私人恩怨。”他说。经过多轮谈判,双方最终达成和解,微软向 Sun 支付约 19.5 亿美元赔偿及相关费用。

不过,这场持续数年的诉讼也给 Java 生态带来了巨大影响。大量研发资源和团队精力被投入到法律博弈之中,而微软则在此期间继续推进 .NET 体系建设。对于 Java 而言,这场巨头之间的冲突不仅是一场商业纠纷,也成为其坚持开放标准和跨平台理念的重要转折点。

社区与开源进化

诉讼风波之后,Java 开始逐步向社区化、开源化方向转型。随着参与者范围不断扩大,Java 逐渐摆脱完全依赖单一企业推动的发展模式,形成了由企业、机构和开发者共同参与的技术生态。

为了协调 Java 技术规范的发展,Java 社区流程(JCP)正式建立。Oracle Java 社区流程主席、总监 Heather VanCura 介绍,JCP 将 Java 早期较为松散的研发协作方式进行规范化,向企业、机构和个人开发者开放参与渠道,IBM、HP、Oracle 等企业以及全球开发者都可以参与技术规范制定。JCP 也成为 Java 长期保持兼容性和稳定演进的重要机制。

不过,在早期阶段,Sun 对“开放”的理解与今天的开源理念仍存在差异。当时 Java 更多强调开放标准、开放接口,并允许开发者查看源码,但并未完全开放修改和再分发权限。Apache Tomcat 创始人 James Duncan Davidson 曾指出,这种理念差异一度限制了 Java 生态的发展。为了推动 Java Web 技术进一步普及,他推动 Sun 开放 Servlet 参考实现,并将其贡献给 Apache 社区,最终形成了广泛使用的开源 Web 容器 Tomcat,也成为 Java Web 生态的重要基础。

进入 2000 年代初,Java 企业级开发开始面临新的挑战。Sun 联合 IBM、Oracle 推出的 J2EE 体系虽然提供了完整的企业应用规范,但复杂的架构设计、繁琐的配置方式,也让不少开发者感到开发成本较高。在这一背景下,一批来自社区的开源框架开始改变 Java 企业开发模式。

Spring 框架创始人 Rod Johnson 曾公开质疑传统 J2EE 体系的复杂性。2002 年,他出版专著《Expert One-on-One J2EE Design and Development》,分析 J2EE 架构中的问题,并在此基础上推出 Spring 框架。Spring 通过更轻量的设计方式,降低了企业应用开发复杂度。

与此同时,Hibernate 创始人 Gavin King 针对传统 Java 持久化技术使用复杂、效率不足的问题,推出 Hibernate 框架,通过对象关系映射(ORM)简化数据库操作,成为 Java 企业开发中广泛使用的持久化解决方案。

这些来自社区的创新,也反过来推动了官方技术体系的调整。后续 Java EE 在发展过程中不断吸收 Spring、Hibernate 等开源项目中的设计理念,形成官方规范与社区实践相互影响的演进模式。

不过,好景不长,互联网泡沫破裂后,Sun 市值暴跌 93%,业务大幅萎缩,Java 发展陷入十年停滞期。

2004 至 2014 年间,Java 版本迭代缓慢、创新乏力,冗长的语法、滞后的特性更新饱受诟病,甚至被行业质疑“沦为下一代 COBOL”。

与此同时,.NET、C# 快速迭代,Kotlin、Scala、Groovy 等新型 JVM 语言相继涌现,进一步挤压 Java 的市场空间。诸多行业从业者,包括知名 Java 布道者 Venkat Subramaniam 都曾公开批评 Java 的僵化滞后。

为挽救 Java 生态,Sun 最终下定决心全面开源。在 Oracle 平台集团首席架构师 Mark Reinhold、Java 平台集团高级副总裁兼 OpenJDK 理事会主席 Georges Saab 等人的主导下,OpenJDK 正式落地。Mark Reinhold 坦言,全面开源是 Java 存续的关键抉择,彻底盘活了社区力量,让这门濒临沉寂的语言重获生机。

Oracle 时代涅槃:破局停滞,开启现代化新征程

2009 年,Oracle 以 74 亿美元收购 Sun Microsystems,彻底改写了 Java 的发展轨迹。当时很多人担忧 Java 会被商业化束缚、失去创新活力,但这场收购最终成为 Java 重生的转折点。Rod Johnson 坦言,Oracle 的接手,意外让 Java 摆脱了 Sun 的经营困境,步入规范化、可持续的发展轨道。

Oracle 接手后,迅速梳理 Java 研发体系,稳定核心团队,明确了长期迭代战略。Brian Goetz 表示,Oracle 摒弃了 Sun 后期混乱的发展思路,以理性的商业逻辑驱动技术迭代,让 Java 告别无序停滞状态。

2014 年前后,Java 8 的正式发布,成为 Java 现代化转型的里程碑。

此后,Java 彻底告别数年一更的滞后模式,启用六个月固定迭代节奏。Georges Saab 表示,短期固定周期迭代,彻底解决了旧版本“大爆炸式更新”的弊端,避免功能长期积压、版本迭代滞后的问题,让技术创新可以稳步落地。这种迭代模式大幅降低了版本更新风险,让 Java 持续保持技术活力。

在生态治理层面,Oracle 做出重大革新,将 Java EE 全套规范、测试套件与参考实现 GlassFish 无偿移交 Eclipse 基金会,推出厂商中立的 EE4J 与 MicroProfile 项目,彻底剥离企业级 Java 的商业属性,构建起完全开放、多方共建的企业级生态。

面向未来,Java 团队持续推进两大核心创新项目:Valhalla 项目致力于消除基本类型与引用类型的历史割裂,优化内存布局与运算性能,适配 AI、大数据等高算力场景;Panama 项目打通 Java 与原生代码的交互壁垒,大幅提升外部函数调用效率,让 Java 具备适配 AI 框架、高性能计算的能力。

Netflix 高级软件工程师 Paul Bakker 表示,如今的 Java 早已摆脱老旧刻板印象,经过多年迭代,语法优雅、性能高效、生态成熟,完全适配现代云原生、AI 时代的开发需求。

结语

如今,Java 依然运行在数十亿设备和大量关键业务系统之中,支撑着金融、电信、企业服务等领域的软件基础设施。回顾 Java 的三十年历程,它的成功并非来自某一次技术突破,而是在不断变化的产业环境中,通过兼容性、稳定性和开放生态积累形成的长期优势。

James Gosling 说:“很多事情取决于运气——在正确的时间出现在正确的地点,遇到正确的人,脑中有正确的想法。这一切,就像上帝在掷骰子。”

http://www.jsqmd.com/news/1240535/

相关文章:

  • 游戏音频响度控制:从RMS检测到多音轨混合的完整解决方案
  • 2026年前海科兴科学园:科创企业的新选择与机遇 - 品牌优选官
  • 武昌洪山工商代办深度盘点|2026 武汉公司注册靠谱机构优选指南 - 品牌智鉴榜
  • AtomCode 终端 Spinner 词表勘误:那篇热门文章的词表 85% 是编的
  • Linux操作系统C盘扩容方式
  • ISTA 3A包装振动测试有什么,ISTA3A随机振动和低气压振动怎么选?
  • 2026 青岛首饰回收避坑有哪些?7 家正规门店 + 5 个行情判断技巧 - 奢侈品回收机构参考
  • Python爬虫技术入门:从HTTP协议到实战应用
  • 劳力士宁波售后中心全攻略|全新维保信息官网**认证(2026年7月最新) - 劳力士中国服务中心
  • Claude 3.7系统提示词设计与工程实践解析
  • 2026年下半年AI量化学习,连接交易理解与代码表达
  • 深度避坑|为什么私密资料绝对不能上云?Privasa纯本地离线加密,彻底告别云端风控与泄露风险
  • Codex 0.134版本记忆功能优化解析与实践
  • 《禁止传销条例》20年首次修订解读:从良久团购看合规分销系统的架构设计
  • 亲身探访郑州劳力士**售后服务中心|网点地址与**客服电话(2026年7月最新) - 劳力士服务中心
  • 2026年柴油发电机组哪家专业?以长沙安希优为例,把选型、租赁和维保讲清楚 - 中国品牌企业观察网
  • 嵌甲反复发作的处理记录:一次修脚店的经历分享
  • XMind MCP协议详解与集成开发指南
  • Unity编辑器扩展实战:用Tri Inspector构建专业技能配置界面
  • LabVIEW状态机架构在真空系统与水冷循环控制
  • 以数字之笔激活垦荒文脉 共青城探索文旅融合创新发展路径
  • 岳麓区AI短剧制作培训学费多少 - 梦想蓝途
  • 2026家用百货电商小程序十大平台测评:商品库存、促销与会员怎么选?含零代码SAAS、AI编程、源码定制交付
  • 百达翡丽中国**售后服务中心|网点地址与24小时售后热线**信息公告(2026年7月最新) - 百达翡丽服务中心
  • 西宁城中区 2026 年 6 月黄金回收行情全攻略|本地商圈变现避坑指南,线下实体门店实地参考 - 铂衡汇黄金珠宝
  • 7月北京朝阳积家腕表回收走访,筛选支持上门取表的靠谱同城回收服务商 - 融媒生活
  • EMAC/MDIO寄存器深度解析:从原理到实战的嵌入式网络驱动开发指南
  • 2026石家庄初中毕业学医选校核心解读 - 资讯快报
  • 2026银川防水补漏服务商实测测评|本地施工工艺与选店避坑全解析 - 筑宅安
  • 环形缓冲区核心机制深度解析