{eval=Array;=+count(Array);}
做了7年的c#開發,4年多的java,c/c++,說說我的看法,主要有的區別:
一是開源和閉源的區別,.net早期完全閉源,開發也是完全傻瓜式的,微軟的思想就是讓開發更容易,所以無法看到底層實現,給人的感覺就是走一條胡同,很快到達目的地卻無法知道墻內的東西,接觸過java和c之后,感覺就像掉進了大海,原來海底也這么漂亮,有太多開源的軟件和框架,你可以看到更深層的東西,比如我們看dubbo,看進去后看netty,netty看進去后看到Linux,select,epoll,看到epoll,看Linux相關的,感覺就是掉進了大海,太多東西需要學習,做這么多年開發依然在不斷的學習,但也給了我更多興趣和探知未知世界的樂趣,以前做.net的時候有種感覺就是,別讓我做非.net的東西,我不會,對陌生的的東西很害怕,現在的感覺就是你讓我寫個控制原子彈的程序我也敢去寫(比方)。
二是免費和收費的區別,所有的公司產品的成本是公司發展的最關鍵因素之一,.net全家桶成本太高,vs的版權+windows版權+sql server版權再加上其它支持類軟件版權,成本非常高,相反linux完全免費開源,給你選你會選哪一個?同時linux或從Unix而來,但天生具有輕量級性能可以發揮到極致而且穩定的系統,而windows為個人和辦公而設計,界面和系統其它資源就讓系統占用一部分,感覺很笨重,上天做一個長連接測試,單臺Linux輕松上幾十萬,當然由于內存原因,否則可以上百萬,而windows就很難做到,而且Linux哪里不行你可以去改的,windows就不行了,所以一個穩定高效免費的還有一大堆開源支持的,和一個收費性能相比沒有那么高效的,好多公司自然選擇前者
三是開發效率,上面說兩點都說.net處于下風,但.net不是一無是處,.net有自身的優點,那就是開發效率,.net在java之上做了改進,讓開發人員更容易開發,語言優美,做企業應用開發是很好的工具,可以快速出結果,你用其它開發要么大炮打蚊子,要么不穩定,在工廠和企業就要求很快做出來,這是.net優勢,所以有他的市場份額,說這么多發現沒個圖,有評論的傳一張
先以開發者的角度:
PHP跟.net根本就不是一個級別的,.net無論是應用場合、開發環境、幫助文檔、編寫風格、運行效率全部吊打PHP;PHP之所以流行就是因為很多開源框架都是現成的,剛好符合國人拿來主義的精神,修修改改就能拿來賣錢了。
JAVA各方面體量大致跟.net旗鼓相當,Windows系統下還是.net的天下,企業應用方面JAVA占用率高些,移動開發方面因為安卓和蘋果的原因,.net失去了先機。微軟正在逐步趕超,unitiy、.net core都在表明微軟的態度。
以成本的角度:
微軟的產品哪都好,就是版權太貴,Windows系統要錢,office要錢,服務器要錢,sqlserver要錢,再高級點用用企業版、集群之類的,做一個項目下來才能掙多少錢,都給微軟了。PHP之所以能存活,就是linux免費,MySQL免費,Apache免費,PHP免費,就連框架都免費;JAVA跟PHP差不多。這種生態下導致了代碼資源非常豐富,天下一般抄,開發成本就更低了。所以不是微軟的東西不好,是JAVA和PHP開發成本太低了。用過對比你會發現,貴有貴的道理,所有開發幫助文檔中,沒有比微軟做的更詳盡的。
如果你是一個獨立開發者,首選.net,Windows桌面應用、Windows服務、Windows游戲、網站、webservice、unity游戲,除了安卓和蘋果原生應用,.net都能勝任。如果微軟可以在安卓下造出類似framework的東西,那就一統天下了。
為什么PHP、Java在市面上比.NET要受歡迎?而且從各大招聘網站上看PHP、Java的崗位比.NET崗位要多很多。
其實.NET也是有不少的優點的:
語法優美,比Java語法優美度還要高
在Windows平臺上表現優異,能輕易調用Win平臺各類組件服務
但是,它的致命缺點是:
它目前只能跑在Windows平臺上(雖然.NET Core可以跑在Linux上,但它畢竟推出不久,需要時間考驗)
Windows系統是收費系統(雖然平時在用時,沒感覺到它是收費的)
與它配合使用的SQL Server同樣也是收費的
設想一下,一個企業,如果服務器眾多,那系統費用、數據庫的授權費用,是多么龐大的一筆支出!
而PHP、Java則不同,它們都是跨平臺開源免費的,雖然Java開始收費了(但還有免費的OpenJDK),所以PHP、Java還是首選。
如果用戶采用微軟全家桶解決方案, .Net 的開發效率和體驗是完全可以吊打 Java 和 PHP 的, 但昂貴的價格, 讓開發者和用戶又愛有恨.
其實 .Net + C# 現在雖說不如一票跨平臺框架語言用得人多, 但也遠遠談不上沒落.
在這個問題上, 個人認為 Microsoft 的原 CEO Steve Ballmer 難辭其咎, 在 Windows 霸主地位已經開始崩潰的時候 依然固執堅持封閉生態, 導致當時的 .Net 開發者 無不焦慮和彷徨.
不過 2014 年 Satya Nadella 接任 CEO 后, 微軟 逐漸采取了 務實 開放 的做法, 收購 Xamarin 整合進 IDE, 推出 Visual Studio 社區版, C# 開始免費和跨平臺, Microsoft 越來越像 Oracle, C# 越來越像 Java, 多多少少緩解了開發者的憂慮, 不少開發者開始回歸, 畢竟 C# 優雅的語法 和 Visual Studio 卓越的開發體驗 確實讓人難以割舍.
.Net以前是不開源的,需要收費,有著各種版權問題,導致其語言生態發展不夠。有其語言優點,但是從公司發展成本上來考慮,就注定不能作為首選。
PHP未興起之前,很多公司使用.net來開發網站,因為相比較java的JSP,開發效率也還是要高一些,這對中小型企業的業務快速變更升級很重要。JSP運行速度會快一些,但其需要編譯的特點,開發速度會相對緩慢。而對中小型企業來說,時間就是金錢,開發速度太慢,跟不上業務發展是很致命的。
之后PHP應運而生,其語言設計的初衷就是為了快速開發web應用。完全的開源免費,開發效率非常高,甚至一個人就可以搞定一個項目。中小型公司,從發展之初的考慮,逐漸將PHP作為首選發展語言。
隨著PHP生態的逐漸強大,.net這種生態落后,開發速度比不上PHP,運行速度比不上JSP的語言也就逐漸沒落了。
現在也有很多發展好了的公司,做大了做強了,又開始將自己的PHP項目往JSP遷移,因為開始追求運行速度。
所以PHP基本占領了中小型公司,而大公司則更多選擇JSP。這都是語言的特性和優勢決定的,將來如果出現一種語言能同時兼有開發速度和運行速度的免費開源的語言,那PHP和JSP也會逐漸走上.net這條路。一切都是企業成本和效率的問題。
+++++++++++++++++++++++++++++++++++++
第一次寫問答,沒想到有這么高的閱讀量。
有些人說我對.net的認識太落后了,好吧,我開始學編程的時候,.net確實是比較封閉的狀態,這些年我也不再去關注.net,對它的進一步了解也都是通過身邊的同學朋友側面反映的。
然后,真實情況是,我身邊所有學.net的同學都轉行了。因為崗位少,薪資低,真的生存很艱難哩。
遙想當年,我們一個宿舍的同學(一群窮逼,只能住在學校破舊的8人大宿舍里,因為住宿費真便宜啊????),開始討論選某個語言作為今后學習方向。有人選擇了.net,有人選擇了PHP,有人選擇了JSP,然后各自努力。
現在,再來看彼此發展,.net的同學都轉行了,PHP的都在中小型公司,JSP的在平安保險這種大公司里。薪資待遇對比,.net的同學和我們也有了差距。如果只看基本工資的話,還是PHP的高,哈哈。但是,加上年終獎就撲街了。我們同在深圳的經常一起出來聚聚,中小型公司的經常自嘲,辛辛苦苦一整年,比不上**一個年終獎。唉,大公司年終獎是真多啊,可以頂你大半年甚至一年的工資,人比人氣死人。
當然,學PHP也不是都好,有個同學受不了壓力轉行做SEO了。也不是所有學java都好,我現在公司的測試就是個學java找不到工作,轉而當測試的。
其實問題還是經驗,有多年工作經驗,就是你找工作最好的敲門磚了。
最后,沒有最好的語言,適應市場發展的語言就是好語言。
各位看官,不喜勿噴!
我自己當初學過.net,java,現在算是略有了解。就我個人理解,許多公司不用.net語言的根本原因,就是.net在最初的時候不開源,教程少,入門較難,而且最后正式發行程序什么,還要交錢,所以在許多公司中首選java這種開放語言,教程多,入門簡單,基本不收費(不收費是關鍵,劃重點)。這也算是開源與閉源軟件之爭吧,最終以java為首的開源軟件獲勝,得以普及。
后來,開源軟件已經是大勢所趨,這時候微軟.net陣營已經做了許多改變。我最熟悉.net中的c#語言,我就以c#為例說說吧。
微軟以前信奉閉環,所有語言都不支持跨平臺,也就沒有c#;后來java越來越發展壯大,.net感受到了巨大危險,于是就模仿java,.net提出了c#,借以打擊java。c#很像java語言,而且和java一樣能夠跨平臺,windows、linx、android、ios都可以編程,這就是微軟做的改變。
如果大家用過c#或者vb,c++來編寫窗口程序,就會發現,這些語言寫出來的windows窗口太棒了,而用java寫出來的窗口程序,不敢恭維,太丑了,這也就是我后來學習c#的原因。(這也就是為什么說跨平臺只是一個美夢而已)。
跨平臺、開源之后的.net,其實跟java的基礎結構并不差多少,但不具備數量優勢,也就是說:java由于之前用的人太多了,各個方面的創新、發展都比較完善,有著堅實的用戶群體、應用基礎;而.net,由于是后發,已經失去了太多的應用環境,自然現在許多公司在不考慮是專為windows開發的情況下,是不會太主動使用.net。
我覺得最大的問題在于,使用Java體系的可以綁架一個公司的技術,因為他各類開源的框架以及底層的東西都可以修改,如果沒有這幫大拿繼續留在這個公司里面,后來的人很難去接受,或者理得清楚這些架構。而使用.net的話,基本上我覺得不太可能存在這個問題,因為知識體系比較清晰,而且掌握的人相對比較多,上手也相對比較容易。如果你是老板,會怎么樣選擇呢?你很希望別人綁架嗎?
我老早也是做.net開始的,那時候nginx開始流行,公司是一幫鐵桿微軟全家桶,談命令行色變,于是對nginx, docker甚至git極力反對,我就走人。
.net core 就本身而言跨平臺,我當然覺得不錯。但就害怕再進一個 微軟全家桶 團隊,對任何高效主流的開源或命令行的軟件極力封殺。
不知道干.net core的都有沒有這種顧慮和遭遇? 畢竟微軟的文化就是離開GUI不會走路,多數軟件都不是先有命令行版本的。(而命令行版是實現虛擬機,容器技術,腳本話處理等的必須要求)。 就憑這個,我還是有點忌諱.net core.
這個答案有幾點:
1、運行環境成本問題,在.net core出來之前,.net
需要的運行環境搭設成本高,windows服務器正版上萬,用access做數據庫也需要幾千元的正版office,雖說sql express是免費的,但是閹割的太厲害。所以一般win虛擬主機或者服務器都基本上比linux的貴,尤其是海外注重版權地區,更是差至少一半,所以造成了php大行其道,因為他的運行環境幾乎零成本,而且服務器需要的配置可以很低,甚至128m內存就可以跑php程序。
2、開發環境成本問題,一樣的毛病,code出來之前,開發.net程序的工具首選visual studio,但是正版的也要幾千上萬,不是一般人承受的起的。而php和java的免費又好用的開發工具又很多,因此php又獲得了先機。
3、學習成本問題,.net之前,微軟平臺應用系列的開發需要太多,vb,c,c++,而網頁腳本語言是基于vbscript的asp,隨著系統的發展,這些需要和腳本逐步跟不上時代對敏捷開發、更復雜系統開發的需求,因此推出了asp.net和c#、f#,vb.net等語言,網頁方面使用asp.net開發又一直升級,.net 2.0,3.0,3.5,到現在的4.7.x,每次升級都帶來了新的概念,如今為了搶回份額,推出了.net core 也是升級了好幾個版本,所以.net的開發要不斷的學習,學習,升級,升級。而php就不一樣了,版本的升級基本上都是框架內的升級,學習成本明顯低于.net
4、資源豐富問題,如上所述,由于成本問題,很多人選擇了php開發,然后php的免費框架越來越多,程序員一般都懶,拿來修修改改就能上線,接著做下個項目就可以啦,而.net明顯沒那么多免費框架,市面上分許多.net框架是要授權費的。
不過目前微軟的發力,也在著手改善這種問題,發布了visual studio code,visual studio community免費開發工具開發成本明顯降低,.net code跨平臺語言只要版本符合要求linux系統也可以運行.net code開發的程序了。如果能夠有支持linux的文件型的數據庫軟件(例如office的access)發布就更好了。
現在企業級別開發基本上都是JAVA架構,良好的生態環境和薪水導致大家都去學習JAVA開發。但是JAVA開發學習周期較長,涉及到的各種開源的框架和技術, 只要把這些框架和技術熟悉后,基本上就完成了整個JAVA的學習線路。
當然,.NET也有其存在的意義。在國內的話,招商銀行的個人網銀也是使用的.NET技術。本人JAVA和.NET技術一直都在使用,由于公司性質,軟件系統主要服務于公司 內部,考慮到開發效率和具體的用戶情況,所以相關的系統基本上都是.NET技術。
總體來講,如果公司內部使用,那我個人比較推薦使用.NET技術;如果是基于外部用戶,那還是JAVA技術適合。
0
回答2
回答10
回答10
回答0
回答0
回答0
回答0
回答0
回答0
回答