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

2024-02-02 22:40

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

时光一晃又是一年,尽管近年来 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 一职。)

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

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

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

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

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

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

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

二、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 技术。

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

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

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

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

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

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

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



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

相关文章

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll