Java三十载:缔造科技传奇的“Java之父”

图0:Java三十载:缔造科技传奇的“Java之父”

从翻垃圾桶的少年到科技先驱,詹姆斯·戈斯林的务实天才塑造了Java和现代计算的三十年。

Java编程语言将于下周(5月23日)迎来30周年纪念日。这种高级、通用、内存安全、面向对象的编程语言,至今仍为各种规模的系统提供动力,若非其主要创造者詹姆斯·高斯林,它便不会存在。

多年来,我有幸采访并了解这位人物,自Java提出“写一次,到处运行”的理念,彻底改变软件开发以来,我便一直关注他。

詹姆斯·高斯林从机智的加拿大少年成长为开创性的世界级程序员的历程,为过去几十年计算技术的演进提供了宝贵启示。他为Java所做的贡献打造了一个赋能无数开发者的平台。在其职业生涯中,高斯林始终将技术卓越与 playful 的精神及清晰的道德界限相结合——这种独特组合塑造了现代计算领域的格局。

詹姆斯·高斯林(James Gosling):Java背后的天才

高斯林不仅是“Java之父”,更是一位谦逊的天才,拥有将复杂概念简化的非凡能力。在最近的一次对话中,高斯林分享了他在科技领域令人着迷的历程,并回顾了Java在诞生30年后的演变。

图1:Java三十载:缔造科技传奇的“Java之父”
James Gosling and DKT.

通向编程之路:充满创造力的开端

高斯林的编程之路揭示了他作为创新者的特质。在“几乎一无所有”的成长环境中,他将生存需求转化为创造灵感。“玩具就是翻找别人的垃圾桶,掏出旧电视机,”他解释道。他亲手组装的第一台电脑,竟是用从电话公司废弃物中 salvaged 的继电器架拼凑而成——这一成就展现了他早期的技术天赋。

一个转折点出现在戈斯林的父亲朋友带他参观卡尔加里大学计算机中心时。“我完全被吸引了,”他回忆道,“屏幕、闪烁的灯光和磁带——各种各样的东西。”这种好奇心一直是他职业生涯中的显著特征。

青少年时期的戈斯林颇具创造力,通过非传统方式自学编程:从垃圾桶里翻找带有密码的穿孔卡片。当许多同龄人还在做零售工作时,戈斯林还在高中时就获得了大学物理系的职位,开发处理卫星数据的软件。“他们实际上付钱让我玩乐,”他谈到这段塑造性经历时说道。元素周期表

他的早期编程经历涵盖了IBM大型机上的PL/1和Fortran语言,PDP-8汇编语言以及CDC 6400代码。以他一贯的低调风格,他随口提到自己“曾做过一份暑期工,编写COBOL编译器”——这对于许多资深程序员来说都是一项令人望而生畏的任务。

从学术界到产业界:寻找自己的道路

戈斯林对学术界的务实态度在他描述中显而易见。他将卡内基梅隆大学(CMU)备受推崇的计算机科学博士项目形容为“本质上是一个研究机构,将研究生作为廉价劳动力”,这体现了他直率的评价。始终注重实用性,他在求学期间曾暂停学业,前往旧金山湾区的一家初创公司工作,随后返回匹兹堡完成学位。

他从CMU毕业后的第一份工作是在IBM研究部门,他对IBM的评价多年后仍一针见血。他将该公司描述为“致力于自毁前程”,以冷幽默的方式提供了深刻见解。这些早期经历影响了他在太阳微系统公司的工作方式,他在那里度过了职业生涯的大部分时光。

太阳(Sun)微系统时代:创新与恶作剧

若问戈斯林在太阳微系统公司最难忘的时光,话题必然转向那传奇的愚人节恶作剧。他回忆称这些恶作剧“耗费了大量精力”,但“乐趣无穷”——这正是该公司文化中创新与创造力并存的缩影。

这些并非简单的恶作剧。戈斯林回忆曾将一辆法拉利放在池塘中的平台上(“概念上最壮观的”),使其看起来仿佛漂浮在水面。这辆车属于太阳微系统联合创始人比尔·乔伊,但最初的计划是将太阳微系统软件主管埃里克·施密特的法拉利放在池塘里,但团队担心施密特(后来成为谷歌首席执行官)可能会对这个恶作剧感到“不安”——尽管施密特自己也成了恶作剧的对象。

