做爲一個原生Android開發,一路走來經歷了
Java 、 Kotlin
的洗禮;在*「原生要涼」的氛圍下學習Cordova
、ReactNative
、Weex
、Flutter
等跨平臺框架;以後又在「大前端」的口號下延伸到React
、Vue
等前端框架的學習;最終面對「全棧」*的誘惑,又擼起了SpringBoot
的 Java web 開發。 具體可見 Android 程序員的 2018總結php
Android 開發做爲「安身立命」的資本,在面對現在「移動要涼」的氛圍,咱們在沉住氣 「縱向進修」 的同時,有時也但願 橫向拓展 自身的能力,而 Android 開發在這一方面有着先天的優點,Java 和良好的開放氛圍給予了咱們更多可能。前端
本文主要講述本人在 Java Web 開發上的學習選擇,但願能在必定某些方面幫到你們,這裏也並非安利轉型,「全棧」並非一個絕對的褒義詞,每一個人都對「全棧」的範疇有着不同的定義。可是瞭解事後, 至少能在需求上和「後臺」發生爭執時懟得更有力不是?🌹🐔java
瞭解下有利於消化node
這裏快速說下 Java Web 開發的背景,做爲Android開發,在學習後臺開發上無疑用 Java 作敲門磚是成本較低的選擇,Java Web 與 Android 之間的相互轉崗也家常便飯。mysql
起初的 Java Web 開發並無明確的先後端之分,現在也依舊存在先後端不分離的項目,只是隨着時間發展,從項目管理維護、開發職責和效率的考慮下,慢慢的有了先後端職責之分。程序員
對於Android開發而言,後端通俗而言就是寫restful接口的。golang
Java Web 大體發展歷程以下圖,從 Struts2
開始的 MVC 模式,再到 Spring
的 控制反轉(IOC)和切面編程(AOP) ,再到 SpringBoot 全家桶,其門檻也在逐步下降。對於這個歷程感興趣的能夠自行了解下,後續主要推崇Spring
你們庭。web
事實上對於 Android 開發而言, Spring
並不會是一個陌生的概念,其 核心理念之一 IOC (也稱依賴注入) 和使用邏輯與 Dagger
一模一樣,因此在入門時 《Spring實戰(第4版)》 這本書相信會 Android 開發者是不錯的選擇。redis
Spring Boot 全家桶快到碗裏來spring
Java Web 的世界同 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 開發者較友好的選擇,那麼 Spring Boot
則是你的「綠色通道」。 Spring Boot
又稱之爲全家桶,由於它集齊了各種經常使用的開發框架,同時下降了 Spring 開發的門檻,更是簡化了各類配置過程,並且 Jetbrains 你們庭支持它!
因此現階段而言,我的認爲 Spring
、SpringMVC
、SpringBoot
是 Android 開發者學習入門 Java Web 的不錯選擇。
先理解 Spring 設計模式,再學習 SpringMVC Service/Controller 等的開發,最後使用 SpringBoot 快速搭建 Web 項目。 當前這只是一個開始,後續的路諸如還有:
畢竟學無止境,有一技旁身,至少不至於孤陋寡聞。
「不用IDE,文本編輯器」 一直是大神的標配,可是「懶惰」使我進步,因此一款好的 IDE 可讓人更舒服的過分到入門。
Android 開發在 IDE 在選擇上其實也頗有優點,由於 Android Studio 原本就是基於 Jetbrains 的 IDEA Commutity Edition 二次開發的。
都是一家子,選擇 Jetbrains 全家桶中的 IntelliJ IDEA 做爲開發工具,對於 Android 開發者而言,從快捷鍵、界面UI、調試方式等均可以實現「無縫切換」和下降了學習成本。至於 eclipse 麼,反正它已經沒有出如今我視野中好久好久好久。
同時,IntelliJ IDEA 對於 SpringBoot 和 Maven 的支持也一樣優秀哦。
本人在學習新的東西時,也常常面臨一些選擇的問題,特別是在想學 Web 服務開發時,經歷多年的發展後臺服務生態百花齊放:php、java、golang、phython、nodejs 等容易讓人在臨門一腳時猶豫不決。(畢竟 php 天下第一)
除開業務需求和環境限制,我我的是比較推崇低成本拓展的。 萬事開頭難,「三過門而不入」的堅持並非每一個人都有,而能把現階段所掌握的去衍生去其餘的能力,是比較穩定的技術增值。「貪多嚼不爛」,先有深度,再有寬度,望共勉!
本文或許不是什麼乾貨,更可能是提供 Android 開發者,在學習 web 開發時的一種選擇建議。 有備無患,畢竟不知道什麼時候就用上了。