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