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