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