一直被唱衰的 Java,曾令比尔·盖茨“焦虑难眠”

2024-02-02 22:40

本文主要是介绍一直被唱衰的 Java,曾令比尔·盖茨“焦虑难眠”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

c77931208f2e4def6f7a35b5fd080339.gif

整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

时光一晃又是一年,尽管近年来 Java 一直被唱衰,但这丝毫也不妨碍它成为 2021 年十大技术热词之一。Java 诞生至今已经 26 年了,相较于部分起步较慢的编程语言,Java 自问世起,其“一次编写,随处运行”的特点便很快受到了 IBM、苹果、甲骨文等科技巨头的欢迎。

在 Java 被“炒作”的巅峰期,它甚至被誉为“一项会极大影响微软未来的技术”——利用 Java,可创建能在所有操作系统上运行的桌面应用程序,即开发人员不必再为了生存只能专注编写 Windows 程序。

在此形势下,1996 年 9 月的某一天,微软浏览器部门主管向时任微软 CEO 的比尔·盖茨详细解释了 Java 给微软带来的威胁,并恳切提醒道:“Java 绝不仅仅是一种语言,它是 COM 的替代者(COM 即 Componet Object Model,在 Windows 中大量使用的编程模型)!”

从此前公布的资料来看,比尔·盖茨虽然第二天就看似冷静地回复称应先了解 Java 对微软操作系统的影响何在,但本周四 @TechEmails 在推特上公布了当时的更多细节:1996 年 9 月 30 日晚上 9:36,比尔·盖茨给当时身为微软 CTO 的 Nathan Myhrvold 发了一个邮件,主题为“Java 运行时成为操作系统”,并表示“我真的为此失眠了”。(注:Nathan Myhrvold 曾在微软工作 14 年,于 2000 年辞职,后与 Edward Jung 共同创办了美国知识风险公司 Intellectual Ventures,担任 CEO 一职。)

b067f204155077615b458ca509f0eb9c.jpeg

29f92e8afa3ac3a49bd0c61f7126dbcb.png

“这个问题并没有严重到令人失眠”

从邮件中可以看出,不论是之前浏览器部门主管的恳切提醒,还是当时 Java 盛行下开发者的热情,都令比尔·盖茨感到无比焦虑:

“我很担心 Java/Javabean 和其运行时到底会发展成怎样、会让多少人兴奋。我真的在这个问题上失眠了,因为随着转向更多基于服务器的应用程序,似乎会让人们易于使用我们竞争对手的操作系统。

我很想听听你对此的看法。你认为我们有什么防御措施来应对这种情况?我实在没有想出什么能解决这种情况的方法,这削弱了我的创造力。”

d613ad2acfd82f97b62a0413988a21b4.png

第二天,即 10 月 1 号,Nathan Myhrvold 就回复了一封超长邮件,开头明确表达了他的看法:“我承认这是一个进退两难的问题,但它还没有严重到会让你失眠的程度。”当时 Java 尚在起步阶段,而 Nathan Myhrvold 认为,从“商业”角度看来,人们对其有些“过度炒作”了。

诚然,Java 的出现为人们提供了许多新鲜感:可以用它做出很棒的网页、程序员有新东西可以学、推动相关书籍的售卖、给软件工具公司提供一种发布新开发工具的方式…在这之中,肯定会有人获得成功,从而吸引越来越多人加入 Java 生态,跨平台的诉求会愈发高涨,最终对微软造成极大的压力与困境——但 Nathan Myhrvold 指出:“新技术的确会杀死旧业务,可这不会发生得那么快,在此之前我们还有很多机会来挽回局面。”

因此,Nathan Myhrvold 在邮件中向比尔·盖茨宽慰道:“在这场战斗中,作为被挑战方自然会有不舒服的感觉,但我们绝不能惊慌,因为焦虑情绪对实际业务和收入问题无甚裨益,我们不能让感性问题过多地影响我们的思考。”

61f25a9e07a477e779b98c63e341ca1c.png

1996 年已预言“虚拟世界”的潜力

不过 Nathan Myhrvold 补充道:“这并不是说 Java 不重要,相反 Java 是非常重要的,只是我认为你把重点错放在了还未成型的威胁上。我们正面临失去一个新市场的危险,而这个市场将快速增长。”所以与其将时间浪费在无谓的情绪上,立刻做出改变并行动起来是最好的解决方法

结合当时局势及微软自身情况,Nathan Myhrvold 列出了以下三点必做事项

1、用微软自己的方式来显著改善网页,包括继续“拥抱和扩展”以及创造一些激进的新方法来改进网页或构建 Web 应用程序。

