作者 | 苏宓

出品 | CSDN(ID:CSDNnews)

虽然一直以来,微软的不少产品在很多层面都有使用 Java 语言,但近日其官网上的一则「Microsoft is committed to the success of Java developers」(微软致力于 Java 开发者的成功)的公告正式吹响了微软全面拥抱 Java 的号角。

对此,我们也不禁好奇,继构建 C#、.NET、TypeScript、Visual BASIC、JScript 等语言之外,微软为何要大费周章地再去深入 Java?在本文中,我们将从近年来微软的种种足迹中探寻原因。

微软对 Java 的最新动作

在这篇公告中,微软开发者部总裁潘正磊(Julia Liuson)表示,“作为一家公司,我们致力于使 Java 开发人员尽可能地高效和高产。这一承诺意味着开发者能够在任何操作系统上使用任何工具、框架和应用服务器。”

为此,微软推出了一个专门针对 Java 所有相关内容的新网站(developer.microsoft.com/java),该网站提供了微软 Java 云开发团队的最新内容以及技术文档、工具、资源、教程、视频和代码示例。

除此之外,微软也在工具方向增加了对 Java 的诸多支持,其中,在新版本的 VS Code 中带来了更多 Spring 相关的新功能更新,譬如:

  • 其一,增加了查看实时进程中的 Spring Bean 属性。

如果没有 IDE 的支持,开发者必须编写代码来获取 ApplicationContext 和调用 .getBeanDefinitionNames() 才能得到同样的结果。比如说:

System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames());

在添加了这一功能之后,VS Code 可以展现 Bean 的属性信息,即它们是否是 Singleton、prototype 等,同时还可以用“defined”来标记自己的 Bean,以保持事情的条理性。

  • 其二,更好的 Spring 入门体验。

通过让 IDE 自动加载 Initializr 的 HELP.md 文件,为使用 Spring Initializr 初始化的项目提供了更好的启动体验。事实上,HELP.md 包含了有用的信息,但过去大部分开发者都忽略了它的存在,如今随着这一功能的改进,方便开发者上手。

  • 其三,Java Project Explorer 集成了 Maven 和 Gradle

有点像 Intellij,微软加强了 VS Code,使其更容易访问最频繁的构建操作,如访问访问 POM 或调用 Maven。

与此同时,微软并没有把对 Java 和 Spring 的支持局限于 VSCode,它还加强了对 Intellij 和 Azure 的支持。

微软与 Java 的爱恨情仇

当然,以上仅是微软近段时间为扩建自己的 Java 生态版图所做的一些工作。其实,微软对拿下 Java 开发者的“野心”也非一两天之间才有的。

如果说曾经依靠 Windows 构建起生态帝国的微软不可一世,从藐视开源、嫌弃 Linux,再到开源、数字化浪潮下的“微软爱 Linux”并稳居开源贡献榜单的 Top 之列,那么,它对 Java 的态度也有这样的一个转变过程。

在 Java 诞生的第二年,一群有敏锐的前瞻意识的人发现了这门语言的潜力,其中就包括了来自微软的专家们。时任微软 CEO 的比尔·盖茨也曾评价道,“Java 是很长时间以来最优秀的程序设计语言。”

在此趋势之下,微软在 1996 年 3 月与还没有被 Oracle 收购的 Sun Microsystems 签订了一份 Java 许可协议。可以说,微软应用 Java 的这一举措也极大地推动了 Java 自身的普及与发展。不过,好景并不长。

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

随即,比尔·盖茨给当时身为微软 CTO 的 Nathan Myhrvold 发了一封主题为“Java 运行时成为操作系统”的邮件,并表示“我很担心 Java/Javabean 和其运行时到底会发展成怎样、会让多少人兴奋。我真的在这个问题上失眠了,因为随着转向更多基于服务器的应用程序,似乎会让人们易于使用我们竞争对手的操作系统。”

为了降低这样的焦虑,微软研发了一款 Java 集成开发环境,使用的语言是 J++。一定程度上可以将 J++ 视为是 Java 的一个变种,其语法、关键字等都与 Java 有异曲同工之处。

这样有些“擦边球”的行为,引发了 Sun 公司的注意。于是,1997 年 11 月,Sun 公司以违反合同为由对微软提起诉讼,指控微软分发了与 Sun 不兼容的 Java 版本。Sun 于 1998 年 5 月修改了其诉讼书,添加了不正当竞争和侵犯版权的指控。

