做为一个原生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 开发时的一种选择建议。 有备无患,毕竟不知道什么时候就用上了。