另一个恶作剧是在太阳公司CEO斯科特·麦克尼利的办公室里建造了一个复杂的一洞高尔夫球场, complete with grass, water hazard and sand trap. 这些工程挑战需要与推动太阳公司技术创新相同的创造性问题解决能力。

在太阳公司,戈斯林发现了一个罕见的环境,技术卓越与玩耍般的创造力可以并存——这种氛围显然塑造了他整个职业生涯中对技术和问题解决的方法。

Java:缔造改变一切的传奇

如今已满30岁的Java,堪称戈斯林的代表性成就。当被问及创造出如此具有影响力的作品有何感受时,他以谦逊的语气分享道:“偶尔有人在街上拦住我,说‘哦,你是詹姆斯·戈斯林吗?感谢你为我提供了职业机会。我已经用Java编写代码20年了,这真是个伟大的职业。”这让我感到无比满足,”他说。

回顾Java的演变,戈斯林提到了像lambda表达式(在JDK 8中添加)这样的功能,他希望这些功能从一开始就存在。然而,他解释了他对语言设计的谨慎态度:“我从来不想添加一些不合适的东西。” 对于泛型和lambda等功能的挑战在于确定最佳实现方式——“前90%很容易想明白,但最后10%却异常艰难,”他说。

对于甲骨文在收购太阳微系统后对Java的管理,詹姆斯给出了中肯的评价:“他们做得比预期更好,但我必须承认,我的预期本来就很低。”他认为,社区在Java的持续发展和创新中发挥了至关重要的作用。

“偶尔有人在街上拦住我,说:‘哦,你是詹姆斯·高斯林吗?感谢你给我一份事业。我写Java代码已经20年了,这真是一份伟大的事业。’这让我感到无比满足。”

——詹姆斯·高斯林,Java之父

高斯林指出,Java已非常适合云环境,他观察到“过去30年发生的大部分事情都让Java在云环境中变得非常、非常稳固。”他强调了多核处理器处理、内存管理以及尤其是垃圾回收方面的改进,他形容最新版本中的垃圾回收功能“简直令人惊叹”。

图2:Java三十载:缔造科技传奇的“Java之父”

超越Java:Sun之后的创业之路

在甲骨文于2010年收购太阳微系统公司后,高斯林短暂休息了一段时间,随后加入谷歌。这段经历仅持续了“整整六个月”,之后他转投液态机器人公司,从事自主海洋机器人的控制系统研发。这份工作既充满技术挑战,又伴随独特福利:“你必须具备的技能之一是浮潜”,“工作的一部分是花一周或一个月时间在夏威夷。”

Liquid Robotics的工作涉及环境监测,项目包括研究北极和南极地区的海洋温度。然而,正如戈斯林所指出的,“研究这些领域的人根本没有资金”,这给一家风险投资支持的公司带来了挑战。随着投资者推动公司向国防应用方向发展,戈斯林对这一方向感到不适,最终离开了公司。

他的下一站是亚马逊网络服务(AWS),在那里他参与了Greengrass项目及其他开发工具项目,直至去年退休。在职业生涯的每次转折中,戈斯林不仅遵循技术兴趣,还始终考虑道德考量。

关于开源与行业趋势:穿透炒作

谈及开源演进,戈斯林指出“很多人已经摸索出如何让开源为己所用”,不同场景下出现了多种模式。在太阳微系统公司,开源既涉及“协作”,也涉及“开发者关系”,还涉及“单纯的营销”,采取自下而上的采用方式,与传统自上而下的企业销售模式形成对比。

当被问及“低代码、无代码”趋势时,戈斯林基于历史背景表达了怀疑态度:“人们已经讨论低代码、无代码几十年了。那曾是COBOL的宣传口号。”他指出,此类方法通常在特定领域表现优异,但面对超出其核心关注范围的复杂场景时往往力不从心。

关于人工智能(AI)和机器学习(ML),戈斯林主要对术语提出异议:“我对AI和ML最大的问题就是这些名称。”他建议使用“高级统计方法”作为更准确的描述,而非那些容易引发对人类推理误解的术语。在他看来,这些技术代表着“极其复杂的锤子和螺丝刀”:人类使用的工具,而非威胁就业的自主系统。

开发工具与偏好:拥抱进步

