給Android工程師的Java後臺學習建議

2021-02-15 程式設計師專欄

作為一個原生Android開發,一路走來經歷了Java 、 Kotlin的洗禮;在「原生要涼」的氛圍下學習Cordova、ReactNative、Weex、Flutter 等跨平臺框架;之後又在「大前端」的口號下延伸到React、Vue 等前端框架的學習;最終面對「全棧」的誘惑,又擼起了 SpringBoot的 Java web 開發。


Android 開發作為「安身立命」的資本,在面對如今「移動要涼」的氛圍,我們在沉住氣「縱向進修」的同時,有時也希望橫向拓展自身的能力,而 Android 開發在這一方面有著先天的優勢,Java 和良好的開放氛圍給予了我們更多可能。


本文主要講述本人在 Java Web 開發上的學習選擇,希望能在一定某些方面幫到大家,這裡也並不是安利轉型,「全棧」並不是一個絕對的褒義詞,每個人都對「全棧」的範疇有著不一樣的定義。但是了解過後,至少能在需求上和「後臺」發生爭執時懟得更有力不是?

一、背景

了解下有利於消化

這裡快速說下 Java Web 開發的背景,作為Android開發,在學習後臺開發上無疑用 Java 做敲門磚是成本較低的選擇,Java Web 與 Android 之間的相互轉崗也屢見不鮮。

起初的 Java Web 開發並沒有明確的前後端之分,如今也依舊存在前後端不分離的項目,只是隨著時間發展,從項目管理維護、開發職責和效率的考慮下,慢慢的有了前後端職責之分。

對於Android開發而言,後端通俗而言就是寫restful接口的。

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

事實上對於 Android 開發而言, Spring 並不會是一個陌生的概念,其核心理念之一 IOC (也稱依賴注入) 和使用邏輯與 Dagger 如出一轍,所以在入門時《Spring實戰(第4版)》這本書相信會 Android 開發者是不錯的選擇。

二、框架選擇

Spring Boot 全家桶快到碗裡來

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 項目。  當前這只是一個開始,後續的路諸如還有:

資料庫的學習:mysql、mongodb

持久層框架的學習:hibernate 、mybatis

緩存框架的學習:ehcache、redis

安全權限框架的學習:shiro、spring security

分布式框架的學習:dubbo、spring cloud

代理服務:Nginx

畢竟學無止境,有一技旁身,至少不至於孤陋寡聞。

三、開發工具選擇

「不用IDE,文本編輯器」一直是大神的標配,但是「懶惰」使我進步,所以一款好的 IDE 可以讓人更舒服的過度到入門。

Android 開發在 IDE 在選擇上其實也很有優勢,因為 Android Studio 本來就是基於 Jetbrains  的 IDEA Commutity Edition 二次開發的。

都是一家子,選擇 Jetbrains 全家桶中的 IntelliJ IDEA 作為開發工具,對於 Android 開發者而言,從快捷鍵、界面UI、調試方式等都可以實現「無縫切換」和降低了學習成本。至於 eclipse 麼,反正它已經沒有出現在我視野中很久很久很久。

同時,IntelliJ IDEA 對於 SpringBoot 和 Maven 的支持也同樣優秀哦。

全家桶之部分Show

四、最後

本人在學習新的東西時,也經常面臨一些選擇的問題,特別是在想學 Web 服務開發時,經歷多年的發展後臺服務生態百花齊放:php、java、golang、phython、nodejs 等容易讓人在臨門一腳時猶豫不決。(畢竟 php 天下第一)

除開業務需求和環境限制,我個人是比較推崇低成本拓展的。萬事開頭難,「三過門而不入」的堅持並不是每個人都有,而能把現階段所掌握的去衍生去其他的能力,是比較穩定的技術增值。「貪多嚼不爛」,先有深度,再有寬度,望共勉!