彼时 Sun 在法庭上辩称,微软将 Java 的“一次编写,随处运行”功能视为对 Windows 的威胁,因为 Java 降低了软件开发人员为微软操作系统编写程序的动力。据 Sun 公司称,微软发布的 Java 版本与其 Windows 软件配合得更好。Sun 的律师表示,这样的举动威胁到 Java 提供跨平台开发环境的能力。

微软强烈否认有任何不当行为,并坚称它坚持与 Sun 签订的许可协议。该公司辩称,微软对 Java 所做的任何更改都只是允许开发人员利用 Windows 特有的功能。

历经三年之后,在 2001 年 1 月,两家达成和解,最终以微软同意向 Sun Microsystems 支付 2000 万美元,并且永久禁止在其产品上使用“Java 兼容”商标。不过,此时的微软还可以继续提供采用 Sun 开发的 Java 技术的现有产品,但这一场官司也让微软有了其他的想法。

在这一年的 7 月,微软宣布开始在 Windows XP 系统中不再支持 Sun 的 JVM,从而扶持自家的 .NET 平台,与 Java 分庭抗礼。

为什么此时要对 Java 展开攻势?

那要问微软为何要在时下再次拥抱 Java,根据微软官方的解释是,「如今,越来越多的 Java 开发者正在考虑如何将现有的 Java 应用程序迁移到云中,或者如何构建新的云原生应用程序。我们一直在努力让您更轻松地使用您喜欢的工具和框架将 Java 应用程序迁移到云中。然后,您可以使用您已经了解和信任的相同应用程序服务器和开源技术轻松部署和扩展。」

多年来,Java 已经积累了庞大的开发者群体,且有数以万计的设备使用 Java。在云时代下,微软在产品研发过程中也添加了对 Java 的高度支持。

除了在上文提到了的 VS Code 之外,微软在 Intellij IDEA、GitHub、Playwright、Apache Maven、Gradle 等工具方面,以及在某些产品上都有 Java 的身影。

如微软在搜索引擎 Bing 中的支持 Windows 开始菜单中的搜索功能,便是使用 Java 来执行与索引相关的功能,同时 Bing 横跨 50,000 多台服务器上有数十万个 JVM。

在 2019 年 8 月,微软收购了一家主营业务是 Java 性能优化的公司——jClarity。2021 年,时间点有些巧合的是,彼时 4 月 5 日,美国最高法院在 Google 与 Oracle 之间关于在 Android 使用 Java 的诉讼案中,最终判定 Google 开发 Android 使用的 Java API 代码合理。次日,与此事没有任何关系的科技巨头微软便推出了自家的 JDK 项目 Microsoft Build of OpenJDK 版本。

来源:https://cdn.graph.office.net/prod/media/java/infographic-evolution-of-java-at-microsoft.pdf?v={1/string}

整体而言,微软此举一方面是想要在 Java 的市场中站稳脚跟,另一方面根据官方发布的 Java 演进图显示,微软在自己的基础设施中大量使用 Java,特别是它的 Azure 生态系统(Azure Spring Cloud、Azure App Service、Azure Functions、Azure Kubernetes),为此它需要有自己的统一和通用的构建方式。

再者,正如 i-programmer 评价道,“微软此举还有将 Azure 推给 Java 开发者的宣传动机,微软试图引诱他们,甚至通过提供免费课程帮助他们迁移他们的应用程序。”

不过,归根究底,对开发者而言,也是一个不错的消息。

参考资料:

https://www.infoworld.com/article/2074908/sun-microsoft-settle-java-lawsuit.html

https://www.i-programmer.info/news/80-java/15701-microsoft-goes-all-out-on-java.html

— 推荐阅读 —

