2013年,微軟針對Visual Studio 2013 提出了“Project N”項(xiàng)目,在此次Build大會上,其面紗正式揭曉,它就是.NET Native。在微軟MSDN官方博客上,Subramanian Ramaswamy和.NET Native團(tuán)隊(duì)高級項(xiàng)目經(jīng)理Andrew Pardoe對.NET Native預(yù)覽版進(jìn)行了詳細(xì)的介紹。
.NET Native
.NET Native可以將C#代碼編譯為本地機(jī)器碼。據(jù)博客介紹,.NET Native可以優(yōu)化所有的Windows Store應(yīng)用。使用.NET Native編譯Windows Store應(yīng)用程序,應(yīng)用啟動速度將加快60%,并且內(nèi)存占用更小,這主要得益于開發(fā)團(tuán)隊(duì)優(yōu)化.NET Native運(yùn)行時(shí)(CLR的一個(gè)重構(gòu)和優(yōu)化)和使用先進(jìn)的Microsoft VC++優(yōu)化器后端。
該預(yù)覽版允許開發(fā)者測試和編譯應(yīng)用程序,此外,最令開發(fā)者興奮地是,使用.NET Native不僅會讓應(yīng)用擁有C++般的性能表現(xiàn),還可以實(shí)現(xiàn)C#般的生產(chǎn)力。
目前,.NET Native預(yù)覽版支持Windows Store應(yīng)用,開發(fā)者可以使用該版本構(gòu)建基于ARM和x86架構(gòu)(很快會支持x86)的應(yīng)用。不久,.NET Native開發(fā)團(tuán)隊(duì)還會提供跨平臺的一致體驗(yàn),并且將會繼續(xù)完善和提升.NET Native的應(yīng)用范圍。
通過與Visual Studio結(jié)合,.NET Native將會提供一流的.NET開發(fā)體驗(yàn)給用戶,用戶還將繼續(xù)享有編輯/編譯/調(diào)式等開發(fā)功能及體驗(yàn)。
據(jù)微軟提供的FAQ獲知,目前.NET Native預(yù)覽版只支持C#語言,用 .NET Native編譯的程序?qū)⒆鳛楠?dú)立的原生編譯代碼部署到目標(biāo)機(jī)器上,無需再安裝.NET Framework。
目前,微軟已經(jīng)用.NET Native開發(fā)了一些Windows Store甲方應(yīng)用,這些應(yīng)用包括Wordament、 Fresh Pain。
.NET Native預(yù)覽版下載地址: http://msdn.microsoft.com/en-US/vstudio/dotnetnative ,目前可以安裝在 Visual Studio 2013 Update 2 RC上。目前,微軟官方還未告知何時(shí)發(fā)布.NET Native正式版本。
使用.NET NativeToolchain編譯應(yīng)用
項(xiàng)目加載后,你可以啟用.NET Native編譯器,前提是已經(jīng)把應(yīng)用針對x64或ARM架構(gòu)進(jìn)行了配置,此外,由于.NET Native編譯為本地代碼,所以你得指定一個(gè)真實(shí)的機(jī)器類型來代替CPU。具體步驟:
開發(fā)者們激情重燃
微軟此次推出.NET Native預(yù)覽版,讓開發(fā)者在.NET平臺上又看到了希望,開發(fā)者們的熱情被再一次燃起,引起了無數(shù)開發(fā)者的熱烈討論,筆者搜集了一些,整理如下:
陳宇:
技術(shù)上,.NET Native純粹是個(gè)優(yōu)化。商業(yè)上,.NET Native的靜態(tài)鏈接,讓微軟可以進(jìn)一步拉攏應(yīng)用開發(fā)者,給他們提供大量方便易用的開發(fā)框架,而不用擔(dān)心普通用戶的機(jī)器上裝滿了各式各樣的框架,影響體驗(yàn)了。這次微軟的.NET Native有兩個(gè)亮點(diǎn):
一個(gè)是云編譯。也就是開發(fā)者提交的是虛擬機(jī)代碼,用戶直接下載自己設(shè)備可用的機(jī)器碼。不像Mono要手動編譯,這對用戶和開發(fā)者來說,都很方便。
另一個(gè)是,因?yàn)樗俣取⒖臻g的限制都不存在了,云編譯器可以比即時(shí)編譯JIT,比ART的安裝時(shí)編譯,做更多更好的優(yōu)化。微軟的Visual C++做了這么多年,應(yīng)該有足夠的技術(shù)儲備。備注(本段文字摘自知乎網(wǎng))。
RednaxelaFX:
感覺.NET Native比起以前最強(qiáng)力的地方在于能夠做出“封閉世界的假設(shè)”并且放心做諸如class hierarchy analysis來做優(yōu)化,而并不是說因?yàn)樗昧薞C++的編譯器后端所以就快――要知道原本CLR的x64 Server JIT也是源自VC++的后端… 話說C# 的語言特性本來就比C++更好優(yōu)化,例如別名分析會好做很多。(來自新浪微博)
Lex_Li:
總體來說,微軟從Xamarin那邊學(xué)到了不少。.NET Native源自AOT,但是優(yōu)化更好。(來自新浪微博)
寫在最后
針對.NET平臺,微軟給開發(fā)者帶來的震撼不只是發(fā)布了.NET Native,在2014 Builid大會上,微軟提出了“ The Next Generation of .NET”。.NET團(tuán)隊(duì)構(gòu)建了一些新技術(shù)來擴(kuò)展.NET核心功能,努力提升應(yīng)用程序和用戶體驗(yàn),發(fā)布了一系列產(chǎn)品:
微軟的這些舉措足以說明對開發(fā)者的重視,相信,未來的微軟也不會讓開發(fā)者們失望。
文章部分內(nèi)容翻譯自MSDN博客。