更新時(shí)間:2019-08-29 09:54:34 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1974次
Android開發(fā)作為“安身立命”的資本,在面對如今“移動(dòng)要涼”的氛圍,我們在沉住氣“縱向進(jìn)修”的同時(shí),有時(shí)也希望橫向拓展自身的能力,而Android開發(fā)在這一方面有著先天的優(yōu)勢,Java和良好的開放氛圍給予了我們更多可能。
本文主要講述本人在JavaWeb開發(fā)上的學(xué)習(xí)選擇,希望能在一定某些方面幫到大家,這里也并不是安利轉(zhuǎn)型,“全棧”并不是一個(gè)絕對的褒義詞,每個(gè)人都對“全棧”的范疇有著不一樣的定義。但是了解過后,至少能在需求上和“后臺(tái)”發(fā)生爭執(zhí)時(shí)懟得更有力不是?
一、背景
這里快速說下JavaWeb開發(fā)的背景,作為Android開發(fā),在學(xué)習(xí)后臺(tái)開發(fā)上無疑用Java做敲門磚是成本較低的選擇,JavaWeb與Android之間的相互轉(zhuǎn)崗也屢見不鮮。
起初的JavaWeb開發(fā)并沒有明確的前后端之分,如今也依舊存在前后端不分離的項(xiàng)目,只是隨著時(shí)間發(fā)展,從項(xiàng)目管理維護(hù)、開發(fā)職責(zé)和效率的考慮下,慢慢的有了前后端職責(zé)之分。
對于Android開發(fā)而言,后端通俗而言就是寫restful接口的。
JavaWeb大致發(fā)展歷程如下圖,從Struts2開始的MVC模式,再到Spring的控制反轉(zhuǎn)(IOC)和切面編程(AOP),再到SpringBoot全家桶,其門檻也在逐步降低。對于這個(gè)歷程感興趣的可以自行了解下,后續(xù)主要推崇Spring大家庭。
事實(shí)上對于Android開發(fā)而言,Spring并不會(huì)是一個(gè)陌生的概念,其核心理念之一IOC(也稱依賴注入)和使用邏輯與Dagger如出一轍,所以在入門時(shí)《Spring實(shí)戰(zhàn)(第4版)》這本書相信會(huì)Android開發(fā)者是不錯(cuò)的選擇。
二、框架選擇
JavaWeb的世界同Android一樣存在各類框架,也許一些前輩們都建議不要從學(xué)習(xí)框架開始,但是我個(gè)人而言更習(xí)慣從實(shí)用性切入:選擇一個(gè)主流框架學(xué)習(xí),挑一個(gè)開源項(xiàng)目對照實(shí)踐,之后完成一個(gè)小項(xiàng)目躺坑,最后才開始深入去學(xué)習(xí)感興趣的點(diǎn)。畢竟萬事開頭難,如果一開始太過枯燥,難免讓人“把持不住”。
在Spring斷斷續(xù)續(xù)的學(xué)習(xí)中,主要接觸了SSH(曾經(jīng))和SSM(如今)兩種組合開發(fā)框架,至于怎么選擇,你懂的。
SSH:Struts2做控制器(controller)+Spring管理組件+Hibernate負(fù)責(zé)數(shù)據(jù)庫。
SSM:SpringMVC做控制器(controller)+Spring管理組件+MyBatis負(fù)責(zé)數(shù)據(jù)庫。
作為Android開發(fā)者,如果你使用過或了解過Dagger,那么理解和使用Spring并不難。通過各類注解如@Contorller、@Service、@Configuration等去標(biāo)明類的用途,通過@Autowired去注入使用的方式,相信會(huì)讓你倍感親切。
如果說Spring是類似Dagger的注入和管理實(shí)體的容器框架,那么SpringMVC就是基于Spring功能之上添加的Web框架。
對于Android開發(fā)而言,MVC肯定是不會(huì)陌生的,實(shí)際上后臺(tái)開發(fā)人員通常就是寫個(gè)Controller提供個(gè)Model給你。而Hibernate和MyBatis都是持久層框架,屬于能方便使用如MySql等數(shù)據(jù)庫的ORM框架。
如果說Spring和SpringMVC是Android開發(fā)者較友好的選擇,那么SpringBoot則是你的“綠色通道”。SpringBoot又稱之為全家桶,因?yàn)樗R了各類常用的開發(fā)框架,同時(shí)降低了Spring開發(fā)的門檻,更是簡化了各種配置過程,而且Jetbrains大家庭支持它!
所以現(xiàn)階段而言,個(gè)人認(rèn)為Spring、SpringMVC、SpringBoot是Android開發(fā)者學(xué)習(xí)入門JavaWeb的不錯(cuò)選擇。
先理解Spring設(shè)計(jì)模式,再學(xué)習(xí)SpringMVCService/Controller等的開發(fā),最后使用SpringBoot快速搭建Web項(xiàng)目。當(dāng)前這只是一個(gè)開始,后續(xù)的路諸如還有:
數(shù)據(jù)庫的學(xué)習(xí):mysql、mongodb
持久層框架的學(xué)習(xí):hibernate、mybatis
緩存框架的學(xué)習(xí):ehcache、redis
安全權(quán)限框架的學(xué)習(xí):shiro、springsecurity
分布式框架的學(xué)習(xí):dubbo、springcloud
代理服務(wù):Nginx
畢竟學(xué)無止境,有一技旁身,至少不至于孤陋寡聞。
三、開發(fā)工具選擇
Android開發(fā)在IDE在選擇上其實(shí)也很有優(yōu)勢,因?yàn)锳ndroidStudio本來就是基于Jetbrains的IDEACommutityEdition二次開發(fā)的。
都是一家子,選擇Jetbrains全家桶中的IntelliJIDEA作為開發(fā)工具,對于Android開發(fā)者而言,從快捷鍵、界面UI、調(diào)試方式等都可以實(shí)現(xiàn)“無縫切換”和降低了學(xué)習(xí)成本。至于eclipse么,反正它已經(jīng)沒有出現(xiàn)在我視野中很久很久很久。
同時(shí),IntelliJIDEA對于SpringBoot和Maven的支持也同樣優(yōu)秀哦。
四、最后
在學(xué)習(xí)新的東西時(shí),也經(jīng)常面臨一些選擇的問題,特別是在想學(xué)Web服務(wù)開發(fā)時(shí),經(jīng)歷多年的發(fā)展后臺(tái)服務(wù)生態(tài)百花齊放:php、java、golang、phython、nodejs等容易讓人在臨門一腳時(shí)猶豫不決。(畢竟php天下第一)
除開業(yè)務(wù)需求和環(huán)境限制,我個(gè)人是比較推崇低成本拓展的。萬事開頭難,“三過門而不入”的堅(jiān)持并不是每個(gè)人都有,而能把現(xiàn)階段所掌握的去衍生去其他的能力,是比較穩(wěn)定的技術(shù)增值。“貪多嚼不爛”,先有深度,再有寬度,望共勉!
本文或許不是什么干貨,更多是提供Android開發(fā)者,在學(xué)習(xí)web開發(fā)時(shí)的一種選擇建議。有備無患,畢竟不知道何時(shí)就用上了。
任何事情在做之前都需要定制好方向,學(xué)習(xí)也不例外,最后文末放上學(xué)習(xí)思維框架,給大家的學(xué)習(xí)提供一個(gè)方向,請笑納。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743