人紅是非多,其實不僅僅是人,任何事物也是一樣,之前已經在企業級開發當中大展拳腳的Java憑借著移動端的安卓,大數據端的hadoop之勢,吸引了更多的開發人員加入到Java陣營,那么為什么越來越多的人來學習Java了呢?
我想到的原因有以下幾點:
1、開源,免費,跨平臺,相關產品不用花錢,微軟的產品一年會花費多少?
2、開源插件和產品有非常多,穩定性強。
3、移動端安卓的火爆。
4、大數據hadoop的火爆。
5、相關論壇的熱鬧。
為什么越來越多的人來學習Java了呢?
先說下C# .NET吧
1、從使用者角度來看,語言層面C#是優于Java的。C#設計應該是借鑒了Java,畢竟當初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出色的技術人員相對也會多一些
5、IDE方面,有eclipse,myeclipse,近幾年,IDEA也是越來越火了
6、正是因為學習Java的人越來越多,所以也就導致Java的大環境是越來越好,良性循環。
如果你對C語言也感興趣,可以看看這個:Java和C哪個好?