写点什么

Java 之父独家专访:我可太想简化一下 Java 了

  • 2022-01-28
  • 本文字数:4161 字

    阅读完需:约 14 分钟

Java之父独家专访:我可太想简化一下 Java了

IEEE Spectrum 2021 年度编程语言排行榜新鲜出炉,不出意料,Java 仍稳居前三。自 1995 年诞生以来,Java 始终是互联网行业炙手可热的编程语言。近年来,新的编程语言层出不穷,Java 如何做到 26 年来盛行不衰?面对技术新趋势,Java 语言将如何发展?在亚马逊云科技 re:Invent 十周年之际,InfoQ 有幸对 Java 父 James Gosling 博士进行了一次独家专访。James Gosling 于 2017 年作为“杰出工程师”加入亚马逊云科技,负责为产品规划和产品发布之类的工作提供咨询支持,并开发了不少原型设计方案。在本次采访中,James Gosling 谈到了 Java 的诞生与发展、他对众多编程语言的看法、编程语言的未来发展趋势以及云计算带来的改变等问题。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    Java 的诞生与发展


    InfoQ:Java 语言是如何诞生的?是什么激发您创建一门全新的语言?


    James Gosling:Java 的诞生其实源于物联网的兴起。当时,我在 Sun 公司工作,同事们都觉得嵌入式设备很有发展前景,而且随着设备数量的激增,整个世界正逐渐向智能化的方向发展。我们投入大量时间与不同行业的从业者进行交流,也拜访了众多东南亚、欧洲的从业者,结合交流心得和行业面临的问题,决定构建一套设计原型。正是在这套原型的构建过程中,我们深刻地意识到当时主流的语言 C++ 存在问题。


    最初,我们只打算对 C++ 做出一点小调整,但随着工作的推进、一切很快“失控”了。我们构建出不少非常有趣的设备原型,也从中得到了重要启示。因此,我们及时对方向进行调整,希望设计出某种适用于主流业务和企业计算的解决方案,这正是一切故事的开端。


    InfoQ:Java 作为一门盛行不衰的语言,直到现在依旧稳居编程语言的前列,其生命力何在?


    James Gosling:Java 得以拥有顽强的生命力背后有诸多原因。


    首先,采用 Java 能够非常便捷地进行多线程编程,能大大提升开发者的工作效率。


    其次,Java 提供多种内置安全功能,能够帮助开发者及时发现错误、更加易于调试,此外,各种审查机制能够帮助开发者有效识别问题。


    第三,热修复补丁功能也非常重要,亚马逊开发者开发出的热补丁修复程序,能够在无须停机的前提下修复正在运行的程序,这是 Java 中非常独特的功能。


    第四,Java 拥有很好的内存管理机制,自动垃圾收集大大降低了内存泄露或者双重使用问题的几率。总之,Java 的设计特性确实提升了应用程序的健壮性,特别是极为强大的现代垃圾收集器方案。如果大家用过最新的长期支持版本 JDK17,应该对其出色的垃圾收集器印象深刻。新版本提供多种强大的垃圾收集器,适配多种不同负载使用。另外,现代垃圾收集器停顿时间很短、运行时的资源消耗也非常低。如今,很多用户会使用体量极为庞大的数据结构,而只要内存能容得下这种 TB 级别的数据,Java 就能以极快的速度完成庞大数据结构的构建。


    InfoQ:Java 的版本一直以来更新得比较快,几个月前发布了最新的 Java17 版本,但 Java8 仍然是开发人员使用的主要版本,新版本并未“得宠”,您认为主要的原因是什么?


    James Gosling:对继续坚守 Java8 的朋友,我想说“是时候作出改变了”。新系统全方位性更强、速度更快、错误也更少、扩展效率更高。无论从哪个角度看,大家都有理由接纳 JDK17。确实,大家在从 JDK8 升级到 JDK9 时会遇到一个小问题,这也是 Java 发展史中几乎唯一一次真正重大的版本更替。大多数情况下,Java 新旧版本更替都非常简单。只需要直接安装新版本,一切就能照常运作。长久以来,稳定、非破坏性的升级一直是 Java 的招牌特性之一,我们也不希望破坏这种良好的印象。


    InfoQ:回顾当初,你觉得 Java 设计最成功的点是什么?相对不太满意的地方是什么?


    James Gosling:这其实是一种博弈。真正重要的是 Java 能不能以更便利的方式完成任务。我们没办法设想,如果放弃某些问题域,Java 会不会变得更好?或者说,如果我现在重做 Java,在取舍上会有不同吗?区别肯定会有,但我估计我的取舍可能跟大多数人都不一样,毕竟我的编程风格也跟多数人不一样。不过总的来讲,Java 确实还有改进空间。


    InfoQ:有没有考虑简化一下 Java?


    James Gosling:我可太想简化一下 Java 了。毕竟简化的意义就是放下包袱、轻装上阵。所以 JavaScript 刚出现时,宣传的就是精简版 Java。但后来人们觉得 JavaScript 速度太慢了。在 JavaScript 的早期版本中,大家只是用来执行外部验证之类的简单事务,所以速度还不太重要。但在人们打算用 JavaScript 开发高性能应用时,得出的解决方案就成了 TypeScript。其实我一直觉得 TypeScript 的定位有点搞笑——JavaScript 就是去掉了 Type 的 Java,而 TypeScript 在 JavaScript 的基础上又把 type 加了回来。Type 系统有很多优势,特别是能让系统运行得更快,但也确实拉高了软件开发者的学习门槛。但如果你想成为一名专业的软件开发者,那最好能克服对于学习的恐惧心理。


    Java 之父的编程语言之见


    InfoQ:一款优秀的现代化编程语言应该是怎样的?当下最欣赏哪一种编程语言的设计理念?


    James Gosling:我个人还是会用最简单的评判标准即这种语言能不能改善开发者的日常工作和生活。我尝试过很多语言,哪种更好主要取决于我想干什么。如果我正要编写低级设备驱动程序,那我可能倾向于选择 Rust。但如果需要编写的是用来为自动驾驶汽车建立复杂数据结构的大型导航系统,那我几乎肯定会选择 Java。


    InfoQ:数据科学近两年非常热门,众所周知,R 语言和 Python 是数据科学领域最受欢迎的两门编程语言,那么,这两门语言的发展前景怎么样?因具体的应用领域产生专用的编程语言,会是接下来编程语言领域的趋势之一吗?


    James Gosling:我是领域特定语言的铁粉,也深切认同这些语言在特定领域中的出色表现。大多数领域特定语言的问题是,它们只能在与世隔绝的某一领域中发挥作用,而无法跨越多个领域。这时候大家更愿意选择 Java 这类语言,它虽然没有针对任何特定领域作出优化,但却能在跨领域时表现良好。所以,如果大家要做的是任何形式的跨领域编程,肯定希望单一语言就能满足所有需求。有时候,大家也会尝试其他一些手段,希望在两种不同的领域特定语言之间架起一道桥梁,但一旦涉及两种以上的语言,我们的头脑通常就很难兼顾了。


    InfoQ:Rust 一直致力于解决高并发和高安全性系统问题,这也确实符合当下绝大部分应用场景的需求,对于 Rust 语言的现在和未来您怎么看?


    James Gosling:在我看来,Rust 太过关注安全了,这让它出了名的难学。Rust 解决问题的过程就像是证明定理,一步也不能出错。如果我们只需要编写一小段代码,用于某种固定不变的设备,那 Rust 的效果非常好。但如果大家需要构建一套具有高复杂度动态数据结构的大规模系统,那么 Rust 的使用难度就太高了。

    编程语言的学习和发展


    InfoQ:编程语言倾向于往更加低门槛的方向发展,开发者也更愿意选择学习门槛低的开发语言,一旦一门语言的学习成本过高,开发者可能就不愿意去选择了。对于这样的现象,您怎么看?


    James Gosling:要具体问题具体分析。我到底需要 Rust 中的哪些功能特性?我又需要 Java 中的哪些功能特性?很多人更喜欢 Python,因为它的学习门槛真的很低。但跑跑基准测试,我们就会发现跟 Rust 和 Java 相比,Python 的性能实在太差了。如果关注性能,那 Rust 或 Java 才是正确答案。另外,如果你需要的是只有 Rust 能够提供的那种致密、安全、严谨的特性,代码的编写体量不大,而且一旦出问题会造成严重后果,那 Rust 就是比较合适的选择。只能说某些场景下某些语言更合适。Java 就属于比较折衷的语言,虽然不像 Python 那么好学,但也肯定不算难学。


     InfoQ:当前,软件项目越来越倾向采用多语言开发,对程序员的要求也越来越高。一名开发人员,应该至少掌握几种语言?最应该熟悉和理解哪些编程语言?


    James Gosling:我刚刚入行时,市面上已经有很多语言了。我学了不少语言,大概有几十种吧。但很多语言的诞生本身就很荒谬、很没必要。很多语言就是同一种语言的不同方言,因为它们只是在用不同的方式实现基本相同的语言定义。最让我振奋的是我生活在一个能够致力于解决问题的世界当中。Java 最大的吸引力也正在于此,它能帮助我们解决几乎任何问题。具有普适性的语言地位高些、只适用于特定场景的语言则地位低些,对吧?所以到底该学什么语言,取决于你想解决什么问题、完成哪些任务。明确想要解决什么样的问题才是关键。


     InfoQ:2021 年,技术圈最热门的概念非元宇宙莫属,您认为随着元宇宙时代的到来,新的应用场景是否会对编程语言有新的需求?可否谈谈您对未来编程语言的理解?


    James Gosling:其实人们从很早开始就在构建这类虚拟世界系统了,所以我觉得元宇宙概念对编程不会有什么影响。唯一的区别是未来我们可以漫步在这些 3D 环境当中,类似于大型多人游戏那种形式。其实《我的世界》就是用户构建型元宇宙的雏形嘛,所以这里并没有什么真正新鲜的东西,仍然是游戏粉加上社交互动机制的组合。我还想强调一点,虚拟现实其实没什么意思。我更重视与真实人类的面对面互动,真的很难想象自己有一天会跟独角兽之类的虚拟形象聊天。


    写在最后:云计算带来的改变


    InfoQ:您最初是从什么时候或者什么具体事件开始感受到云计算时代的到来的?


    James Gosling:云计算概念的出现要远早出云计算的真正实现。因为人们一直把计算机摆在大机房里,再通过网络连接来访问,这其实就是传统的 IT 服务器机房,但这类方案维护成本高、建造成本高、扩展成本也高,而且对于人员技能等等都有着很高的要求。如果非要说,我觉得多租户云的出现正是云计算迎来飞跃的关键,这时候所有的人力与资本支出都由云服务商负责处理,企业客户再也不用为此烦心了。他们可以单纯关注自己的业务重心,告别那些没完没了又没有任何差异性可言的繁重工作。


    InfoQ:云计算如今已经形成巨大的行业和生态,背后的根本驱动力是什么?


    James Gosling:云计算的驱动力实际上与客户当前任务的实际规模有很大关系。过去几年以来,数字化转型已经全面掀起浪潮,而这波转型浪潮也凸显出新的事实,即我们还有更多的探索空间和机遇,例如,现在人们才刚刚开始探索真正的机器学习能做些什么,能够以越来越有趣且多样的方法处理大规模数据,开展数据分析,获取洞见并据此做出决策,而这一切既是客户需求,也为我们指明了接下来的前进方向。亚马逊云科技做为云科技领导者,引领着云科技的发展,改变着 IT 世界,切实解决了企业客户的诸多痛点。

    2022-01-28 15:2217877
    用户头像

    发布了 91 篇内容, 共 57.7 次阅读, 收获喜欢 58 次。

    关注

    评论 1 条评论

    发布
    用户头像
    主持人不露面吗
    2025-10-14 02:03 · 湖北
    回复
    没有更多了
    发现更多内容

    轻松玩转小程序,这样做让你拥有2亿用户

    加入高科技仿生人

    小程序 低代码 小程序制作 小程序开发

    华为阅读发布最新进展,月活用户超1亿,大力发展精品阅读

    最新动态

    Kubernetes网络策略之详解

    乌龟哥哥

    三周年连更

    如何在页面中监听“不存在”的 DOM 节点

    茶无味的一天

    JavaScript DOM web api 水印 MutationObserver

    使用depay信用卡开通chatGPT付费API

    石云升

    AI ChatGPT 三周年连更

    Gartner发布中国容器管理平台供应商识别指南,灵雀云实力入选

    York

    容器 云原生 系统架构 研究报告 平台选型

    Backgrounds——为所有人准备的mac动态壁纸,让桌面更生动

    互联网搬砖工作者

    企业级无代码平台,「重塑」软件生产关系

    ToB行业头条

    从 Dev 和 Ops 视角出发,聊聊 DevSecOps 的 What / Why / How

    极狐GitLab

    DevOps 安全 DevSecOps 安全左移 安全合规

    MySQL进阶之道,MySql性能实战源码+笔记+项目实战

    程序知音

    Java MySQL 数据库 后端

    带你掌握数仓的作业级监控TopSQL

    华为云开发者联盟

    数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

    如何从1到99做好产品 | 得物技术

    得物技术

    常用测试策略与测试手段

    测吧(北京)科技有限公司

    测试发开

    今晚直播 | 思码逸陆春蕊:面对研发效能度量落地难点,如何让数据说话?

    思码逸研发效能

    研发效能

    白盒的测试方法

    测吧(北京)科技有限公司

    测试

    瓴羊quickbi工具免费体验30天,零基础上手企业数据更直观

    对不起该用户已成仙‖

    熬夜肝到秃头!阿里顶配级Spring Security笔记

    程序知音

    Java spring 后端 spring security java架构

    中国边缘云公有云服务市场 Top2,百度智能云让智算无处不在

    百度开发者中心

    云计算 #百度智能云# 边缘云

    “亮相”欧洲!TDengine 在 KubeCon 与开发者探讨云原生与数据库的技术结合

    TDengine

    tdengine 时序数据库 KubeCON

    玩转服务器之Docker篇:10分钟学会搭建 Docker 环境

    京东科技开发者

    云计算 容器 Docker 镜像 企业号 4 月 PK 榜

    微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存

    Bug终结者

    redis缓存 三周年连更

    深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。

    汀丶人工智能

    人工智能 深度学习 学习率 warmup batchsize

    小技巧:如何让 Windows 应用程序在 Parallels Desktop 中启动得更快

    互联网搬砖工作者

    算法刷题-单词接龙、矩阵中的最长递增路径、Z 字形变换

    共饮一杯无

    数据结构 算法 三周年连更

    IPv6常见安全问题

    穿过生命散发芬芳

    ipv6 三周年连更

    数字化转型框架如何搭建?

    优秀

    数字化转型

    重新学习Java线程原语

    码语者

    Java 线程

    矢量图片转换工具:Vector Magic 免激活版

    真大的脸盆

    Mac Mac 软件 图片格式转换 图片格式

    详解数据结构中栈的定义和操作

    华为云开发者联盟

    数据结构 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

    电子元器件“切开后”,原来是这样子的!

    元器件秋姐

    科普 三极管 元器件 二极管 电感

    户外led电子屏未来发展趋势

    Dylan

    技术 LED显示屏 户外LED显示屏

    Java之父独家专访:我可太想简化一下 Java了_语言 & 开发_张雅文_InfoQ精选文章