其中,“拥抱和扩展”指的是新 Java 工具(如 J++,微软实现 Java 的开发套件和运行时环境的统称)层面,但 Nathan Myhrvold 认为将鸡蛋完全放在这个“篮子”里也并非明智之举,这可能会引导微软放弃其真正的优势,因此在这过程中,微软需想出其他新方法来提升自我。

2、开拓其他途径来参与新市场,想出一些能振兴互联网的创意。

这个“创意”并不一定需要什么复杂技术,更多是依靠创造力寻求新机遇的一种方式。在邮件中,Nathan Myhrvold 举了两个例子,分别是“虚拟世界”和“做服务器应用或网络事务的新方法”——在此不得不感慨 Nathan Myhrvold 极具前瞻性的眼光:1996 年认为会振兴互联网的“虚拟世界”正预言了当前“元宇宙”、“AR/VR”爆火的趋势

3、继续投资微软的核心业务资产,尤其是 Windows 运行时(WinRT)

Nathan Myhrvold 对这一点的解释为:假设 Java 真的成功且完全跨平台,那人们为什么要选择 Windows 而不是其他系统呢?这必将取决于系统的其他方面,即非 Web 维度对用户选择系统也十分重要,这也是微软的优势所在,需加大投入保持领先地位,不要因为 Java 可能带来的冲击就自乱阵脚。

在这点上,Nathan Myhrvold 同样给出了一些具体措施:

  • 必须成为多媒体领域的领导者。如比 SGI 和 Mac 更好的图形/视频/音频最佳创作平台、比 Ultra64 和 Playstation 更好的最佳游戏平台等。

  • 进一步保证产品易用性。例如须确保 PC 即时启动、具有自我配置、自我诊断等功能。这注定会带来许多额外的工作,但同时也会收获意外的奖励。

  • 利用 Web 给旧应用提供新功能。如“我的工作空间”这一概念,可以完全抽象网络上的存储,这对用户来说将是一个巨大的转变——因为存储抽象是当时 PC 中最难实现的东西之一。Nathan Myhrvold 指出:“如果我们基于 STORAGE(即文件系统 API)执行此操作,则可以缩短向基于其他 API 或协议分发的长期迁移过程。”

在邮件最后,提出以上长篇建议的 Nathan Myhrvold 调侃道:“我也不知道这样是让你少担心了还是更担心了。”但他始终认为,即使 Java 盛行可能会给微软带来严重影响,但“我们远比想象中有更多的选择,且有实力创造一些任何人都难以匹敌的终端用户价值”。

此后,微软与 Java 开发方 Sun 公司可谓是“纠缠多年”:一会 Sun 公司以“歧视使用 Java 软件”为由起诉微软,一会微软又在 Windows XP 中故意不安装 Java 软件。但到最后,微软还是逃不过“真香定理”:2018 年微软旗下 IDE Visual Studio 开始支持 Java 开发;2019 年微软宣布加入 OpenJDK,拥抱 Java 技术。

53a5ab2bf87e33fc11e80a3fee6374c2.png

网友:“人们至今还在为 Java 失眠呢”

在 @TechEmails 公布以上比尔·盖茨的提问及 Nathan Myhrvold 的回复截图后,除了对当年微软应对 Java 的细节有更深刻了解外,许多网友也对 Nathan Myhrvold 极强的技术洞察力感到钦佩

“哇,所以 Nathan 在1996 年就预测了 metaverse(“虚拟世界”)和云(“存储抽象”)。”

“这是一次很棒的交流。你可以看到盖茨对获胜的‘不健康’看法,而 Nathan 则旨在将盖茨重定向到产品价值层面,同时他对技术的发展也很有洞察力。”

有人感慨非常“理解”比尔·盖茨的感受:“放心,人们至今还在为 Java 失眠呢。”

参考链接:https://twitter.com/techemails/status/1478785899009875968?s=21

29bd9da2daf3efdca385edd106046280.gif

d130a328bcac5ff18ad89f41f36e67c2.jpeg

 

b3ddb5c78f622377200e72eeac75c749.gif

 
 
☞云以致用·智效合一 | 第四届 Techo TVP 开发者峰会强势来袭!
☞七成清华毕业生进入体制内就业,华为腾讯等科企受青睐;苹果M1首席芯片设计师跳槽至英特尔|极客头条
☞被苹果“分手”后,英特尔华丽逆袭:新款酷睿 i9 碾压 M1 Max?

80f9a7c0e643fa88c2a73a17274950fc.png

这篇关于一直被唱衰的 Java,曾令比尔·盖茨“焦虑难眠”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/672196

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S