有個Java程序員小伙伴跟我說,他之前是做MES系統(tǒng)開發(fā)的,現(xiàn)在感覺做MES開發(fā)前景不太好,所以想轉(zhuǎn)上位機(jī),他覺得,上位機(jī)程序不就是一個PC端程序嘛,Java的GUI開發(fā)框架像Swing、JavaFX、SWT等等也可以開發(fā)PC端程序,因此,他覺得使用Java做上位機(jī)開發(fā)一點(diǎn)問題都沒有,那事實是怎么樣的呢?
如果只是從程序員的角度簡單得說功能實現(xiàn)的話,的確,Java能做上位機(jī)程序!但是,這么想有些簡單粗暴了!
目前,用來做上位機(jī)開發(fā)的主流編程語言就C++、C#這兩種,原因很簡單,那就是C++和C#在上位機(jī)開發(fā)上有生態(tài)優(yōu)勢!
打個比方吧,現(xiàn)在大部分的Java開發(fā)者所從事的開發(fā)領(lǐng)域是什么呢?是不是后端開發(fā)?而就是因為大部分Java程序員所從事的開發(fā)領(lǐng)域都是后端開發(fā),所圍繞的開發(fā)生態(tài)也都是基于后端、服務(wù)器的,而上位機(jī)開發(fā)的生態(tài)資源基本上都是圍繞下位機(jī)的,不是說Java不能對接下位機(jī),只不過大部分情況下都需要“手搓”才行,因此,開發(fā)速度是要低于C++和C#這些已經(jīng)在上位機(jī)開發(fā)領(lǐng)域使用了多年的開發(fā)語言的!
這就像C++和C#在后端生態(tài)上干不過Java是一個道理,最典型的就是C#,作為一個發(fā)展了20多年的編程語言,C#在游戲領(lǐng)域、網(wǎng)站開發(fā)、后端開發(fā)、PC端軟件開發(fā)方面,只要是用過C#的人都知道,C#的開發(fā)能力是要優(yōu)于Java的,推出的很多東西也是被很多面向?qū)ο蟮木幊陶Z言學(xué)習(xí)的。
但是,C#在后端開發(fā)領(lǐng)域的劣勢在于初期不跨平臺,因此后端開發(fā),尤其是在移動互聯(lián)網(wǎng)火了以后,被Java生態(tài)全面碾壓,即使是微軟后來推出了WindowsPhone想要在移動互聯(lián)網(wǎng)領(lǐng)域和Java抗衡,但是最終也只能以失敗告終,WindowsPhone也因此銷聲匿跡。
這跟Java現(xiàn)在的境遇很像,現(xiàn)在Java介入上位機(jī)開發(fā)領(lǐng)域,我覺得結(jié)果會和當(dāng)初C#想要介入移動互聯(lián)網(wǎng)領(lǐng)域是一樣的,最終很大概率也是會以失敗告終的!
從開發(fā)生態(tài)上來說,工業(yè)領(lǐng)域幾乎所有的硬件SDK,基本上只會提供C#版本和C++的cpp版本,甚至有很多對通信速度要求很高的硬件,只提供C++版本,偶爾會看到有硬件廠商提供Python的版本,但是我?guī)缀鯖]有看到過有硬件廠商提供Java版本的SDK,Java的處境只能用一個“大寫的尷尬”來形容了!
此時,如果有公司執(zhí)意要使用Java作為上位機(jī)開發(fā)語言,那面臨的結(jié)果就只能是“手搓”了,“手搓”的后果那就只能是遇到問題需要先對照SDK先把SDK從其他編程語言翻譯成Java版本,然后再去找問題,如此以來開發(fā)速度則遠(yuǎn)低于C++和C#這種硬件通訊“源生”支持的編程語言了!
另外一個生態(tài)就是人!
在一個公司,大家都使用C++和C#做上位機(jī)開發(fā),即使一個Java程序員是個頂尖“大牛”,即使是在上位機(jī)開發(fā)領(lǐng)域干了十幾二十年,但是,公司在招聘人才的時候首先考慮的就是人才的可持續(xù)性還有代碼的可延續(xù)性。
一個公司用兩套編程語言做開發(fā),帶來的直接后果就是當(dāng)使用某個編程語言的程序員離職了,那剩下的人將無從接手!
所以,目前在上位機(jī)開發(fā)這塊,要么公司主技術(shù)棧就是Java,否則,一般不會單獨(dú)招聘Java程序員來做上位機(jī)開發(fā)的。
但不可否認(rèn)的是,Java現(xiàn)在的人才生態(tài)是巨大的,我曾經(jīng)統(tǒng)計過招聘網(wǎng)站上公開的數(shù)據(jù),Java程序員的的數(shù)量至少是C#程序員的20倍!人才基數(shù)在那,而且,招聘Java程序員的難度相對招聘Java程序員的難度,也是呈倍數(shù)的!
這么多年,既做開發(fā)、又做招聘者,在這塊我是深有體會的!
結(jié)語
我不敢說Java一定就會像當(dāng)年的C#一樣,被C#在上位機(jī)開發(fā)領(lǐng)域全面碾壓,但是,Java想要替代或者和C++還有C#在上位機(jī)開發(fā)領(lǐng)域平分秋色,甚至是再次在上位機(jī)開發(fā)領(lǐng)域碾壓C#,我覺得還需要一段時間,可能是五年,也可能是十年。
但是,我看到現(xiàn)在很多Java程序員實際上已經(jīng)等不及了,我在公司是負(fù)責(zé)招聘的,我都不知道收到過多少份Java程序員來應(yīng)聘上位機(jī)開發(fā)崗位的簡歷了,但是,很遺憾,不行就是不行,至少現(xiàn)在不行!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.