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