戈斯林主要使用NetBeans IDE进行开发,称赞其开源、Apache许可证的特性以及活跃的社区。他对那些执着于过时工具的开发者表示不满:“最让我抓狂的是那些死抱着80年代或70年代不放的人——那些仍然想使用Vi的人,而Vi在70年代可是高科技。”

尽管承认自己偶尔会使用Vi“因为Vi无处不在”,戈斯林仍主张在进行大量编码工作时使用现代开发环境。

JVM愿景:从学术概念到全球标准

有趣的是,后来成为Java虚拟机(JVM)的概念源于戈斯林的研究生学习阶段。他曾探索“架构中立的分发格式”理念,并尝试在不同机器架构间进行跨指令集翻译。

这一早期探索为JVM的开发奠定了基础,而JVM随后成为一项基础性技术,不仅支持Java,还使多种其他语言能够在不同硬件平台上运行。最初被认为缺乏足够数学基础而无法作为博士论文的“写一次,到处运行”愿景,最终彻底改变了全球软件开发实践。

近期工作:在AWS弥合物联网差距

在去年从AWS退休前,戈斯林参与了Greengrass项目的开发,这是一个用于构建物联网(IoT)应用的AWS框架。这正是戈斯林技术理念的完美体现:以优雅简洁的方式解决复杂的普遍性问题。

“从‘我有一个能正常工作的玩具’到能够大规模部署的解决方案之间,存在大量本质上是重复性的内容,”戈斯林以他特有的方式解释道,让复杂概念瞬间变得易于理解。Greengrass处理了所有这些繁琐的元素——空中更新、远程命令与控制、遥测、网络可靠性、安全性和凭证管理——从而让开发者能够专注于使他们的特定应用程序独具特色的部分。

格林格拉斯的设备端部分开源,这反映了戈斯林长期以来对社区贡献的重视。这种做法带来了好处,用户创建了针对亚马逊未优先考虑的平台的端口,如RISC-V——这显然让他感到满意。

在格林格拉斯之后,戈斯林加入了另一个与软件开发工具相关的AWS项目,但它“卷入了人工智能末日”。

人工智能怀疑论

与此同时,在最近接受《The New Stack》采访时,戈斯林对席卷科技行业的人工智能革命提出了更怀疑的态度。“这基本上是个骗局,”他直言不讳地表示,将人工智能描述为“一个带有自身毒性废物桶的营销术语”。尽管承认这些系统背后的数学原理令人印象深刻,但戈斯林担心人工智能的标签掩盖了其本质——即高级统计技术。

“科技行业中的骗子和炒作者数量令人发指。”

——詹姆斯·戈斯林,Java之父

他特别批评了推动人工智能炒作的风险投资家,称“科技行业中的骗子和炒作者数量令人发指”,并指出风险投资家“只关心成功退出”而非构建真正有用的技术。他预测“绝大多数人工智能投资将被吞噬进黑洞”。

这是种Vibe吗?人工智能编程工具:令人印象深刻的演示,有限的实用性

谈到生成式人工智能编程助手时,高斯林承认它们初始阶段的惊艳表现,但强调了其显著局限性。“你开始进行一次氛围编程会话时,确实挺酷的,”他说,但警告称“一旦你的项目稍显复杂,它们几乎总是会崩溃。”

高斯林指出,这些工具的核心问题在于它们通过抓取现有代码示例工作,只能复制它们之前见过的内容。这与专业软件开发存在根本性矛盾,因为“有趣的部分从不重复”,因为良好的解决方案会被封装成库供所有人使用。

“你开始进行一次充满灵感的编码 session,这确实很酷,但一旦你的项目稍微复杂一点,它们几乎总是会崩溃。”

——詹姆斯·戈斯林,Java之父

戈斯林认为,人工智能在编程领域的最大价值并非取代程序员,而是成为“没人愿意撰写的文档”——本质上相当于一个理解代码运作原理并能解释如何使用特定API或功能的智能搜索引擎。

Java 的演进:语言特性与运行时改进

当被问及近期 Java 的发展时,戈斯林承认了一些有价值的语言增强功能:“类型推断带来的许多新特性都非常不错。你知道,数组声明方式的演进也相当不错。我认为这方面还可以进一步推进。”

然而,他强调 Java 最近最令人印象深刻的进展在于其运行时环境和库。“如今从 JVM 产出的代码质量非常出色。现代版本 JVM 的垃圾回收器简直令人惊叹。线程性能也非常出色,”他解释道。

