写点什么

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
    • 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 世界,切实解决了企业客户的诸多痛点。

    公众号推荐:

    跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

    发布了 56 篇内容, 共 26.1 次阅读, 收获喜欢 43 次。

    关注

    评论

    发布
    暂无评论
    发现更多内容

    数据库原理及MySQL应用 | 事件

    TiAmo

    MySQL 数据库 事件

    FastAPI 开发中数据校验利器 Pydantic 介绍与集成使用

    宇宙之一粟

    Python 后端 FastApi Pydantic

    Flink Table Store 独立孵化启动 , Apache Paimon 诞生

    Openlab_cosmoplat

    大数据 开源

    聚焦用户精细化运营场景,极客邦科技与火山引擎数智平台达成合作

    字节跳动数据平台

    用户增长 数字化 用户运营 数字化案例 企业号 4 月 PK 榜

    MobPush推送查询API

    MobTech袤博科技

    景顺长城基于 Apache APISIX 在金融云原生的生产实践

    API7.ai 技术团队

    api 网关 APISIX 金融业务

    [验证码] KgCaptcha风险监测方法

    宙哈哈

    php html

    大模型打开了一层技术天花板,催生新场景变革老场景

    中关村科金

    人工智能 企业服务 大模型 对话式AI

    阿里云弹性计算资深技术专家徐海弘:云上自动化运维成熟度模型

    云布道师

    弹性计算

    sync.WaitGroup:掌握并发编程中的重要工具

    Jack

    WebAssembly 助力云原生:APISIX 如何借助 Wasm 插件实现扩展功能?

    API7.ai 技术团队

    api 网关 APISIX Wasm

    通过 NFTScan 追踪 NFT 钻石手持仓

    NFT Research

    NFT NFTScan

    软件测试/测试开发丨测试步骤代码修改,用 Yaml实现数据驱动

    测试人

    软件测试 自动化测试 yaml 测试开发 UI自动化测试

    DataLeap数据资产实战:如何实现存储优化?

    字节跳动数据平台

    MySQL 数据库 大数据 数据治理 数据存储

    「刷起来」Go必看的进阶面试题详解

    王中阳Go

    golang 高效工作 学习方法 面试题 Go 语言

    量化交易场景下日增 144 万条数据,使用 MySQL 和 TDengine 分别如何建模?

    TDengine

    大数据 tdengine 物联网 时序数据库

    ZRTC高并发策略在专属音视频中台场景的应用

    中关村科金

    RTC 中关村科金 音视频中台 高并发策略 对话式AI

    软件测试/测试开发丨录制你的第一个web 自动化测试用例

    测试人

    软件测试 自动化测试 测试开发 Web自动化测试

    上网买个东西,居然需要那么多业务系统支撑!

    产品海豚湾

    SaaS 电商 供应链 电商平台 wms

    助力企业数字化转型,「一体化」或是最佳实践路径

    ToB行业头条

    KgCaptcha接入汇总

    宙哈哈

    Java php Python C# html

    使用验证码拦截爬虫和机器人实践分享

    宙哈哈

    php html 爬虫 机器人

    基于二代征信报告的信用评估模型实践

    中关村科金

    金融 征信 风控 对话式AI

    学了这么久的高并发编程,连Java中的并发原子类都不知道?

    华为云开发者联盟

    Java 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

    从零学习SDK(1)什么是SDK,为什么要使用它

    MobTech袤博科技

    尚硅谷新版Git视频教程发布

    小谷哥

    流媒体数字版权应用实践

    Marvin Ma

    数字版权 流媒体

    MIAOYUN与OpenCloudOS、TencentOS Server 3完成产品兼容互认证

    MIAOYUN

    容器云 云平台 产品兼容性互认 互认证 兼容性互认证

    如何在 Web 实现支持虚拟背景的视频会议

    声网

    Web 视频会议 RTE 虚拟背景

    低代码有哪些缺点?4千字深入解析

    优秀

    低代码 低代码缺点

    传输体积下降 85%,融云 HTTP 压缩算法解析

    融云 RongCloud

    算法 音视频 传输 融云 通讯

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