2020-10-17

“安可“背景下的中國軟件開發(fā)

在中美當(dāng)前背景下的安全可靠國產(chǎn)系統(tǒng)(簡(jiǎn)稱安可),安可產(chǎn)業(yè)要實(shí)現(xiàn)技術(shù)自主可控,需要在四個(gè)層面逐步實(shí)現(xiàn):基礎(chǔ)硬件設(shè)施,如芯片、服務(wù)器、存儲(chǔ)、交換機(jī)、路由器;底層軟件,包括操作系統(tǒng)、數(shù)據(jù)庫、中間件等;應(yīng)用軟件,面向?qū)嶋H應(yīng)用的不同領(lǐng)域;安全產(chǎn)品,保障邊界安全、終端安全和管理安全產(chǎn)品。目前在安可領(lǐng)域,高端芯片服務(wù)器等硬件已能基本滿足辦公需求;基礎(chǔ)軟件正在實(shí)現(xiàn)國產(chǎn)化替代。而在國產(chǎn)系統(tǒng)下,應(yīng)用生態(tài)便顯得匱乏了。

實(shí)現(xiàn)應(yīng)用軟件從普通環(huán)境到安可操作系統(tǒng)環(huán)境的平滑過渡,是豐富國產(chǎn)應(yīng)用生態(tài)、推動(dòng)安可生態(tài)從“可用”走向“好用”的重要手段。國內(nèi)眾多應(yīng)用軟件開發(fā)商也正在安可這一領(lǐng)域展開激烈競(jìng)爭(zhēng),今天想寫下這篇文章是源于在微信群里看到一個(gè)群友發(fā)的一頁內(nèi)容:


在這里插入圖片描述

這個(gè)內(nèi)容明顯就是要封殺在這家公司的產(chǎn)品國產(chǎn)化改造中使用.NET Core 。首先這篇內(nèi)容的非常不專業(yè),把國產(chǎn)化的開發(fā)語言給限制了,而且把開發(fā)平臺(tái)等同于開發(fā)語言, C#才是.NET Core的主要開發(fā)語言之一。操作系統(tǒng)也沒有選擇安可聯(lián)盟的操作系統(tǒng),數(shù)據(jù)庫也一樣,只是特別的針對(duì)微軟的產(chǎn)品。其次這位同學(xué)對(duì).NET Core認(rèn)識(shí)還是等同于10年的.NET,殊不知.NET Core是一個(gè)開源跨平臺(tái)的開發(fā)平臺(tái),.NET Core是更加符合安可標(biāo)準(zhǔn)的開發(fā)平臺(tái)。

比java還開源

最近我們也在測(cè)試龍芯MIPS64的.NET Core移植工作,我們也建立一個(gè)微信群,群里都是對(duì)龍芯的.NET Core移植工作熱心的同學(xué),昨天我把這個(gè)內(nèi)容轉(zhuǎn)發(fā)到微信群,其中有一位群友的總結(jié)很到位,這里我就摘錄出來和大家分享:

相比java,.netcore/.net5+、mono才是最安全可靠的選擇。一是它們是最最開放的MIT/Apache2協(xié)議開源;二是它們歸屬于中立的第三方組織.NET基金會(huì) 掌控,不屬于任何商業(yè)公司,更不是“微軟家”的。退一萬步說,即使是微軟家的,也遠(yuǎn)比oracle、Facebook、google家的安全可信可靠!微軟一直中立溫和沒有政治色彩,更喜歡奉獻(xiàn),連它的敵人蘋果的滿血復(fù)活,微軟也是盡了最大的幫助!

技術(shù)上的先進(jìn)要談,更重要的要講清“.net+”的徹底的開源協(xié)議、完整的專利免責(zé)、中立的主管機(jī)構(gòu)三大超高特性!這三大超強(qiáng)開放特性,即“徹底的開源協(xié)議、完整的專利免除、中立的主管機(jī)構(gòu)”,其他平臺(tái)(java、golang)基本無法同時(shí)齊備這三個(gè)要素。三大要素缺任何一樣,“安全可信可靠”(安可)就會(huì)大打折扣。

這里有一點(diǎn)就是大家對(duì)微軟和.NET的關(guān)系沒搞明白,要多加宣傳。微軟是.net的初創(chuàng)者,.NET基金會(huì)的發(fā)起者,但.NET 基金會(huì)建立起來后,微軟也把Mono/Xamarin給收購了,貢獻(xiàn)給.NET基金會(huì)。微軟只是.net基金的主要供奉者之首,在.NET基金會(huì)里還有很多大公司,google,aws,三星都在.NET基金會(huì)里。新.net/mono的“徹底的開源協(xié)議、完整的專利免除、中立的主管機(jī)構(gòu)”三大關(guān)鍵特色以及與微軟的關(guān)系一定要吃透講清,廣而告之。

“安可”才是國產(chǎn)化的核心要義,所以大家不能只談技術(shù)、只談性能。在“安可”面前,技術(shù)和性能是可以讓步的,況且 .NET Core性能還是如此之好,龍芯團(tuán)隊(duì)在這一方面是做出非常好的表率。

