如何評價微軟 11 月 13 日宣布 .Net 核心運行庫開源並跨平台運行?
Microsoft takes .NET open source and cross-platform, adds new development capabilities with Visual Studio 2015, .NET 2015 and Visual Studio Online
現在.Net可以運行在Linux和Mac OS X平台,同時Visual Studio 2015, .NET 2015 和 Visual Studio Online增加了新的開發能力相關問題:怎麼看待微軟開源.NET,將會對未來哪些方面造成影響?微軟開源 .NET 和其他相關項目會造成什麼影響?
微軟終於打算做諾基亞當年做了一半就放棄的事情了?各位是否還記得諾基亞收購 Qt 並使用 LGPL 發布的事。
我覺得這是好事,但願微軟執行力比諾基亞強。
要想讓 Linux/OSX 全兼容那是需要花相當大功夫的事。這需要時間,需要大量的工作量。現在評論還為時過早。.NET 能不能真的跟宣傳的那樣美好,要看微軟在這件事情上的執行力,認為現在就立等可用的應該是想多了,跨平台還是需要非常龐大的工作量的,C#要完全多平台可用,還需要的工作量非常驚人。希望微軟在後續的日子中能夠將這件事情做得比別人更好,而不是僅僅把源代碼放出來就不管了。
time will tell。微軟在三哥CEO上台以後,一直在推崇One blabla的概念(概括起來可以說是「一個微軟」)。以這個概念為指導思想,我們不難看出微軟一系列動作背後的深層原因。
為什麼要開源:生產力,信任
關於這個問題大多數人的會比我深刻。開源是互聯網時代的一個核心價值觀。在同一個價值體系下還有眾籌,眾包等概念。這是在人與人溝通交流合作成本大大降低後提高生產力的必然產物。全球各地都有開發者,貢獻者,監督者,這個力量與十幾個精英分子坐在小黑屋裡埋頭苦幹的力量不可同日而語。信任是開源的另外一個關鍵詞,你可以隨時隨地檢查源代碼,你有什麼理由不去使用一個你可以完全信賴的東西?另外值得注意的一點是在三哥上台以後多次在演講和公開信中提到「生產力」這個詞。微軟的一些列動作也是為如何提高人/企業的生產力而服務的。.NET跨平台——對開發者的意義
對於對開源有深刻認識的那一批人來說,開源二字就有足夠的理由讓這批開發者去使用至少是嘗試使用一個本身非常不錯的框架,並且提出自己的修改意見。但是對於其他百分之90以上的開發者來說,.net的開源——開放源代碼本身對他們沒有任何意義,因為他們沒有能力,或者沒有時間,或者沒有興趣去閱讀和修改源碼(沒有任何不尊敬的意思,我就是這90%的開發者之一,並且隸屬於沒有能力這一類)。那麼對於他們的意義是什麼呢?——跨平台,One blabla。寫一次代碼,到處跑,這難道不是每個普通開發者夢寐以求的?這難道不是JAVA流行的根本原因?學習新語言的語法非常簡單,對於一個有經驗的開發者在一天內掌握新語言的語法易如反掌。但是對於生態圈的遷移成本卻是巨大的。每個語言都有自己成千上萬的庫,每個語言在每個方面都有自己成熟的框架,這個學習成本在當今速度就是金錢的時代是大多數碼農/公司都很難承擔的。.NET跨平台——對微軟的意義
微軟是一個上市公司,上市公司的首要責任就是保證股東們賺錢。互聯網時代靠單純的收取授權費來賺錢已經不是一個理想的方式,吃肉喝湯才是正確思路。iTune和App Store的巨大成功就是吃肉喝湯的典範。如何能夠實施吃肉喝湯的戰略?——構建生態圈。構建生態圈的第一步就是擁抱開發者。核心代碼不用做重大修改就能運行在Windows, Linux, Android, iOS, Mac OS X,一門語言既能做桌面APP開發,又能做網站開發,又能做移動開發,那麼作為一個開發者,有什麼理由不去擁抱這樣一門語言,這樣一個生態鏈呢(簡歷上只有一門語言不好看?呵呵)?或許有人會質疑Mono project早就做了同樣的事情,但是效果並不明顯。現在幾乎可以肯定的是,微軟要麼已經收購了Mono小組,要麼與其進行深度合作,同一批人同一個項目由微軟這個巨頭的來進行宣傳那麼獲得的效果和影響自然要好得多,所以過去的小眾並不能代表將來的小眾。Mono項目由Xamarin支持,Xamrin與VS Community版以及2015版本的集成可見端倪。Xamrin原來的價格高得嚇人,一般的獨立開發者還是很難接受的,而微軟把這麼一個好東西免費了,我想必定有不少開發者會加入陣營吧。到了現在還把微軟,Mono, Xamarin分開來看是不正確的,現在他們是一夥兒人。OK,一旦有開發者願意加入到這個大潮中,那麼他們馬上又將墮入微軟的另一張大網——Azure。在談Azure之前我想先說為什麼Python,RoR在startup中甚為流行——因為開發速度,迭代速度。Python的代碼簡潔性和可讀性無以復加,速度就是金錢的時代獲得無數開發者的簇擁,那麼這跟Azure有什麼聯繫呢?使用Azure,你能達到同樣的效率,哪怕是用C#。Azure的集成度,使用的簡易程度,功能的完善程度在當今的雲裡面無有出其右者。AWS作為鼻祖在價格上和基礎設施上有自己的優勢,作為IaaS無愧為業界老大,但是在更高級的層面PaaS Azure確實遙遙領先的。我自己開發的網站原來部署在AWS上,在免費試用了一個月的Azure後再也回不去了。Azure的集成度和易用性簡直驚人。在Linux上搭建開發環境,託管網站,搭建資料庫,搭建APP後端,做負載均衡,管理底層虛擬機,甚至從買CPU,買主板開始搭建伺服器是很了不起的能力,但是毫無必要,對於重新發明輪子這種事情在短暫的一百年人生中做得越少越好。
微軟的布局大家已經看的很清楚了:開源.NET-&>擁抱開發者-&>Azure套牢-&>構建生態圈(包括硬體生態,Windows Phone, Surface Pro, XBox One)-&>吃肉喝湯。我們單獨看其中任意一環毫無意義,任何一環都有替代品,但是當我們真正步入這個生態圈並開始使用一整套的服務時,那完全是另一番天地。甚至當我們開始使用Windows phone,Surface pro,Xbox時,發現這個服務鏈簡直完善得無以復加。而微軟的另一個優勢是在國內和國外有著相似的用戶體驗。喜歡Google的技術和服務?抱歉,在大陸不存在。
後記-----------------------------------------------------------------------------------------------------這一系列連續的動作以及原油價格的大跌讓我們不難理解為什麼微軟市值超越美孚成為全球市值第二大的公司。所謂的布局並不是但看每一步就能得出結論的。我從來不是微軟的粉絲,直到我開始使用Azure,意識到這一整個生態圈讓我節約多少不必要浪費的時間。我本身的職業是硬體工程師,每天需要閱讀大量的RTL代碼,需要修改大量的CShell, Perl, Ruby寫的流程式控制制腳本,同時也需要寫Verilog和C++的介面,以便將C函數庫動態鏈接到Verilog模擬中。而其中大部分時間的浪費都在於沒有一個良好的集成開發環境,任何修改閱讀都靠Vim和terminal,想知道所使用的函數的包的路徑是否已經包含?想知道是否有語法錯誤?想動態提示?。。。想都別想。這種長久以來的痛苦讓我更加享受在一個完善的體系裡面工作的那種快感。居然能看到這一天……雖然晚了十年,但終究好過永不。接下來要看 CLR 在其他平台上的整合程度及性能,如果真的爽滑平順(微軟無疑有這個實力可以),也許微軟還能爭回伺服器端(此次只有伺服器端)的半壁江山。
部署不會是什麼大問題,鑒於之前微軟已經在跟 Docker 合作,所以將來應該可以直接部署 .NET Docker container 到 Linux 伺服器上……?太美了不敢看。
不太相信 Visual Studio 會跨平台,倒是不排除 Xamarin Studio 擴展到桌面 / Web 開發,並去支持 Linux 的可能性。JetBrains 肯定會有動作。這些倒也不是最重要的,只要核心組件足夠優秀,toolchain 在開源社區總會自然生長出來。
然後,作為一個 Java 程序員,我覺得 Java 真的可以安心地繼續保持已死的狀態了。(原句:Java 真的可以安心去死了。)說某種技術「死」終歸是個 metaphor,結論取決於視角。人們提及 Java 時不再興奮並有所願景,所以說它死了。
所以微軟的戰略是什麼呢?如果 .NET 能在服務端收集到足夠多的 momentum,它想用來做什麼呢,用在推廣 Windows Server 上面么?
推薦閱讀這篇 Dr. Dobb"s 的評論文章: C# and .NET"s Sudden Ubiquity
答案都在這篇里:WinJS 開源和 TypeScript?這事兒有模板 - TingTalk - 汀說 - 知乎專欄
WinJS 開源和 TypeScript?這事兒有模板汀說 · 7 個月前Build 2014 前後,最不被消費者關注但又最重要的兩件事,就是 WinJS 開源和 TypeScript 1.0 發布了。面對被網路世界主導之一谷歌極力推動的 JavaScript 語言,開源和免費被一些人解讀為微軟最後的讓步和嘗試。但事實上,這樣的明守暗攻有一個存在於微軟歷史上的案例可以參考,而無論微軟還是用戶都已從這個先例的結果中獲益良久。
這是一個應該追溯到上世紀九十年代初的故事。
彼時,同樣作為世界上名列前茅的軟體公司——SUN,在初步呈現萬夫莫開之勢的微軟面前還保留著做操作系統的願望。而 Java,正是他們的攻城兵。出乎 SUN 的意料,在 C/C++開發工具市場早已無力對抗微軟的幾家知名公司都自願加入這個討伐微軟的聯盟中。其中不乏 Borland、Symantec,甚至 IBM 這些在當時開發者看來仍然保留一些市場導向力的公司。
此時的微軟倚著剛到手的 C/C++ 開發工具市場,也深知自己在這方面已經沒有對手,從而放棄了對新興事物的警覺,甚至只是以敵對的態度排斥接觸 Java。
回到戰場上,雖然 SUN 自己的 Java 編譯器質量很難讓人滿意,但 Symantec 和 Borland 相繼推出優秀的作品拿下了大塊市場,雙方你來我往的技術升級鬥爭也大有回復往日元氣的勢頭。Java 是如此地被非微軟系開發者和微軟競爭對手當作一舒怨氣的突破口,以至於時值壯年的瀏覽器絕對霸權 Netscape 也決定在產品里支持 Java,從而與微軟搶佔下一個時代的軟體市場話語權。
到這裡,微軟才意識到 Java 的地位。無論在開發者眼中是多麼的「慢」,它離自己理想中 "Write Once, Run Everywhere" 的距離還有多遠,Java 在這麼多勢力的推動下都以自己易理解、高度可移植的特性不斷被更多人接受。微軟決定以自己的方式做出回應,反擊的領導者正是因 Borland 內部管理混亂而由蓋茨遊說加入微軟的,Turbo Pascal(Borland 白手起家的基石)發明人 Anders Hejlsberg。
Anders Hejlsberg 作為前 Borland 技術奠定人,其實力自然不在話下。他對編譯器技術理解之深讓微軟推出的 VJ++(Java 編譯器產品及 Java 語言特殊實現)在第一時間就成為市場中編譯速度最快,編譯所得程序運行效果最好的產品。同時微軟讓自己的 IE 瀏覽器通過 VJ++支持 Java Applet 執行,一舉減掉了 Borland,Symantec,以及 Netscape 的三分銳氣。
前面提到,Java 是 SUN 試圖用來建立操作系統的核心,微軟當然不會用如此優秀的工具為它作嫁衣。很快,SUN 和同盟們發現 VJ++帶有太多非標準的 Java 用法用以將開發者留在 Windows 平台上。這些開發者包括希望嘗試 Java 的原 Windows 軟體開發者,也包含原 Java 開發,但覬覦微軟優秀工具的新生力量。微軟和 Symantec 兩大主力分別在自己的編譯器中夾帶私貨,SUN 意識到自己對於 Java 的主導權,以及 Java "Write Once, Run Everywhere" 的初衷岌岌可危,隨即呼籲使用 Java 的開發人員和企業抵制 VJ++。微軟也在 Windows 系統中撤下對 Java 的自帶支持予以還擊。
故事到這裡進入尾聲,Anders Hejlsberg 將運用在 VJ++的技術融入到新產品中並進一步優化,分化為.Net 和 C# 成為 Windows 系統上最為重要的技術平台和開發語言,與 Windows 相互鞏固,相互助力。而 Java OS,如你我所見,再無音訊。
在 VJ++的身上,我們不難看到 WinJS 的企圖和命運,而同樣由 Anders Heijlsberg 創造的 JavaScript 超集 TypeScript 是不是又像極了如今的 C# 呢。在 JavaScript 和 HTML 幫助下,Chrome、Mozilla Firefox 這樣往日的瀏覽器都在試圖成就自己操作系統的夢。流行瀏覽器內核和通用網頁標準正在雲服務流行概念的驅動下削弱用戶對特定操作系統和應用運行環境的依賴。在 PC 操作系統增長趨於穩定成為現金牛後,微軟勢必要重新審視未來的幾十年。所幸,TypeScript 仍然由技術沉澱深厚的 Anders Heijlsberg 操刀,與 WinJS 一樣,兩者的使用都不局限於 Windows 平台。更進一步,Mary Jo Foley 在去年末為我們帶來的文章中說到,微軟比「雲操作系統」更超前的 Midori Bridge OS 項目併入操作系統部門由新領袖 Terry Meyerson 直接領導。Midori 同樣是一個運作與不同操作系統之上的溝通平台——我們由此能看到微軟正在積極打破以操作系統為最基層平台的傳統觀念來做上層布局,這個消息確實令人振奮。
題圖來自 Jean-Luc David 的 Flickr 相冊
主要參考資料來自《Borland 傳奇》上個月本科畢業寫C#的同學還在qq上和我抱怨被技術渣JAVA狗吐槽年薪,今天上午點開空間,他的狀態已經改成:excited!
.NET程序員的重大利好,我終於有機會像大部分Java程序員那樣有錢了。
VS for Mac and Linux 還很難,因為VS基於WPF
google的玩法和它風生水起的樣子蘋果的玩法和當年死了一遍又一遍的樣子讓微軟知道,只有這個玩法抓住了生態圈,日子才能過的長久啊
這就是當年 .NET 原本的目標之一啊……不過我有點悲傷的,這感覺有些像是任天堂把《ポケモン》出到了 PSV 里……
這還怎麼黑微軟?
(好像這邊比較熱鬧,把在另一貼的答案搬過來)
對於普通用戶來說,短期內意義不大。
這次微軟開源的部分只是.NET Core,也就是CLR核心的那部分東西,包括GC、JIT編譯器、程序集載入器(Assembly Loader)等等。
最多,以後再加上基於.NET的伺服器技術,也就是http://ASP.NET。有沒有WCF呢?不知道。Immo Landwerth也說了,不包括客戶端技術,如WPF和WinForm,以及Silverlight。也就是說,微軟這次宣布開源的這套東西,是Mono一直以來都已經有了的東西。只不過現在我們可以用到官方的實現版本,可能更穩定,可能更高效,但都只是可能,用過才知道。從中遠期來說,整個.NET Framework完全開源也不是沒有可能。其實Mono相比.NET Framework,最大的缺口也就是WPF了。聯繫到今天微軟發布的The Roadmap for WPF,WPF的開源將是對移動設備前端開發的一個顛覆(當然也有可能我過於高估了WPF和大家對它的熱情)。
至於免費版的Visual Studio,發布Mac版和Linux版的可能性不大,畢竟這麼龐大的一個東西,要移植的話UI部分基本要全部重寫(或者等全部WPF化了然後開源WPF?),太傷筋動骨。社區版Visual Studio 2013的跨平台功能(對iOS和Android的支持)是通過Xamarin的Starter Edition實現的,所以不要想太多。最有價值的是虛擬機實現的開源,高性能的高級語言虛擬機的春天來了。
守得雲開見月明。。。。。。哭
別高興太早,.Net在linux下還有很長的路要走,要取代Java或者C++作為Linux服務端開發語言,還有幾個問題需要解決和驗證。1. 網路庫,.Net的網路庫是基於IOCP的,到Linux要移植成基於epoll的,移植後性能效果還不知道。2. 資料庫,.Net的資料庫此前大多是配合SQLServer使用,要改成MySql等開源資料庫,ADO和mysql在linux下性能如何需要驗證,還有和Redis memcached等這些nosql cache等的兼容性。3. 部署,Windows基本是前後兼容的,不同的Windows Server版本API介面幾乎沒差別,但是Linux發行版就複雜多了,而且二進位都不兼容,.Net這種動態鏈接為主的,怎麼解決部署問題,需要驗證。4. 開發環境是需要一套完整的工具鏈的,僅僅有core framework是不夠的,微軟有多大決心把整套.Net工具鏈都移植到Linux,還不知道。
今年在家沒自己瞎買VS professional是對的, 要買就買Premium, 要麼乾脆Express
我覺得,除了現有的開發者,項目,第三方庫積累以外,相較於 C# / .Net Runtime 而言 Java / JVM 已經沒有存在的價值了。
好!贊微軟!另外趕緊把Mac/Linux下的Visual Studio也做了吧,早就看那些亂七八糟的IDE不爽了。
非常同意 @Belleve,在.NET 開發出來時就應該如此做,是否開源另說,至少要跨平台。微軟過於自大葬送了.NET 平台的大好前程。微軟現在才這麼做,似乎有點晚。不過還是大讚。我可以 sudo apt-get install .net vs2015 了???
以後誰再說.net不開源,不跨平台——不用手軟了,照臉扇!
作為WP開發者來講,還是對這次事件十分支持的.本來.NET身受吐槽的就是其只跨windows平台,而不能真正地跨全平台。至於.NET以及C#的易用性及開發效率,大家都是有目共睹的。業界等了很多年終於盼來了這一天,我雖然也收到了Connect Live Metting的郵件,但未料及此次驚喜,未能觀看直播,深感遺憾。經此事件,.NET程序員可以翻身矣。最後說一句,Visual Studio是這個星球上最棒的IDE,沒有之一。
推薦閱讀:
※招行總行信息技術部和微軟北京,應該選哪個 offer?
※如何看待微軟成為Github上開源貢獻者最多的公司?
※請問光暈系列遊戲中士官長的「雷神之錘」具體屬於什麼類型的盔甲?是單兵的全套防彈裝甲還是動力裝甲呢?
※Microsoft Edge為什麼沒有全屏模式?
※為什麼許多人認為微軟衰落了?
TAG:微軟Microsoft | 開源 | NET | 如何看待評價X |