摘要:Java 30周年!"Java之父" James Gosling畅谈编程之路,揭秘Java在云原生时代的演进,力赞JVM的垃圾回收。他对AI持怀疑态度,认为AI编码助手仅是"vibe coding",编程仍是关键技能。Oracle对Java的管理超出预期,一起
Java 30周年!"Java之父" James Gosling畅谈编程之路,揭秘Java在云原生时代的演进,力赞JVM的垃圾回收。他对AI持怀疑态度,认为AI编码助手仅是"vibe coding",编程仍是关键技能。Oracle对Java的管理超出预期,一起吃螃蟹才是真爱!
译自:Java at 30: The Genius Behind the Code That Changed Tech
作者:Darryl K Taft
Java 编程语言下周(5 月 23 日)迎来 30 周年。如果没有其主要创建者 James Gosling,这种高级、通用、内存安全、面向对象的编程语言就不会存在,它至今仍在为各种规模的系统提供动力。
多年来,我有幸采访并结识了这个人,自从 Java 凭借其“一次编写,随处运行”的理念彻底改变了软件开发以来。
James Gosling 从足智多谋的加拿大青少年到开拓性的世界级程序员的历程,为我们提供了对过去几十年计算机技术发展的宝贵见解。他在 Java 上的工作创建了一个平台,为无数开发人员赋能。在他的整个职业生涯中,Gosling 始终在技术卓越、玩乐精神和明确的道德界限之间保持平衡——这种结合有助于塑造现代计算格局。
Gosling 不仅仅是“Java 之父”,他还是一个谦逊的天才,具有简化复杂概念的不可思议的能力。在最近的一次谈话中,Gosling 分享了他迷人的科技之旅中的故事,并回顾了 Java 在他和他的团队将其变为现实 30 年后的发展历程。
James Gosling 和 DKT。
Gosling 的编程之路揭示了他将成为的创新者。在“几乎没有钱”的环境中长大,他将必要性转化为创造性的灵感。“玩具就是潜入人们的垃圾桶,拿出旧电视,”他解释说。他自己制造的第一台计算机实际上是用从电话公司废弃物中抢救出来的继电器架制成的——这一成就证明了他早期的技术能力。
一个关键的时刻是 Gosling 父亲的朋友带他参观了卡尔加里大学的计算机中心。“我当时就被迷住了,”他回忆道。“屏幕和闪烁的灯光和磁带——各种各样的东西。”这种好奇心在他的整个职业生涯中一直是一个决定性的特征。
十几岁的 Gosling 足智多谋,通过非常规手段自学编程:在垃圾箱里翻找带有密码的穿孔卡片。当许多青少年都在从事零售工作时,Gosling 在高中时就在大学物理系找到了一份工作,创建处理卫星数据的软件。“他们实际上付钱让我玩得开心,”他谈到这段形成期的经历时说。
他早期的编程经验涵盖了使用 PL/1 的 IBM 大型机和 Fortran、PDP-8 汇编和 CDC 6400 代码。以典型的低调方式,他随意地提到他“做了一份暑期工作,编写了一个 COBOL 编译器”——这是一项许多经验丰富的程序员都会觉得令人生畏的任务。
Gosling 对学术界的务实观点在他的描述中闪耀。他对卡内基梅隆大学著名的计算机科学博士课程的描述是“从根本上说是一个以研究生为廉价劳动力的研究所”,这体现了他直截了当的评估。他总是很务实,在学习期间抽出时间在湾区一家初创公司工作,然后返回匹兹堡完成学业。
他在 CMU 之后的第一份工作是在 IBM Research,多年后他对 IBM 的评估仍然很尖锐。他对公司“致力于搬起石头砸自己的脚”的描述以幽默的方式提供了深刻的见解。这些早期的经历影响了他在 Sun Microsystems 的工作方式,他在那里度过了他职业生涯的大部分时间。
如果问 Gosling 他在 Sun 最喜欢的时光,谈话不可避免地会转向传奇的愚人节恶作剧。他回忆说这些恶作剧是“大量的工作”,但“非常有趣”——这让我们得以一窥公司文化,这种文化既促进了创新,又促进了创造力。
这些并非简单的恶作剧。Gosling 回忆说,他曾把一辆法拉利放在池塘里的一个平台上(“概念上最壮观”),让它看起来像漂浮在那里。这辆车属于 Sun 的联合创始人 Bill Joy,但最初的计划是将 Sun 软件主管 Eric Schmidt 的法拉利放入池塘,但团队担心 Schmidt(后来成为 Google 的 CEO)可能会对这个恶作剧感到“不安”——尽管 Schmidt 也被恶作剧了。
另一个恶作剧是在 Sun CEO Scott McNealy 的办公室里建造一个精心设计的高尔夫球场,包括草地、水障碍和沙坑。这些工程挑战需要与推动 Sun 技术创新的创造性问题解决能力相同。
在 Sun,Gosling 发现了一个罕见的环境,技术卓越可以与有趣的创造力共同蓬勃发展——这种氛围显然塑造了他整个职业生涯中对技术和问题解决的方法。
Java 如今已有 30 年的历史,是 Gosling 的标志性成就。当被问及创造出如此有影响力之物有何感受时,他分享了一个令人谦卑的观点:“时不时地,有人会在街上拦住我说,‘哦,你是 James Gosling 吗?感谢你给了我一份事业。我已经编写 Java 代码 20 年了,这是一份很棒的事业。’这给了我一种非常棒的满足感,”他说。
在回顾 Java 的发展历程时,Gosling 提到了像 lambdas(在 JDK 8 中添加)这样的特性,他希望这些特性从一开始就存在。然而,他解释了他对语言设计的谨慎态度:“我从来不想放入任何不正确的东西。” 像泛型和 lambdas 这样的特性所面临的挑战是确定最佳的实现方法——“前 90% 很容易弄清楚,而最后 10% 则非常困难,”他说。
关于 Oracle 自收购 Sun 以来对 Java 的管理,James 提出了有分寸的评估:“他们做得比预期的要好,但我也必须承认,我的期望值很低。” 他认为社区在 Java 的持续发展和创新中发挥了至关重要的作用。
“时不时地,有人会在街上拦住我说,‘哦,你是 James Gosling 吗?感谢你给了我一份事业。我已经编写 Java 代码 20 年了,这是一份很棒的事业。’这给了我一种非常棒的满足感。”
—Java 之父 James Gosling
Gosling 指出,Java 已经非常适合云环境,他观察到“过去 30 年发生的大部分事情都是为了使 Java 真正、真正地适用于云。” 他强调了多核处理器处理、内存管理,尤其是垃圾回收方面的改进,他称最新版本的垃圾回收“非常出色”。
在 Oracle 于 2010 年收购 Sun 之后,Gosling 休息了一段时间,然后短暂加入了 Google。那段时间持续了“整整六个月”,之后他搬到了 Liquid Robotics,从事自主海洋机器人的控制系统工作。这个职位将技术挑战与独特的福利结合在一起:“你必须具备的技能之一是浮潜”,并且“部分工作是在夏威夷度过一周或一个月”。
在 Liquid Robotics 的工作涉及环境监测,项目包括研究北极和南极地区的海水温度。然而,正如 Gosling 指出的那样,“研究这些的人根本没有钱”,这给一家风险投资公司带来了挑战。由于投资者推动公司转向 国防应用,Gosling 对这个方向感到不舒服,最终离开了。
他的下一步行动是将他带到了 Amazon Web Services,在那里他从事 Greengrass 项目和其他开发工具工作,直到去年退休。在他的职业生涯中,Gosling 不仅始终关注技术兴趣,还关注伦理方面的考虑。
关于开源的演变,Gosling 观察到“很多人已经弄清楚如何让它为他们服务”,不同的模型出现在不同的环境中。在 Sun,开源“部分是关于协作,部分是关于开发者关系,部分只是关于营销”,提供了一种自下而上的采用方法,这与传统的自上而下的企业销售形成对比。
当被问及“低代码、无代码”趋势时,Gosling表达了他的怀疑,这源于历史背景:“人们几十年来一直在说低代码、无代码。COBOL就是这么宣传的。” 他指出,这种方法通常在狭窄的领域表现出色,但在其特定关注领域之外的复杂性方面则表现不佳。
关于人工智能和机器学习(ML),Gosling主要对术语有异议:“我对人工智能和机器学习的最大问题就是这些名称。” 他认为,“高级统计方法”比那些容易引起对人类推理的误导性类比的术语更准确。 在他看来,这些技术代表着“极其复杂的锤子和螺丝刀”:人类使用的工具,而不是威胁就业的自主系统。
Gosling主要使用NetBeans IDE进行开发,称赞其开源、Apache许可的性质和专注的社区。 他对那些坚持使用过时工具的开发者表示沮丧:“最让我恼火的是那些疯狂抓住80年代或70年代的人——那些仍然想使用Vi的人,Vi在70年代是高科技。”
虽然承认他偶尔会使用Vi“因为Vi无处不在”,但Gosling提倡使用现代开发环境来进行大量的编码工作。
有趣的是,后来成为Java虚拟机(JVM)的概念起源于Gosling的研究生学习期间。 他探索了关于“架构中立的发布格式”的想法,并尝试了不同机器架构之间的交叉指令翻译。
这种早期的探索为JVM的开发提供了信息,JVM此后已成为一项基础技术,不仅使Java,而且使许多其他语言能够在不同的硬件平台上运行。一次编写,随处运行的愿景——最初被认为缺乏足够的数学基础来撰写博士论文而被驳回——最终改变了全球的软件开发实践。
在去年从AWS退休之前,Gosling致力于Greengrass,这是一个用于构建物联网(IoT)应用程序的AWS框架。 这是Gosling技术方法的完美示例:以优雅的简洁性解决复杂的、普遍的问题。
“从‘我有一个可以工作的玩具’到‘你可以实际大规模部署的东西’之间的距离有很多本质上是样板的东西,”Gosling用他特有的能力解释说,使复杂的想法突然变得容易理解。 Greengrass处理了所有这些繁琐的元素——无线更新、远程命令和控制、遥测、网络可靠性、安全性、凭证管理——使开发人员可以专注于使他们的特定应用程序与众不同的方面。
Greengrass的设备端部分是开源的,反映了Gosling长期以来对社区贡献的赞赏。 这种方法产生了好处,用户创建了Amazon尚未优先考虑的平台(如RISC-V)的端口——这显然使他感到满意。
在Greengrass之后,Gosling加入了另一个与软件开发工具相关的AWS项目,但它“陷入了人工智能末日”。
对人工智能的怀疑与此同时,在最近接受The New Stack的采访时,Gosling对席卷科技行业的人工智能革命提出了更为怀疑的看法。 “这主要是一个骗局,”他直言不讳地说,将人工智能描述为“一个带有自己的一桶有毒废物的营销术语”。 虽然承认这些系统背后令人印象深刻的数学原理,但Gosling表示担心人工智能标签掩盖了它们作为高级统计技术的真实本质。
“科技行业中的骗子和炒作者的数量令人精神腐烂。”
—Java之父James Gosling
他特别批评了推动人工智能炒作的风险投资家,他说“科技行业中的骗子和炒作者的数量令人精神腐烂”,并且风险投资家“只关心成功的退出”,而不是构建真正有用的技术。 他预测“绝大多数人工智能投资将被吸入黑洞”。
这是一种氛围吗? 人工智能编码工具:令人印象深刻的演示,有限的实用性当谈到生成式 AI 编码助手 时,Gosling 承认了它们最初的 впечатляющий,但也强调了显著的局限性。“你开始一个 vibe coding 会话,它实际上可能非常酷,”他说,但警告说“一旦你的项目变得稍微复杂,它们几乎总是会崩溃。”
Gosling 认为,根本问题在于这些工具通过抓取现有的代码示例来工作,并且只能复制它们以前见过的东西。这与专业的软件开发存在根本性的不匹配,因为“有趣的东西永远不会重复”,因为好的解决方案被打包到每个人都使用的库中。
“你开始一个 [vibe coding]会话,它实际上可能非常酷,但一旦你的项目变得稍微复杂,它们几乎总是会崩溃。” —James Gosling, Father of Java
Gosling 认为,AI 最有价值的编码应用不是取代程序员,而是“成为没有人愿意编写的文档”——本质上是充当智能搜索引擎,了解代码的工作方式,并可以解释如何使用特定的 API 或功能。
当被问及最近的 Java 发展时,Gosling 承认了一些有价值的语言增强:“通过类型推断实现的一些东西非常好。你知道,数组声明的演变方式非常好。我认为这可以进一步推进。”
然而,他强调说,Java 最近最令人印象深刻的进步是在其运行时环境和库中。“现在 JVM 产生的代码质量非常好。现代版本的 JVM 中的垃圾收集器非常出色。线程的性能非常棒,”他解释说。
他特别赞扬了内存管理和性能可预测性的改进:“Java 存储管理比 malloc 更有效,比 C 存储管理已经很长时间了,但现在它简直令人惊叹。”曾经需要“10 或 20 秒”的 垃圾回收 暂停现在可以通过仔细调整减少到毫秒级,并且“如果你不小心,它仍然远低于一秒。”JVM 现在还可以高效地处理“任意、荒谬的大内存空间”。
当被问及应该使用什么 编程语言 来重建 FAA 的空中交通管制系统 时,Gosling 拒绝了这个问题的前提。“这就像设计房子,但一开始就问我们要买什么牌子的锤子,”他说。
相反,他主张首先了解问题领域——包括通信系统、国际法规、飞机跟踪、防撞和飞行路径规划——然后再为不同的组件选择合适的技术。“根据你想要完成的事情的属性来做决定,”他建议说,尽管他确实指出 Java 在可靠性至关重要的大型系统中会表现出色。
尽管 AI 取得了进步,但 Gosling 坚信 编程仍然是一项必不可少的技能。“如果我今天有一个小孩,我绝对会教他们编程,”他说,并解释说“即使 AI 接管了一切,人们也必须了解他们的系统是如何工作的。”
他驳斥了 科技高管 如 Mark Zuckerberg 和 Marc Benioff 的 AI 将减少对工程师的需求 的说法,认为这些说法是“完全自私的胡说八道”,将这些声明视为定位策略和旨在从员工那里榨取更多工作的隐晦威胁。
“如果我今天有一个小孩,我绝对会教他们编程。即使 AI 接管了一切,人们也必须了解他们的系统是如何工作的。”
—James Gosling, Father of Java
当被问及为什么 Java 能够历经三十年而不衰,而其他语言却逐渐消失时,Gosling 列举了几个因素:解决实际问题、尊重用户、保持向后兼容性、提高开发者生产力以及优先考虑可靠性。
“它从来都不是为了追求时尚,”他解释说。“它始终是为了有效地完成工作,帮助工程师完成他们的工作。” 这种对实用性的关注,而不是对潮流的追逐,对 Java 来说非常有利,尤其是在企业环境中,软件“必须每次都能正常工作”。
此外,Gosling 对 Oracle 自收购 Sun Microsystems 以来对 Java 的管理给予了“B+”的评价。“我真的很害怕他们会做什么,因为他们的记录是掠夺,”他承认,“我只是惊讶于他们做得有多好。”
虽然他希望 Java 团队能够获得更多的资金支持,但 Gosling 赞扬了 Oracle 将团队与公司干预隔离开来——“Oracle 没有搞砸他们”——这超出了他最初对失败的预期。
“我真的很害怕他们会做什么,因为他们的记录是掠夺。我只是惊讶于他们做得有多好。”
—James Gosling, Java 之父
Gosling 曾经告诉我,他喜欢和那些他喜欢一起吃饭的人一起工作(事实上,他说他曾经这样选择过一份工作)。我过去常常习惯于确保我拜访 Thanh Long,这是一家专门经营 烤珍宝蟹 的餐厅,每当我前往旧金山时。我通常在离开城镇前往机场之前去拜访。
一天晚上,我坐在酒吧里,一边享用着美味的螃蟹(我来自马里兰州!),一边把随身行李放在我旁边,James Gosling 从餐厅后面走了出来。我向他打招呼,然后转过身去问一位老板的家人是否知道他是谁。我兴奋地说:“这就是创造了世界上最流行的计算机编程语言的人!” 那个人只是耸了耸肩说:“我想他喜欢螃蟹。” 这种情绪表达的是:“你不知道有多少科技重量级人物来这里吗?!”
Gosling 和我后来在 Thanh Long 一起吃了晚餐,这也是我们在最近的谈话中说的最后一件事:下次你来的时候,我们就在那个地方见面吧。所以,下次我去旧金山的时候,我会和“Java 之父”一起分享面包,一起啃螃蟹。即使现在每只螃蟹要 80 美元,我们也会聊天、欢笑,度过一段美好的时光。
来源:雷霆战神王