技術上難分高下,為什么市場選擇了Java?
編程語言之爭由來已久,每次爭鋒都逃不出兩個結果,一個是雙方爭執不下,誰也不服誰,另一個就是“不以使用場景來談論編程語言”都是耍流氓。所以,這一次我們不再單純的談論C#和Java誰強誰弱,而是從多個角度來看市場為什么選擇了Java。
雖然Java每個月都會出幾篇“陣亡”或者“準備陣亡”的報道,但是整體來看,Java在技術人中間的熱度一直是居高不下。根據TIOBE編程語言指數來看,從2002年起,Java一直穩居Top 3的位置,近幾年來幾乎都是以壓倒性的優勢位居首位。而C#與之相比,熱度就要弱很多,整體熱度要比Java相差一倍多。
為什么市場和大部分程序員會選擇Java而不是C#呢?
1. 成也微軟,敗也微軟
微軟之于C#如同蕭何之于韓信。
眾所周知,C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言,所以在對C#的支持方面微軟也是非常賣力氣的。Visual Studio是公認的“宇宙***IDE”,C#背靠這樣一座大山,在開發效率方面簡直有如神助。
但是微軟在費用方面從不手軟也是人盡皆知,C#開發后軟件的應用成本要比Java開發后軟件的應用成本高很多,而對企業來說,如果有一種替代方案能夠減少成本,無論是硬件成本還是軟件成本,都是極樂于應用的。而在這方面,Java似乎更勝一籌!
2. 跨平臺錯失良機,萬事皆休
跨平臺是Java***的優勢之一,Java應用程序可以部署在Windows、Linux、Mac以及其它Java JRE支持的操作系統上。而C#則因為微軟最初想要推廣自己家的操作系統,沒有提供除Windows之外的Runtime環境,限制了C#的發展。雖然現在微軟意識到了這個問題,開始積極適配其它平臺,但是無奈良機已逝,Java在大規模系統的開發中已經站穩了腳跟。
3. 開源才是天下大勢
2016年,微軟在GitHub“對開源貢獻人數最多的組織(Organizations with the most open source contributors)”中戰勝Facebook和Google躍居首位,贏得了業界和開源社區的認可。至此,人們好像就把微軟和開源聯系起來了。
事實上,早幾年微軟一直是開源的死敵,微軟前CEO史蒂夫·鮑爾默(Steve Ballmer),他當初曾將“開源”稱作微軟知識產權毒瘤。C#在微軟這樣的指導思想下發展,一開始的閉源也是意料之中的事情。而Java因為開源特性而得以在全球快速遍地開花,產生了眾多開源框架和很多大型項目的成功案例。雖然C#之后也進行了開源,但是對于開源開發者來說顯然吸引力不夠!
4. 錢太少,錢太少,錢太少,重要的事情說三遍
“Java程序員比C#程序員工資高”這是大家都公認的行業現實。下圖是職友集采集了其上北京C#程序員和Java程序員的工資收入水平樣本得出的結論,從圖中我們也可以明顯感覺到Java程序員的收入較于C#要偏高。
為什么會出現這種情況呢?前文說過了Java有很多開源框架,這時如何準確及時的選擇一個框架就成了難題,Java編程的門檻提高了,Java程序員的薪金也就高了。而C#由于很多框架都是“認證過的產品”,產品具備很濃重的微軟屬性,使用簡單、快速開發,對于C#程序員的要求相對較低,薪資自然就低了。除此之外,還有一部分歷史原因,Java要比C#的歷史更加深厚,選擇Java開發的廠商自然也多,市場需求也就很大。
“錢、人和開發”三者的關系似乎是一個死循環,錢越少,開發的程序員也會變少,企業想要使用這門技術開發應用,招聘的難度也會變大,反之亦然!
5. 無法避免的生態問題
生態問題是每次比較Java和C#之間的差別都會被人提及的,不可否認的是Java生態要比C#生態強得多。Java有各種現成的庫、框架和架構案例,在跨平臺的系統方面也有很多的優勢。資料管理軟體開發公司 Hazelcast 的行銷與開發商關系副總裁Miko Matsumura 曾表示,現在有相當大規模的開放源代碼計劃是以 Java 來編寫。對于一開始就以開放為基礎的 Java 而言,它們已經建立了規模龐大的使用社群、源代碼自由性以及組成之多樣性。而C#在開放源代碼的族群支持上仍是有很 長的一段路要走,畢竟,Java 早在八年前就已經開放源代碼了!
寫在***
在多個地方,筆者都曾聽到過程序員抱怨過“C#的工資太低了”、“要轉行做Java”……就技術和語言舒適度來說,兩者其實不相上下,任何一種語言的優勢或者劣勢都必須在實際的應用案例中才能體現出來,所以在選擇時還是要結合實際場景的!