他特别称赞了内存管理和性能可预测性的改进:“Java的内存管理效率早已超过malloc和C语言的内存管理,但现在简直令人惊叹。”垃圾回收暂停时间曾需“10或20秒”,如今通过精细调优可缩短至毫秒级,而“若不慎调优,仍可保持在1秒以内”。JVM现在也能以令人印象深刻的效率处理“任意、荒谬的大型内存空间”。

关键基础设施的编程语言

当被问及重建美国联邦航空管理局(FAA)空中交通管制系统应使用哪种编程语言时,戈斯林否定了这个问题的前提。“这就像设计一栋房子,却从选择什么品牌的锤子开始,”他说。

相反,他主张首先理解问题领域——包括通信系统、国际法规、飞机追踪、碰撞避免和飞行路径规划——然后再为不同组件选择合适的技术。“根据你试图实现的目标的属性来做出决策,”他建议道,尽管他指出,对于可靠性至关重要的大型系统,Java将表现出色。

人工智能世界中的编程未来
尽管人工智能取得了进展,戈斯林坚信编程仍是一项必不可少的技能。“如果我今天有一个孩子,我一定会教他编程,”他解释说,“即使人工智能接管了,人们也必须理解他们的系统是如何工作的。”

他驳斥了马克·扎克伯格和马克·贝尼奥夫等科技高管关于人工智能将减少对工程师需求的言论,称其为“完全自私的胡说八道”,认为此类言论是定位策略和对员工施压以获取更多工作的隐晦威胁。

“如果我今天有个孩子,我一定会教他编程。即使人工智能接管一切,人们也必须理解自己的系统如何运作。”

——詹姆斯·戈斯林,Java之父

Java的长寿秘诀

当被问及为何Java能在其他语言逐渐消亡的情况下存续三十年时,高斯林列举了多个因素:解决实际问题、尊重用户、保持向后兼容性、提升开发者生产力以及优先考虑可靠性。

“这从来不是关于时尚,”他解释道,“而是关于有效地完成工作,帮助工程师完成他们的任务。”这种对实用性的关注而非追逐潮流,使Java在企业环境中表现出色,尤其是当软件“必须每次都正常工作”时。

甲骨文的托管:超出预期

此外,戈斯林对甲骨文在收购太阳微系统公司后对Java的管理给予了“B+”的评价。“我真的很害怕他们会做什么,因为他们的记录是掠夺和破坏,”他承认,“我对他们做得如此之好感到惊讶。”

尽管他希望Java团队能获得更多资金支持,但戈斯林称赞甲骨文成功隔绝了团队免受公司干预——“甲骨文没有干预他们”——这超出了他最初对失败的预期。

“我真的很害怕他们会做什么,因为他们的记录一直是掠夺和破坏。我对他们做得如此之好感到惊讶。”

——詹姆斯·戈斯林,Java之父

螃蟹爱好者们团结起来!

图3:Java三十载:缔造科技传奇的“Java之父”

戈斯林(Gosling)曾告诉我,他喜欢与那些他乐意共进晚餐的人合作(事实上,他说他曾以这种方式选择过一份工作)。我过去有个习惯,每次去旧金山旅行时,都会特意去一家名为“Thanh Long”的餐厅,那里以烤帝王蟹闻名。我通常会在离开旧金山前往机场前,顺道去那里用餐。

有一天晚上,我坐在吧台旁享受美味的螃蟹(我来自马里兰!),随身携带的行李放在一旁,这时詹姆斯·戈斯林从餐厅后方走了出来。我向他打招呼,然后转头问餐厅老板家族的一位成员是否认识他。我兴奋地说:“那就是创造了世界上最受欢迎的计算机编程语言的人!”那人只是耸耸肩说:“我想他喜欢螃蟹吧。” 他的意思是:“你不知道这里来过多少科技界大佬吗?!”

后来,戈斯林和我一起在Thanh Long共进晚餐,这是我们最近一次交谈的最后一句话:下次你来的时候,我们就在那个地方见面。所以,下次我到旧金山时,我将与“Java之父”共进晚餐,一起享用螃蟹。即使现在每只螃蟹要$80,我们也会边吃边聊,开怀大笑,度过愉快的时光。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注