.NET 在傳統(tǒng)應(yīng)用軟件中一直都占有重要地位,.NET的主要競(jìng)爭(zhēng)者也是Java,.NET Core和Java都是開源跨平臺(tái)的,我們可以來比較一下.NET Core和Java的開源協(xié)議,.NET Core是以MIT協(xié)議開源, Java是GPL協(xié)議開源。Java 8 SDK升級(jí)Oracle要收費(fèi)這件事對(duì)于很多小公司是有著重大的影響的,雖然有眾多的OpenJDK發(fā)行版,騰訊云和阿里都有OpenJDK發(fā)行版,龍芯也有MIPS版本的OpenJDK。眾多沒有能力開發(fā)維護(hù)OpenJDK的公司完全可以轉(zhuǎn)向更具有競(jìng)爭(zhēng)力的.NET Core,.NET Core從屬于.NET基金會(huì),由微軟進(jìn)行官方支持。.NET Core/Mono 使用最寬松的MIT和Apache 2開源協(xié)議,文檔協(xié)議遵循CC-BY。這將允許任何人任何組織和企業(yè)任意處置,包括使用,復(fù)制,修改,合并,發(fā)表,分發(fā),再授權(quán),或者銷售。唯一的限制是,軟件中必須包含上述版 權(quán)和許可提示,后者協(xié)議將會(huì)除了為用戶提供版權(quán)許可之外,還有專利許可,并且授權(quán)是免費(fèi),無排他性的(任何個(gè)人和企業(yè)都能獲得授權(quán))并且永久不可撤銷,用戶使用.NET Core完全不用擔(dān)心收費(fèi)問題,你可以很自由的部署在任何地方,這也正是龍芯團(tuán)隊(duì)可以在.NET 上發(fā)力,為龍芯生態(tài)建設(shè)發(fā)力,龍芯支持了計(jì)算機(jī)上運(yùn)行應(yīng)用程序的動(dòng)態(tài)虛擬機(jī)Java、Javascript、.NET三大虛擬機(jī),龍芯還正在開發(fā)一套指令翻譯系統(tǒng),可以將其他指令集翻譯成Loongarch指令。

上面說的比較多的都是龍芯,目前在國產(chǎn)化這塊更大的一個(gè)競(jìng)爭(zhēng)者是ARM 體系,.NET Core對(duì)ARM32/64都有完備的支持,正好我也是華為云MVP,上周我也去華為云找鯤鵬生態(tài)的相關(guān)負(fù)責(zé)人溝通鯤鵬系統(tǒng)對(duì).NET Core支持的情況,華為云也是苦于找不到.NET 支持方面能力強(qiáng)的合作伙伴,通過這次溝通,我正在申請(qǐng)成為華為云的市場(chǎng)服務(wù)商來和華為云一起推進(jìn)鯤鵬對(duì).NET Core應(yīng)用的支持。

Java 生態(tài)碎片化 和 .NET生態(tài)的一致性

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

相比之下 dotnet的生態(tài)的一致性越來越好,微軟2014年決定開源dotnet的時(shí)候,就預(yù)先為dotnet生態(tài)的發(fā)展的一致性設(shè)計(jì)好了上層建筑-.NET基金會(huì),將.NET采用MIT/Apache 2協(xié)議進(jìn)行開源,相關(guān)的知識(shí)產(chǎn)權(quán)和專利歸屬.NET基金會(huì)。微軟在2016年把Xamarin收購了,相關(guān)技術(shù)同樣開源了貢獻(xiàn)給.NET基金會(huì),2014年以來已經(jīng)有眾多知名公司加入.NET基金會(huì), 僅在平臺(tái)項(xiàng)目中,.NET平臺(tái)上有87%貢獻(xiàn)者其實(shí)不在Microsoft工作。2019年 AWS也加入了支持.NET 基金會(huì),.NET開源生態(tài)系統(tǒng)中越來越多的行業(yè)領(lǐng)導(dǎo)者,這些成員包括Microsoft,Google,Red Hat,JetBrains,Unity,三星,Pivotal,Insight和Telerik,AWS等公司。

.NET的ARM架構(gòu)的支持工作是由三星研發(fā)支持完成的,三星和華為一樣同屬于ARM陣營, 三星在.NET基金會(huì)的框架下對(duì).NET 的ARM架構(gòu)的優(yōu)化工作都能夠在同一個(gè)代碼庫里完成,而不是像OpenJDK那樣的碎片化。.NET能夠保證充分的收斂,這對(duì)于.NET生態(tài)的每一個(gè)人來說都是好事情。從ARM 架構(gòu)的優(yōu)化來說非常能夠體現(xiàn)出.NET的社區(qū)發(fā)展非常健康,.NET Core 2.x支持ARM32, 在.NET Core 3.1支持了ARM64, 在最新的.NET 5里對(duì)ARM的性能方面又有極大的提升,具體可以參見.NET團(tuán)隊(duì)的博客文章 .NET 5中的ARM64性能。龍芯積極投入研發(fā)力量支持 .NET,龍芯支持了計(jì)算機(jī)上運(yùn)行應(yīng)用程序的動(dòng)態(tài)虛擬機(jī)Java、Javascript、.NET三大虛擬機(jī),龍芯還正在開發(fā)一套指令翻譯系統(tǒng),可以將其他指令集翻譯成Loongarch指令兼容X86,ARM,MIPS。龍芯對(duì).NET 的支持的研發(fā)模式也是采用社區(qū)模式,他們和.NET團(tuán)隊(duì)有很好的協(xié)作,他們目前正在移植.NET Core 3.1版本,將來他們也會(huì)進(jìn)入同一個(gè)代碼庫dotnet/runtime, 整個(gè).NET生態(tài)的一致性非常好。


在這里插入圖片描述

Java生態(tài)碎片化和.NET生態(tài)的一致性形成鮮明對(duì)比,隨著時(shí)間的車輪滾滾向前,具有統(tǒng)一架構(gòu)的.NET優(yōu)勢(shì)會(huì)越發(fā)明顯,我們的未來是光明的,從最近的編程語言排行榜的趨勢(shì)上可以看出來,Java在不斷的向下走,C#/VB.NET等.NET生態(tài)語言在向上走,附圖TIOBE編程語言排行榜趨勢(shì)圖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容