微软全力拥抱 Java !相关推荐

  1. 微软彻底拥抱 Python!

    [CSDN 编者按]一直以来,C# 可以说是微软在编程语言方面最为显著的一大标签,甚至于知乎上都有「微软的所有程序员都用 C# 吗?」的提问.但时至今日,微软正在逐步地拥抱 Java.JavaScri ...

  2. 继 SpringBoot 3.0,Elasticsearch8.0 官宣:拥抱 Java 17

    大家好,我是君哥. 新版任你发,我用 Java 8,这可能是当下 Java 开发者的真实写照.不过时代可能真的要抛弃 Java 8,全面拥抱 Java 17 了. Spring Boot 3.0 前些 ...

  3. Eclipse 4.10.0 正式发布,全面拥抱 Java 11!

    近日,Eclipse 官方团队于推特正式宣布推出号称"史上最强"的版本更新--Eclipse IDE 2018-12,此前有过"路透"的新特性亦如约而至,其中就 ...

  4. 微软警告:Java虚拟机发现2个重要安全漏洞(转)

    微软警告:Java虚拟机发现2个重要安全漏洞(转)[@more@] 微软公司9月18日晚上向Windows操作系统的所有用户发出警告说,有两个重要的安全漏洞能够让恶意的攻击者控制受害者的计算机. ?? ...

  5. 人工智能阿凡达平台发布,全力拥抱“元宇宙”

    "到底是真人,还是AI生成的?"面对屏幕中的英伟达(NVIDIA)创始人兼CEO黄仁勋,许多人持怀疑态度. 这是因为今年8月,在一次公开演讲中,黄仁勋用了14秒的"虚拟人 ...

  6. 拥抱 Java 8 并行流吧,让执行速度飞起!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:后青春期的Keats cnblogs.com/kea ...

  7. 拥抱 Java 8 并行流吧,速度飞起!

    前言 在 Java7 之前,如果想要并行处理一个集合,我们需要以下几步: 手动分成几部分 为每部分创建线程 在适当的时候合并.并且还需要关注多个线程之间共享变量的修改问题. 而 Java8 为我们提供 ...

  8. 微软全面拥抱 AI!

    记者 | Aholiab 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 11月4日,一年一度的微软IT大会Ignite在美国奥兰多举行,来自全球的2.6万名IT从业者.开发者.数据专家 ...

  9. 微软全力推广Silverlight 挑战Flash垄断地位

    在谈到Silverlight时,微软开发者部门的产品经理戈德法布总是会提到二个话题. 一个话题集中在市场份额上.Adobe Systems的flash安装在几乎所有上网PC上,而微软的Silverli ...

最新文章

  1. Thrift的接口定义语言IDL
  2. python的django框架与springboot_Python系统教学|为什么Django框架在Python开发很重要?...
  3. nth-of-type(n)
  4. Android打开jsp页面,如何确定是通过jsp页面上的Android设备还是IOS设备访问网页
  5. 【清华集训2014】Sum)(类欧几里得算法)
  6. NB-IoT与LoraWan技术分析与前景展望
  7. C++/C--Windows下获取键盘事件
  8. 10.2829(NOIP模拟修正总结)
  9. win10家庭版无法安装mysql_Win10安装MySQL
  10. 【NOIP 2016】组合数问题
  11. Linux - wxWidgets安装和编译HelloWorld
  12. 【图像分割】基于matlab改进的细菌觅食算法双阈值图像分割【含Matlab源码 069期】
  13. python累乘怎么写_Python3 实现列表元素求累和,求累乘
  14. 如何在网上赚钱,也可以在家兼职赚钱的5个网上项目分享给大家
  15. 【第25题】一球从 100 米高度自由落下,每次落地后反跳回原高度的一半
  16. QQ日志搬家工具 1.0
  17. 海康:找不到HCNetSDK.dll
  18. 「 硬核教学」 ❤️ C语言编写扫雷游戏外挂❤️「 完整源码」
  19. 专网视频会议系统设备连接图拓扑图
  20. NC65 对上年度反结账,调整数据后重新结账后,对本年度年初重算时系统报错:更新记数错误。

热门文章

  1. 牛客网练习赛15__吉姆的奇思妙想
  2. OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义
  3. 知乎高赞回答:有什么相见恨晚的学英语方法?
  4. 实例解说:车主如何不花一分钱不出一份力处理交通事故
  5. 计算机网络技术的教育特性,2017年自考计算机网络技术模拟试题一
  6. 各种光学仪器成像技术(下)
  7. http 502问题解决
  8. 火爆的小程序商城,你了解它的这6大优点吗?
  9. 用小觅双目相机跑ORB-SLAM2
  10. PhotosBlender for Mac(图片合成软件)