Java往web方向比較好還是Android方向?
中庸的回答一定是各有優(yōu)劣。我們先深入分析下兩個方向,再來下結論。
先理一下這兩個概念。android方向自然是移動端開發(fā)。web方向,這個用詞不太準確。可能用服務器端開發(fā)更準確。
1、從需求量來說,肯定是服務器端多。需求量多的原因自然是服務器方向的應用場景多。這個應該很好理解吧。服務器端,方方面面,各行各業(yè)的信息系統(tǒng)或Web系統(tǒng)都可以用Java來做。當然有些專業(yè)領域Java并不擅長,比如偏底層和算法。但是目前已知的眾多商業(yè)場景都能看到Java的身影,從銀行到教育,從網站到ERP。
而安卓以移動端APP為主,開發(fā)的是給直接用戶使用的客戶端。這個客戶端訪問的服務器端,很可能還是用Java開發(fā)的服務器端應用。雖然已經進入移動互聯網時代了,但是還是會有大量軟件沒有或不需要移動端。或者移動端比較弱。比如很多專業(yè)性很強的應用。當然了,還有一些零散的智能設備現在也在使用安卓,比如智能電視。
2、從難易程度看,也是服務器端難;安卓本質上就是客戶端技術,簡單的說就是界面技術,某種意義上也算另外一種前端人員。當然安卓往深層做也不簡單,比如ROM定制之類會涉及到很多操作系統(tǒng)的知識。不過這里既然討論的是Java的安卓方向,那么我們可以假設范圍是在用開發(fā)移動端應用。
服務器端開發(fā)的基本面就會涉及到更廣的知識領域。除了Java語法知識,還有各種開源框架、數據庫知識及數據庫的安裝與使用、簡單算法和數據結構知識、會玩一點服務器軟件比如tomcat、也可能還需要會一點操作系統(tǒng)比如Linux的使用知識等等。
3、從就業(yè)機會上講,安卓方向相對勢弱,服務器端長期處于穩(wěn)定需求中。在移動互聯網剛興起的那兩年,安卓開發(fā)屬于求大于供,現在市場早已飽和。且因為服務器端的市場更大,所以哪怕服務器端市場也是飽和的,但是其基數大得多,那么就業(yè)機會也會更大。
再一個,移動端應用開發(fā)還有一個流派就是混合式開發(fā)。就是用一個移動端的原生殼,套上純前端代碼(html、css、js)來開發(fā)很多交互性不是那么強(游戲app算強、新聞類app算弱)的應用。因為混合式開發(fā)有跨平臺性,也就是一次開發(fā),安卓和蘋果都能用。所以在不少場景下會選擇這種開發(fā)方式。這又搶占了一部分安卓開發(fā)人員的市場。
現在移動端的形態(tài)越來越多樣,安卓、蘋果、微信小程序、百度小程序、支付寶小程序、頭條小程序,以后還有會鴻蒙APP。所以混合式開發(fā)一定會長期存在,且不斷優(yōu)化。這確實會壓縮安卓開發(fā)人員的存在空間。
4、從待遇上講,安卓已經過了最好的時候,服務器端一直比較穩(wěn)定。曾經安卓求大于供的那兩年,同等能力的安卓薪資會高于做服務器端的Java開發(fā)。現在安卓已是買方市場,安卓程序員沒有那么高的議價能力了。雖然混合式開發(fā)的增加,安卓程序員的薪資不說下降吧,往上去的趨勢肯定是沒有的了。
服務器端的收入在可見的未來肯定是比較穩(wěn)定的,波動不會太大,理論上會緩慢上漲。畢竟需求一直在那下不去,物價再漲你不漲說不過去啊。
5、從發(fā)展前景講,服務器端更廣。就前面的論述可以看到,服務器端開發(fā)對程序員的綜合能力要求更高。且在一個項目中,從偏前端的人和做后端的人中選一個項目經理的話,一般都會優(yōu)先考慮后端。一個是后端人員本身綜合能力要求更高,一個是后端人員本來要對接的其他角色更多對項目的理解比做安卓的人更深。
綜上,服務器端(也即是Web方向)穩(wěn)定可期,安卓端相對需求量少但肯定會長期存在。