Android程序員的Java后臺(tái)學(xué)習(xí)建議

作為一個(gè)原生Android開發(fā),一路走來經(jīng)歷了Java 、 Kotlin的洗禮;在“原生要涼”的氛圍下學(xué)習(xí)CordovaReactNative、Weex、Flutter 等跨平臺(tái)框架;之后又在“大前端”的口號(hào)下延伸ReactVue 等前端框架的學(xué)習(xí);最終面對(duì)“全?!?/em>的誘惑,又?jǐn)]起了 SpringBoot的 Java web 開發(fā)。具體可見 Android 程序員的 2018總結(jié)

Android 開發(fā)作為“安身立命”的資本,在面對(duì)如今“移動(dòng)要涼”的氛圍,我們?cè)诔磷?strong>“縱向進(jìn)修”的同時(shí),有時(shí)也希望橫向拓展自身的能力,而 Android 開發(fā)在這一方面有著先天的優(yōu)勢,Java 和良好的開放氛圍給予了我們更多可能。

本文主要講述本人在 Java Web 開發(fā)上的學(xué)習(xí)選擇,希望能在一定某些方面幫到大家,這里也并不是安利轉(zhuǎn)型,“全?!?/strong>并不是一個(gè)絕對(duì)的褒義詞,每個(gè)人都對(duì)“全?!?/strong>的范疇有著不一樣的定義。但是了解過后,至少能在需求上和“后臺(tái)”發(fā)生爭執(zhí)時(shí)懟得更有力不是?????

趕緊進(jìn)入主題吧

一、背景

了解下有利于消化

這里快速說下 Java Web 開發(fā)的背景,作為Android開發(fā),在學(xué)習(xí)后臺(tái)開發(fā)上無疑用 Java 做敲門磚是成本較低的選擇,Java Web 與 Android 之間的相互轉(zhuǎn)崗也屢見不鮮。

起初的 Java Web 開發(fā)并沒有明確的前后端之分,如今也依舊存在前后端不分離的項(xiàng)目,只是隨著時(shí)間發(fā)展,從項(xiàng)目管理維護(hù)、開發(fā)職責(zé)和效率的考慮下,慢慢的有了前后端職責(zé)之分。

對(duì)于Android開發(fā)而言,后端通俗而言就是寫restful接口的。

Java Web 大致發(fā)展歷程如下圖,從 Struts2 開始的 MVC 模式,再到 Spring控制反轉(zhuǎn)(IOC)和切面編程(AOP),再到 SpringBoot 全家桶,其門檻也在逐步降低。對(duì)于這個(gè)歷程感興趣的可以自行了解下,后續(xù)主要推崇Spring 大家庭。

發(fā)展歷程

事實(shí)上對(duì)于 Android 開發(fā)而言, Spring 并不會(huì)是一個(gè)陌生的概念,其核心理念之一 IOC (也稱依賴注入) 和使用邏輯與 Dagger 如出一轍,所以在入門時(shí)《Spring實(shí)戰(zhàn)(第4版)》這本書相信會(huì) Android 開發(fā)者是不錯(cuò)的選擇。

二、框架選擇

Spring Boot 全家桶快到碗里來

Java Web 的世界同 Android 一樣存在各類框架,也許一些前輩們都建議不要從學(xué)習(xí)框架開始,但是我個(gè)人而言更習(xí)慣從實(shí)用性切入:選擇一個(gè)主流框架學(xué)習(xí),挑一個(gè)開源項(xiàng)目對(duì)照實(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 框架。

對(duì)于 Android 開發(fā)而言,MVC 肯定是不會(huì)陌生的,實(shí)際上后臺(tái)開發(fā)人員通常就是寫個(gè)Controller 提供個(gè) Model 給你。而 HibernateMyBatis 都是持久層框架,屬于能方便使用如 MySql 等數(shù)據(jù)庫的 ORM 框架。

MVC

如果說 SpringSpringMVC 是 Android 開發(fā)者較友好的選擇,那么 Spring Boot 則是你的“綠色通道”。 Spring Boot 又稱之為全家桶,因?yàn)樗R了各類常用的開發(fā)框架,同時(shí)降低了 Spring 開發(fā)的門檻,更是簡化了各種配置過程,而且 Jetbrains 大家庭支持它!

所以現(xiàn)階段而言,個(gè)人認(rèn)為 SpringSpringMVC、SpringBoot 是 Android 開發(fā)者學(xué)習(xí)入門 Java Web 的不錯(cuò)選擇。

先理解 Spring 設(shè)計(jì)模式,再學(xué)習(xí) SpringMVC Service/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、spring security
  • 分布式框架的學(xué)習(xí):dubbo、spring cloud
  • 代理服務(wù):Nginx

畢竟學(xué)無止境,有一技旁身,至少不至于孤陋寡聞。

三、開發(fā)工具選擇

“不用IDE,文本編輯器”一直是大神的標(biāo)配,但是“懶惰”使我進(jìn)步,所以一款好的 IDE 可以讓人更舒服的過度到入門。

Android 開發(fā)在 IDE 在選擇上其實(shí)也很有優(yōu)勢,因?yàn)?Android Studio 本來就是基于 Jetbrains 的 IDEA Commutity Edition 二次開發(fā)的。

都是一家子,選擇 Jetbrains 全家桶中的 IntelliJ IDEA 作為開發(fā)工具,對(duì)于 Android 開發(fā)者而言,從快捷鍵、界面UI、調(diào)試方式等都可以實(shí)現(xiàn)“無縫切換”和降低了學(xué)習(xí)成本。至于 eclipse 么,反正它已經(jīng)沒有出現(xiàn)在我視野中很久很久很久。

同時(shí),IntelliJ IDEA 對(duì)于 SpringBoot 和 Maven 的支持也同樣優(yōu)秀哦。

全家桶之部分Show

四、最后

本人在學(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í)就用上了。

Android 程序員的 2018總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容