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

作為一個(gè)原生Android開發(fā),一路走來經(jīng)歷了Java 、 Kotlin的洗禮;在“原生要涼”的氛圍下學(xué)習(xí)Cordova、ReactNative、Weex、Flutter 等跨平臺框架;之后又在“大前端”的口號下延伸到React、Vue 等前端框架的學(xué)習(xí);最終面對“全?!钡恼T惑,又?jǐn)]起了 SpringBoot的 Java web 開發(fā)。


image.png

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

本文主要講述本人在 Java Web 開發(fā)上的學(xué)習(xí)選擇,希望能在一定某些方面幫到大家,這里也并不是安利轉(zhuǎn)型,“全?!辈⒉皇且粋€(gè)絕對的褒義詞,每個(gè)人都對“全?!钡姆懂犛兄灰粯拥亩x。但是了解過后,至少能在需求上和“后臺”發(fā)生爭執(zhí)時(shí)懟得更有力不是?

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

一、背景

了解下有利于消化

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

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

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

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


image.png

發(fā)展歷程

事實(shí)上對于 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)目對照實(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í)際上后臺開發(fā)人員通常就是寫個(gè)Controller 提供個(gè) Model 給你。而 Hibernate 和 MyBatis 都是持久層框架,屬于能方便使用如 MySql 等數(shù)據(jù)庫的 ORM 框架。

image.png

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

所以現(xiàn)階段而言,個(gè)人認(rèn)為 Spring、SpringMVC、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ā)工具,對于 Android 開發(fā)者而言,從快捷鍵、界面UI、調(diào)試方式等都可以實(shí)現(xiàn)“無縫切換”和降低了學(xué)習(xí)成本。至于 eclipse 么,反正它已經(jīng)沒有出現(xiàn)在我視野中很久很久很久。

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


image.png

四、最后

本人在學(xué)習(xí)新的東西時(shí),也經(jīng)常面臨一些選擇的問題,特別是在想學(xué) Web 服務(wù)開發(fā)時(shí),經(jīng)歷多年的發(fā)展后臺服務(wù)生態(tài)百花齊放:php、java、golang、phython、nodejs 等容易讓人在臨門一腳時(shí)猶豫不決。(畢竟 php 天下第一)

除開業(yè)務(wù)需求和環(huán)境限制,我個(gè)人是比較推崇低成本拓展的。萬事開頭難,“三過門而不入”的堅(jiān)持并不是每個(gè)人都有,而能把現(xiàn)階段所掌握的去衍生去其他的能力,是比較穩(wěn)定的技術(shù)增值?!柏澏嘟啦粻€”,先有深度,再有寬度,望共勉!
如果你依然在編程的世界里迷茫,不知道自己的未來規(guī)劃,可以加入高級程序員群:里面可以與大神一起交流并走出迷茫。小白可進(jìn)群免費(fèi)領(lǐng)取學(xué)習(xí)資料,看看前輩們是如何在編程的世界里傲然前行。
1.LiveDataBus
2.Google官方架構(gòu)組件
3.Jetpack架構(gòu)
4.餓了么通信技術(shù)
5.OPenGL
6.音視頻
7.人工智能
8.Python
9.性能優(yōu)化
10.Flutter等
這些資料加群639986248領(lǐng)取

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

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

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