關注我
,回復關鍵字「spring」,雖然一直以來,微軟的不少產品在很多層面都有使用 Java 語言,但近日其官網上的一則「Microsoft is committed to the success of Java developers」(微軟致力於 Java 開發者的成功)的公告正式吹響了微軟全面擁抱 Java 的號角。對此,我們也不禁好奇,繼構建 C#、.NET、TypeScript、Visual BASIC、JScript 等語言之外,微軟為何要大費周章地再去深入 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 開發者的「野心」也非一兩天之間才有的。如果說曾經依靠 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 的高度支持。除了在上文提到了的 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.htmlhttps://www.i-programmer.info/news/80-java/15701-microsoft-goes-all-out-on-java.html
Spring Boot 使用 Disruptor 做內部高性能消息隊列Spring Boot 中使用 @Valid 註解 + Exception 全局處理器優雅處理參數驗證ClickHouse 與 Elasticsearch 壓測實踐
關注後端面試那些事,回復【2022面經】
獲取最新大廠Java面經
最後重要提示:高質量的技術交流群,限時免費開放,今年抱團最重要。想進群的,關注SpringForAll社區
,回復關鍵詞:加群,拉你進群。