本文或許不是什麼乾貨,更多是提供 Android 開發者,在學習 web 開發時的一種選擇建議。有備無患,畢竟不知道何時就用上了。

相關焦點

  • 【乾貨】學好android為什麼一定要學好java|電子書分享
    Android一定要會java的,因為android的開發至少目前是在一個純java的開發環境中進行的,android的學習基本上是學習如何運用它的控制項以及各個組件,但是要實現這些控制項和組件必須要用到java,不排除以後使用c#也可以進行android的開發。
  • 一位Java後臺工程師的面試經歷
    一位Java後臺工程師的面試經歷 工程師吳畏 發表於 2018-10-03 16:59:00 經過接近一個月的時間,完成換工作這件「小事」,前後總計面試了多家公司,最後也沒接到幾個offer,不過最終總算塵埃落定
  • 如何讓你的App永遠在後臺存活:對Android進程守護、鬧鐘後臺被殺死的研究
    但是,我們知道,android系統很坑爹,不同的廠商對rom的定製,導致對進程的管理都不太相同,但是如何做到在各個手機上都能一直保持後臺執行呢?。為了解決這個問題,特地去研究了各種保持進程不被殺死的方法。下面對幾種常見的用法進行了分析,並且給出了我自己發現的一個保持進程運行的方法。
  • 開課吧:Java軟體工程師一般要學習哪些課程?
    JAVA只是一種程式語言,由這個語言衍生出來領域很多,如果您有過使用JAVA語言開發經驗,那您肯定會關心JAVA的某一方向學習的問題,但您直接關心JAVA學習要學哪些課程,那我猜您一定是零基礎,作為零基礎的,以下建議僅供參考:
  • 【Android基礎學習一】Android 常用 adb 命令總結
    : 其管理客戶端到 Android 設備上 adb 後臺進程的連接adb 服務啟動後,Windows 可以在任務管理器中找到 adb.exe 這個進程運行在 Android 設備上的 adb 後臺進程執行 adb shell ps | grep adbd ,可以找到該後臺進程,windows 請使用 findstr 替代 grep[xuxu
  • 學習java畢業後可以參加哪些工作?這些工作看看適合你嗎?
    學習java畢業後可以參加哪些工作?這些工作看看適合你嗎?文:源碼時代長期以來,Java一直是網際網路行業的熱門行業。Java技術在伺服器和行動裝置上的廣泛應用是它如此受歡迎的原因。所以零基礎的學習,精通就能找到高薪的工作。現在市場上有很多Java培訓機構,學習之後我們能做什麼?
  • 開課吧:學Java可以就職哪些職位?Java工程師一般月薪是多少?
    java也有不同的方向,javaEE的方向更好些,像是電信,網際網路,物流,財務,證券,銀行,生產製造等ERP管理軟體,大型網站及後臺開發。薪資都比較客觀。java主要用於開發應用,現在很多企業和公司都要依賴於應用來運轉、盈利,比如電商平臺、O2O、金融系統等等。而與之不太一樣的像C語言主要用來開發系統底層通訊,比如驅動軟體。
  • Android 代碼規範文檔
    後臺返回的金額數值應該使用 String 來接收,而不能用浮點數來接收,因為 float 或者 double 在數值比較大的時候會容易丟失精度,並且還需要自己手動轉換出想要保留的小數位,最好的方式是後臺返回什麼前端就展示什麼,而到了運算的時候,則應該用 BigDecimal 類來進行轉換和計算,當然金額在前端一般展示居多,運算的情況還算是比較少的。
  • 月薪2萬的Java工程師簡歷是這樣的
    小雀之前採訪過一個妹紙,寫過一篇前端工程師簡歷應該注意些什麼,反響不錯,今天有幸採訪了一些Java圈子裡的行家
  • 每個後臺程式設計師都需要學習的是什麼?第一是先了解伺服器
    後臺程式設計師有很多種,比如java開發工程師、php開發工程師、Python開發工程師,不管是哪種後臺程式設計師,要想成為後臺程式設計師編程是次要,其他比如網站伺服器等才是關鍵。很多剛畢業出來的,雖然java編程學習很好,但是對網站伺服器、伺服器防火牆、伺服器管理,搭建伺服器環境等等都不是很了解,伺服器是網站安全關鍵,所以每個後臺程式設計師第一是先了解伺服器作用。
  • Android 學習資料收集
    這份資料我會不斷的更新完善, 同時也歡迎更多具有豐富經驗的Android開發者將自己常用的工具、學習資料、學習心得等分享上來, 我將定期篩選合併, 該份學習資料有不足的地方, 也請指出, 我會謙虛接受改正, 希望我能與大家一起來學習, 謝謝.
  • 山西Java軟體工程師怎麼選_立訊學院服務到位收費合理
    java軟體工程師簡歷中項目經驗怎麼寫?今日之窘:TikTok到底「失算」在哪裡?這樣還不如剛開始就來學習這個專業。同樣也還能獲取大學學歷。下圖就是軟體工程師裡面的java工程師的崗位數量。END注意事項以上內容僅供參考, 畢竟選擇還是取決於自己 !山西Java軟體工程師怎麼選, 在程序開發領域、Java語言無所不能,無處不在,幾乎所有的應用程式可以用Java開發出來。
  • CocosCreator | Android集成穿山甲SDK(ts和java互調注意事項)
    tips:ts與java交互請參考官方文檔:https://docs.cocos.com/creator/2.2/manual
  • 學習java這個建議你一定得聽
    其中學習方法和理念特別重要,很多時候我們大多數人都樂忠於學習知識,卻很少有人能夠冷靜下來看待學習本身。因為是計算機專業,大學畢業後身邊很多同學都決定未來搞編程,當時畢業市面上最流行的就是java,用人單位要的多,也好找工作,於是我不少同學的方向都是java工程師。但大學計算機學到的知識並不精深。
  • Java基礎學習心得筆記
    對於很多只會C語言的初學者而言,面對java基礎語法學習,反而感覺很難,其實其中最大的問題不是語法難,而是一種編程思想的轉變。
  • 學習Java可以從事什麼工作?作為Java工程師需要掌握哪些技能
    取得java的版權。2011年7月28日,甲骨文發布java7.0的正式版。2014年,甲骨文(O)公司發布了Java8正式版。近日,甲骨文Java平臺組首席架構師Mark Reinhold發布消息說,原定於7月發布Java9,現在推遲到了9月21日。
  • Android學習之Build環境初探
    這裡略過對android在手機上的文件系統框架的闡述(google或者baidu都能幫助你找到對應的信息),主要看google是如何把生成合適的rootfs的工作整合到它的build體系當中,同時,會順帶看一下CyanogenMod中對應各種機型的build機制。
  • 全棧工程師為什麼越混越困難,看這篇就夠了
    我深入了解了一下,技術經理採用的方案就是前後端分離,java只做接口,後臺的頁面由web程式設計師來開發,這就完蛋了,這樣的配置用這種方案,肯定不能按時完成工作。這種技術方案,就是java程式設計師砍掉兩隻手,只做一塊業務,而web程式設計師淪為界面交互工程師。
  • Android 11來了,快!扶我起來
    添加的方法如下(https://developer.android.google.cn/reference/android/provider/MediaStore):(android.content.ContentResolver, java.util.Collection)用戶向應用授予對指定媒體文件組的寫入訪問權限的請求。
  • 一個Java高級工程師的進階之路
    一個Java高級工程師的進階之路想必Java新手們都想知道如何成為一個Java高級工程師,小編整理了一下Java高級工程師必須具備的一些專業技能供大家參考,希望可以幫到大家!宏觀方面JAVA要想成為JAVA(高級)工程師肯定要學習JAVA。一般的程式設計師或許只需知道一些JAVA的語法結構就可以應付了。