Java 生態碎片化 和 .NET生態的一致性

張善友發表於2020-10-09

.NET Core是以MIT協議開源, Java是GPL協議開源。Java 8 SDK升級Oracle要收費這件事對於很多小公司是有著重大的影響的,Java生態越發碎片化,有眾多的OpenJDK發行版,騰訊雲和阿里都有OpenJDK發行版,龍芯也有MIPS版本的OpenJDK,華為也有畢昇 JDK ,國外的OpenJDK版本就更多了,就連微軟也發行了一個OpenJDK版本。每個廠家都有自己的小算盤,比如華為的畢昇 JDK 一方面展示了華為對 JDK 生態的思考重點 —— 基於 ARM 架構進行優化,使之成為 openEuler 基礎軟體軟體生態的一部分 。這種碎片化的生態,最終都會反哺 OpenJDK,從促進 Java 生態更加健康繁榮的發展。OpenJDK 的各大廠商收斂到一起比較困難。

相比之下 dotnet的生態的一致性越來越好,微軟2014年決定開源dotnet的時候,就預先為dotnet生態的發展的一致性設計好了上層建築-.NET基金會,將.NET採用MIT/Apache 2協議進行開源,相關的智慧財產權和專利歸屬.NET基金會。 微軟在2016年把Xamarin收購了,相關技術同樣開源了貢獻給.NET基金會,2014年以來已經有眾多知名公司加入.NET基金會, 僅在平臺專案中,.NET平臺上有87%貢獻者其實不在Microsoft工作。 2019年 AWS也加入了支援.NET 基金會,.NET開源生態系統中越來越多的行業領導者,這些成員包括Microsoft,Google,Red Hat,JetBrains,Unity,三星,Pivotal,Insight和Telerik,AWS等公司。

.NET 的ARM架構的支援工作是由三星研發支援完成的,三星和華為一樣同屬於ARM陣營, 三星在.NET基金會的框架下對.NET 的ARM架構的優化工作都能夠在同一個程式碼庫裡完成,而不是像OpenJDK那樣的碎片化。 .NET能夠保證充分的收斂,這對於.NET生態的每一個人來說都是好事情。從ARM 架構的優化來說非常能夠體現出.NET的社群發展非常健康,.NET Core 2.x支援ARM32, 在.NET Core 3.1支援了ARM64, 在最新的.NET 5裡對ARM的效能方面又有極大的提升,具體可以參見.NET團隊的部落格文章 .NET 5中的ARM64效能。龍芯積極投入研發力量支援 .NET ,龍芯支援了計算機上執行應用程式的動態虛擬機器Java、Javascript、.NET三大虛擬機器,龍芯還正在開發一套指令翻譯系統,可以將其他指令集翻譯成Loongarch指令相容X86,ARM,MIPS。龍芯對.NET 的支援的研發模式也是採用社群模式,他們和.NET團隊有很好的協作,他們目前正在移植.NET Core 3.1版本,將來他們也會進入同一個程式碼庫dotnet/runtime, 整個.NET生態的一致性非常好。

Java生態碎片化和.NET生態的一致性形成鮮明對比,隨著時間的車輪滾滾向前,具有統一架構的.NET優勢會越發明顯,我們的未來是光明的,從最近的程式語言排行榜的趨勢上可以看出來,Java在不斷的向下走,C#/VB.NET等.NET生態語言在向上走,附圖TIOBE程式語言排行榜趨勢圖。

Java 生態碎片化 和 .NET生態的一致性

相關文章