一直被唱衰的 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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定