將.Net應(yīng)用移植到Linux上來的Mono工程
發(fā)表時(shí)間:2024-06-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]開放源代碼協(xié)會(huì)通過Linux軟件開發(fā)公司Ximian開始了一個(gè)旨在將微軟.Net平臺(tái)移植到Linux上來的項(xiàng)目。這個(gè)叫做Mono工程的項(xiàng)目包括創(chuàng)建一個(gè)開發(fā)平臺(tái)允許人們?yōu)榛贚inux和基于Windows系統(tǒng)的.Net開發(fā)應(yīng)用程序。據(jù)Ximian公司的首席技術(shù)官員Miguel de Icaza說Mo...
開放源代碼協(xié)會(huì)通過Linux軟件開發(fā)公司Ximian開始了一個(gè)旨在將微軟.Net平臺(tái)移植到Linux上來的項(xiàng)目。這個(gè)叫做Mono工程的項(xiàng)目包括創(chuàng)建一個(gè)開發(fā)平臺(tái)允許人們?yōu)榛贚inux和基于Windows系統(tǒng)的.Net開發(fā)應(yīng)用程序。據(jù)Ximian公司的首席技術(shù)官員Miguel de Icaza說Mono項(xiàng)目的起因是GNOME社團(tuán)特別是Ximain公司對(duì)于一個(gè)改進(jìn)的開發(fā)工具的需要。
但是Mono項(xiàng)目的影響確是更加深遠(yuǎn)的,因?yàn)檫@些開發(fā)工具是基于CLI(通用語(yǔ)言架構(gòu))和微軟提交給歐洲計(jì)算機(jī)制造協(xié)會(huì)(ECMA)的C#實(shí)現(xiàn)標(biāo)準(zhǔn)的。如果Mono能夠完成基于這些標(biāo)準(zhǔn)創(chuàng)建一套Linux開發(fā)工具集的目標(biāo)的話,開發(fā)者將能夠編寫同時(shí)在Windows和Linux上運(yùn)行的.Net程序,這些程序甚至還可能在其它非Windows的操作系統(tǒng)上運(yùn)行,比方Unix。
除了實(shí)際的開發(fā)過程,Mono項(xiàng)目的工具必須在開放源代碼社團(tuán)的內(nèi)部完成而不能違反微軟的知識(shí)產(chǎn)權(quán)專利--這實(shí)際上意味著開發(fā)者們必須基于標(biāo)準(zhǔn)重新構(gòu)造這些工具而不能查看微軟的任何源代碼。
Mono項(xiàng)目包括三個(gè)核心的部分:一個(gè)C#語(yǔ)言的編譯器,一個(gè)CLI和一個(gè)類庫(kù)。 CLI是包含了類加載器的虛擬機(jī),實(shí)時(shí)的編譯器,和一個(gè)運(yùn)行時(shí)環(huán)境的垃圾收集器。CLI這個(gè)組件將允許用C#編寫的應(yīng)用程序能夠在象Linux這樣的非Windows操作系統(tǒng)上運(yùn)行。這與Java世界中Java虛擬機(jī)能夠讓一個(gè)應(yīng)用程序在不同的操作系統(tǒng)上運(yùn)行是類似的。
Mono項(xiàng)目的類庫(kù)能夠讓應(yīng)用程序完成核心的諸如XML處理,文件輸入輸出,和連接網(wǎng)絡(luò)之類的任務(wù)。它將會(huì)和微軟的CLI兼容(與微軟在.Net framework中發(fā)布的東西緊密的配套),還有一點(diǎn)就是將由開放源代碼團(tuán)體編寫的額外的類庫(kù)也將和CLI兼容。
Ximian公司的de Icaza希望在年底到達(dá)項(xiàng)目的一個(gè)里程碑,這時(shí)編譯器將能夠編譯類庫(kù)了。圖形用戶界面組件--創(chuàng)建GUI程序所需的類庫(kù)--將在明年中完成。
“我們?cè)谶@個(gè)方面工作的原因是希望升級(jí)我們的開發(fā)平臺(tái)來創(chuàng)建我們的Evolution桌面應(yīng)用程序,”de Icazo說。Evolution是Ximian公司的電子郵件客戶端及個(gè)人和工作組信息管理程序。“當(dāng)我們看見.Net framework的時(shí)候,我們覺得這些就是我們將用來開發(fā)我們下一代產(chǎn)品要使用的工具,”他說。
Ximian并不將Mono和它自己看作是給Linux開發(fā)者一種途徑在可用的開發(fā)工具方面趕上Windows。其實(shí),Linux開發(fā)者將更喜歡用他們目前使用的工具來編寫的編譯應(yīng)用程序。Ximian 將另一個(gè)開放源代碼項(xiàng)目,SharpDevelop看作是用來提供與微軟Visual Studio .Net類似的集成開發(fā)環(huán)境的一種途徑。
通過以開放源代碼的方式開發(fā)Mono,這個(gè)項(xiàng)目包含了許多對(duì)開發(fā)過程擁有廣泛興趣的人們。雖然Ximian可能希望找一些改進(jìn)的開發(fā)工具來加速它的應(yīng)用程序的開發(fā)過程,但其它的開發(fā)者可能是希望找到能夠讓他們?cè)赪indows上編寫程序然后在Linux系統(tǒng)上運(yùn)行它們的開發(fā)工具。
其中的一個(gè)大問題是如何避免微軟的知識(shí)產(chǎn)權(quán)保護(hù)。“我們避免知識(shí)產(chǎn)權(quán)保護(hù)的方法是堅(jiān)持非研究性的主題并使用現(xiàn)有的技術(shù)實(shí)現(xiàn)其功能,”de Icaza說。例如,Mono JIT編譯器沒有使用任何先進(jìn)的JIT編譯器技術(shù)。相反Mono的版本是基于老的JIT技術(shù)的。
De Icaza還聲稱Mono必須“著眼大處”還不僅僅是去年ECMA規(guī)定了些什么。也就是說,Ximian計(jì)劃參與標(biāo)準(zhǔn)的制定過程并創(chuàng)建類庫(kù)來提高.Net framework的薄弱之處,比方說電子郵件管理。
據(jù)Giga Information Group的副分析師Stacey Quandt稱,微軟不太可能支持Mono因?yàn)槠涫跈?quán)是與GNU 通用公眾證書為C#的授權(quán)和GNU 弱公眾證書為類庫(kù)和運(yùn)行庫(kù)的授權(quán)聯(lián)系在一起的。
但即使微軟不支持Mono,Mono的存在也證實(shí)了微軟對(duì)于.Net能夠移植到其它平臺(tái)的聲明是正確的。
Quandt說面向更廣泛的開發(fā)團(tuán)體是Mono面臨的另一個(gè)挑戰(zhàn)。例如IBM和Sun都在Java上花費(fèi)了巨額的投資,自然也就很難容忍競(jìng)爭(zhēng)行為。