大公司c#&.net轉型java的緣由有哪些?

從來就據說有編程語言「鄙視鏈」的說法,而現在月經貼上的那些事兒,還真讓我給遇到了。java

如下內容來自知乎,純屬扯淡,易引起口水戰,看完勿人身攻擊。python

目的給盲目的公司決策者、開發人員科普下,有個客觀清醒的認識。順帶給妄自菲薄的開發人員鼓勵。android

問題:程序員

國內技術轉型Java的大公司,京東、點評,攜程也在慢慢轉型java,數據庫由sql server在轉型MySQL,緣由有哪些呢?sql

我想到的緣由有如下幾點:
1. 開源語言,免費,相關產品不用花錢,微軟的產品一年會花費多少?
2. 開源插件會不少,可替代性強數據庫

3. 移動端火,安卓佔據很大一部分編程

 

下面是個人回答:windows

 

做者:Dylan
連接:https://www.zhihu.com/question/28512241/answer/100592827
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

每家公司都有背後的緣由吧。就算是內部的人,可能三言兩語也說不清楚。
有些公司決策多是理性的,有些公司決策可能就是不怎麼懂技術的在拍腦殼


二者都有太多的優勢和缺點。冒着被噴的風險,簡單的說下吧:
C# .NET的優勢
1.從使用者角度來看,語言層面C#是領先Java的。C#最初設計可能借鑑了Java,可謂「青出於藍而勝於藍」吧。這點,C#不少的語法糖就能夠說明。至於平臺層面,CLR是否必定優於JVM,這個沒有透徹研究,不敢輕易下結論。
2.微軟擁有號稱世界上最強大的IDE工具VS,編寫C#很是愉快。
3.微軟做爲一家商用公司,一向是比較體貼開發者。制定好各類標準和實現,版本兼容性那些也作的很好。加上2中提到的IDE強大。易用性是更加好的(至少對於初學者是這樣)。同時,微軟的不少技術讓編程的門檻更低(例如早幾年搞的拖控件,綁數據...堪稱是「傻瓜式」的)。在一些小公司,或者一些要求不高的項目,這種開發技術可能比較有優點。
4.跨平臺遊戲引擎支持。跨平臺APP開發的支持。
誇了那麼多,優勢就不往下展開,潑下冷水:
1.因爲早年不開源,且捆綁windows緊密,因此跨平臺特性被人詬病。雖然Mono崛起,而且開源了,可是很難改掉人們對微軟「封閉、臃腫、不安全」的印象了。不少人對Mono也是半信半疑。
世上不少事情就是這樣的,也算是一種惡性循環吧
2.開源生態確實不如Java,雖然是在努力追趕,可是不少方面還有很大差距。成熟方案和選擇性相對少。不少框架和組件,是先在Java平臺上出現,後來移植到.NET,更新維護都成問題。不少優秀的中間件、平臺,在開發API的時候,都是優先支持Java、python這些,後支持C#(好在大部分的都還支持C#,要否則真的只能靠微軟官方去造了)
3.招聘難度大。受國內這種不良風氣和環境影響,高端的.NET開發確實特別的少
4.從身邊的例子和一些招聘信息來看,相同工做年限、級別的.net程序員的薪資水平應該是略低於Java的(具體的也要看公司和行業,並且人的技術水平、背景、綜合能力那些不一樣,很難橫向比較)。這點對通常的開發人員熱情來說是比較有打擊性的。固然,高端的技術人員不論是哪一個方向和領域,薪資都不會低的
5.因爲目前不少企業和我的對Mono和Linux .NET仍是半信半疑甚至絕不知情,因此仍是會捆綁在windows上。這就形成了受權費用的風險。還有就是windows自動化運維的缺點了。
(爲了不口水戰,特別說明:上面說到的幾點,有些是客觀存在的事實,有些確實是國內的不良風氣、誤解等形成的惡性循環)

再說說Java的優點:
1.問世早,跨平臺,很早就佔領了市場,名聲已經在那裏
2.開源生態好,技術方案的可選性多。良性循環
3.成功的案例多。從企業級系統,到大規模互聯網系統,再到如今一直佔主流。最後扯到最近幾年火熱的android、hadoop...能夠看出java的地位了
4.因爲1,2,3的優勢。因此Java高端技術人員相對也會多一些
潑下冷水:
1.語言層面不如後來的C#,不少應用場合下也不如新型的go或者scala之類的
2.易用性不如C#.NET。平臺入門的門檻高一些
(見過一些開發人員,配置個環境變量就摸索了半天。有些被微軟慣壞了的.NET開發人員,再去開發java,框架整合和一大堆的配置文件就可能弄個半死)
3.IDE不如VS好用(也和我的習慣有關,各有千秋吧)
Eclipse的最大優點在於靈活、可擴展、佔用資源少
而myeclipse貌似不多有人在用了
IDEA還不錯,不過感受離微軟的VS仍是有差距
4.java的母公司sun被Oracle收購後,總讓人感受不太踏實
5.別總抱怨說微軟的某些體系和標準臃腫,反人類。其實JavaEE體系裏也有不少不成功的設計標準(EJB JPA JSF那些使用並不普遍),
只不事後來都被輕量級的開源框架取代了

說了那麼多,大概都明白要遷移的理由了。理性的理由大概以下:
1.對Mono和.NET跨平臺不太瞭解,捆綁在windows上面了。所以又擔憂IDE和服務器費用問題,又擔憂windows的安全性、自動化運維不方便。而Java跨平臺特性早就爲人所知。
2.看到.NET開源生態不是很好,Java成功的案例多,開源的方案選擇性更多
3.Java的高端技術大牛好像要容易找一點,至少國內是這樣的(不少大廠用Java,企業會認爲Java大牛多)
4.暫時也找不出其餘理由了

至於那些拍腦殼想的理由,可謂五花八門:
1.決策者對微軟的技術有成見或者誤解。或者技術管理者自己具備Java開發背景(這種一般是領導想着急的搞出點業績來)
2.公司高層變更,與其說「戰略調整」,不如叫政治鬥爭(例如:新官上任三把火,新來的技術高管想給團隊換血)
3.聽別人說.NET不行,不安全,性能低等等(這種人一般都是沒有深刻了解過.NET的)
4.早期沒有重視到技術和架構的重要性,沒有重視人的重要性,而每每把責任推給.NET或者.NET開發人員。
聽別人說Java好,因此就換Java吧(這種一般是病急亂投醫) 5.據說「京東、大衆點評、攜程」那些大公司都遷移了,咱們也遷吧。(毫無主見類型)
相關文章
相關標籤/搜索