如果说周五在YouTube首映的《Java故事》纪录片有一条贯穿始终的主题,那就是:即使是最重要、最流行的技术,也往往出身卑微。这里说的是一门最初为争夺机顶盒市场而失败的语言,在大型大会首秀前几天还经历了一次大规模重写。
如今,Java常年位居TIOBE编程语言流行指数前列,在大规模企业应用中仍被广泛使用。
但在1994年的某个时刻,Sun Microsystems几乎要放弃这个项目。Tim Lindholm被雇来完善后来成为Java的虚拟机运行时,他回忆道:"我是整个项目散架前最后被招进来的人之一。"
但这不会是Java最后一次比质疑者活得更久。
Java编年史
如果你觉得关于编程语言的专业纪录片听起来很耳熟,那你可能看过关于C++、Python或React的那些。这些纪录片是科技招聘网站Honeypot.io为积累用户而资助制作的。
2019年,Honeypot被XING(后更名为New Work SE)收购。然而,创始人Emma Tracey对纪录片方向更感兴趣,她从New Work手中买回了制作团队,重组原班人马,将品牌更名为Cult.Repo(Culture Repository的缩写)。《Java故事》是这家新独立媒体公司的首个作品。
纪录片汇集了Java的许多核心人物,包括创建者James Gosling以及Oracle高级Java架构师Mark Reinhold和Brian Goetz。
如果说为Python缓慢的进展构建一段英雄之旅需要好莱坞式的叙事功力,那么Java简直就是一出真人秀级别的戏剧,其中一些情节正是这部纪录片所捕捉到的。
差点不存在的项目
Lindholm进入计算领域纯属偶然——明尼苏达的严冬逼使他离开帐篷,寻找更温暖的地方。他在伊利诺伊州阿贡国家实验室获得了一份实习机会,在那里因实验室使用Prolog而积累了虚拟机的早期经验。
他的目标不是做程序员,而是做数学家。"计算机科学是给那些做不了真正数学家的人准备的,"他说。
但他学会了实现Prolog的技艺。
"我学会了编写高质量的虚拟机,掌握垃圾回收和可嵌入性等技术,"他说。这些虚拟机经验让他先后进入施乐PARC,最终来到Sun。
1994年Lindholm加入时,他在一个名为FirstPerson的实验性"内部孵化"子公司工作。当时Sun靠向工程师销售高端工作站赚得盆满钵满,但公司希望为工作站和PC以外的设备开发软件。
FirstPerson的主要目标是时代华纳的一份合同——为电视机顶盒提供交互式视频点播软件。Gosling为该项目编写了一种语言和运行时,命名为Oak。
合同最终被迟到者Silicon Graphics(即SGI,Sun的竞争对手)拿下。时代华纳的项目后来挣扎了几年,于1997年被终止,对本已困境重重的SGI来说更是雪上加霜。
但当时,Sun对这次失败打击沉重,裁掉了FirstPerson的大部分员工。Lindholm才来一个月,对机顶盒项目并没有太多感情投入。"接下来做什么我就做什么,"他回忆道。
Sun只保留了12名工程师继续开发Oak,包括Gosling和项目经理Kim Polese。但对Lindholm来说,前景并不光明。
"我们就像被困在被炸毁的掩体里的难民,"他说。被裁掉的人把办公设备扔到走廊里。Lindholm在Sun办公室觉得自己就是"死肉",等着被裁。
转向Web
项目转向当时刚刚兴起的Web纯属偶然。团队中一位幸存的工程师一直在把玩新发布的Mosaic浏览器,他建议万维网应该成为Oak的下一个目标。这发生在Windows 95将互联网和网页浏览带给大众的前一年。
团队用Oak构建了一个名为WebRunner的Mosaic克隆版,可以运行动画。这就是后来Java Applet的前身。
此后事态发展迅速。Oak于1995年初更名为Java——据说是在致敬工程团队对咖啡的消费量。"它像火箭一样起飞了。简直疯狂。我们所有人都压力山大,"Lindholm说。
早期一波Web开发者正迅速发现用HTML创建网页的局限性——毕竟HTML只是一种标记语言。
Gosling和团队搭建了一个粗糙的原型,但让这个东西真正能用,落在了Lindholm和新雇来的Lisp专家Frank Yellin身上。两人负责商业级实现,确保Gosling构想的高级概念——如线程和垃圾回收——在真实世界中正常运行。Lindholm和Yellin后来共同撰写了最初的JVM规范。
当时的线程技术还很新。没有现成的库可以用来实现这一概念,Lindholm对此也知之甚少。
公司计划在1995年SunWorld大会上发布Java,这是JavaOne的前身。但运行时频繁崩溃。经过大量排查,Lindholm发现Java的线程模型"从根本上就是坏的。完全搞砸了"。
问题在于,SPARC处理器在执行指令时会收到系统中断。这导致了灾难性后果,因为系统无法恢复已从内存中刷新的状态,因此会"惨烈地死去"。
Lindholm意识到只能让中断在特定时间点发生。于是,在大会前三天,他重写了整个线程包。大会上,当Sun时任CEO Scott McNealy展示Java时,Lindholm坐在观众席上提心吊胆。幸运的是,重写成功了。
开源之前
Lindholm还负责了该语言的首次开源尝试——这比Eric Raymond让"开源"一词广为人知要早好几年。公司将Java运行时二进制文件作为免费下载提供,同时还把"源代码"免费发给任何提出请求的人。成千上万的人提出了请求。
纪录片讲述了一个故事:Java域名获得的流量如此之大——甚至超过了Sun.com本身——以至于Java团队私接了一条T3专线到办公室。这就是云时代之前的日子。
当时,Lindholm把开源代码视为一个不错的职业保险。万一被裁,也许别的公司会接手代码继续发展。他们还发现外部人员可以修复bug,甚至将软件扩展到其他平台。
不过,这个"源代码"计划并未正式化。Sun确实邀请过Richard Stallman来做演讲,但Lindholm回忆说,Stallman对Sun高管来说显得"太激进了"。Sun直到十年后才正式决定将Java作为开源发布。
颇具讽刺意味的是,Java Applet在Web上的采用并不算广泛,因为ColdFusion和Netscape的JavaScript项目最终承担了Web编程的重任。但Applet是通往真正舞台的门户——那就是后端服务器。
帝国来袭
随后,Microsoft开始关注。它将这个运行时视为对Windows本身的潜在威胁,尤其是对正在向企业市场渗透的初生Windows NT。
对今天的年轻一代IT人来说,很难夸大当时的Microsoft有多具攻击性和多强悍。1996年,Microsoft获得了Java在Windows上的授权,但随后增加了一些额外的API,同时拒绝支持另外一些API(还记得Microsoft的J++吗?)。Sun指控Microsoft的修改意在破坏Java的跨平台兼容性,引导开发者转向Microsoft的Windows特定实现。
长达数年的诉讼消耗了开发团队的精力,将资源从Java本身 diverted 开来。
"我花了数天在证词中宣誓作证谈论这件事,"Lindholm回忆道。争端最终以Microsoft通过一系列和解向Sun支付近20亿美元告终。"这对我们来说是个人恩怨,"他说。
一段疯狂旅程
纪录片继续讲述了这门语言随后几十年的发展历程,包括过度工程化的J2EE和Java EE 5时代、Spring框架带来的希望曙光、Sun的崩溃及被Oracle收购,以及OpenJDK发布后JVM语言的繁荣。
即便Sun销售基于SPARC的互联网服务器的核心业务因低成本Linux x86服务器的涌入而逐渐萎缩,Java对Sun来说仍是一项成功。Lindholm提到,Java团队规模增长如此之大,以至于接管了Sun的总部,最终不得不搬进了Apple的旧总部大楼。
但到2000年代初,Lindholm对Java的热情已被日益企业化的环境消磨殆尽,他跳槽到Google,在那里度过了接下来20年,直到今年早些时候退休。
回顾早期参与的经历,Lindholm坦言:"这其实有点随机。你永远无法预料生活中哪些部分会因为某种原因变得真正重要。"
其他人也认为Java是一段疯狂的旅程。
正如Java创建者James Gosling在纪录片中所说:"最让我对未来兴奋的是未知。很多事情会发生,而最有趣的往往是你永远无法预测的那些。"
相关推荐
CBI资讯
352
0
6569
0
2762
0
4396
0
3078
0马上去coding
我还没有写个人简介......
帖子
提问
粉丝
Codex Multi-Agent V2更新引发开发者对智能体透明度的担忧
2026-07-16 11:50:02 发布MongoDB将重排序功能嵌入Atlas,企业正在寻求为规模化AI精简技术栈
2026-07-01 11:06:17 发布
京公网安备:11010502051901号