作者 | 蘇宓
出品 | CSDN(ID:CSDNnews)
雖然一直以來,微軟的不少產品在很多層面都有使用 Java 語言,但近日其官網上的一則「Microsoft is committed to the success of Java developers」(微軟致力于 Java 開發者的成功)的公告正式吹響了微軟全面擁抱 Java 的號角,
對此,我們也不禁好奇,繼構建 C#、.NET、TypeScript、Visual BASIC、JScript 等語言之外,微軟為何要大費周章地再去深入 Java?在本文中,我們將從近年來微軟的種種足跡中探尋原因,

1、微軟對 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 包含了有用的資訊,但過去大部分開發者都忽略了它的存在,如今隨著這一功能的改進,方便開發者上手,
推薦一個開源免費的 Spring Boot 最全教程:
https://github.com/javastacks/spring-boot-best-practice
其三,Java Project Explorer 集成了 Maven 和 Gradle
有點像 Intellij,微軟加強了 VS Code,使其更容易訪問最頻繁的構建操作,如訪問訪問 POM 或呼叫 Maven,
與此同時,微軟并沒有把對 Java 和 Spring 的支持局限于 VSCode,它還加強了對 Intellij 和 Azure 的支持,
2、微軟與 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 分庭抗禮,
3、為什么此時要對 Java 展開攻勢?
那要問微軟為何要在時下再次擁抱 Java,根據微軟官方的解釋是,「如今,越來越多的 Java 開發者正在考慮如何將現有的 Java 應用程式遷移到云中,或者如何構建新的云原生應用程式,我們一直在努力讓您更輕松地使用您喜歡的工具和框架將 Java 應用程式遷移到云中,然后,您可以使用您已經了解和信任的相同應用程式服務器和開源技術輕松部署和擴展,」
多年來,Java 已經積累了龐大的開發者群體,且有數以萬計的設備使用 Java,在云時代下,微軟在產品研發程序中也添加了對 Java 的高度支持,
最新 Java 教程:https://www.javastack.cn/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
整體而言,微軟此舉一方面是想要在 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
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
2.勁爆!Java 協程要來了,,,
3.Spring Boot 2.x 教程,太全了!
4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511886.html
標籤:Java
上一篇:資料結構基礎—堆疊和佇列
