更新时间:2019-08-29 09:54:34 来源:极悦 浏览1700次
Android开发作为“安身立命”的资本,在面对如今“移动要凉”的氛围,我们在沉住气“纵向进修”的同时,有时也希望横向拓展自身的能力,而Android开发在这一方面有着先天的优势,Java和良好的开放氛围给予了我们更多可能。
本文主要讲述本人在JavaWeb开发上的学习选择,希望能在一定某些方面帮到大家,这里也并不是安利转型,“全栈”并不是一个绝对的褒义词,每个人都对“全栈”的范畴有着不一样的定义。但是了解过后,至少能在需求上和“后台”发生争执时怼得更有力不是?
一、背景
这里快速说下JavaWeb开发的背景,作为Android开发,在学习后台开发上无疑用Java做敲门砖是成本较低的选择,JavaWeb与Android之间的相互转岗也屡见不鲜。
起初的并没有明确的前后端之分,如今也依旧存在前后端不分离的项目,只是随着时间发展,从项目管理维护、开发职责和效率的考虑下,慢慢的有了前后端职责之分。
对于Android开发而言,后端通俗而言就是写restful接口的。
JavaWeb大致发展历程如下图,从Struts2开始的MVC模式,再到Spring的控制反转(IOC)和切面编程(AOP),再到SpringBoot全家桶,其门槛也在逐步降低。对于这个历程感兴趣的可以自行了解下,后续主要推崇Spring大家庭。
事实上对于Android开发而言,Spring并不会是一个陌生的概念,其核心理念之一IOC(也称依赖注入)和使用逻辑与Dagger如出一辙,所以在入门时《Spring实战(第4版)》这本书相信会Android开发者是不错的选择。
二、框架选择
JavaWeb的世界同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和是Android开发者较友好的选择,那么SpringBoot则是你的“绿色通道”。SpringBoot又称之为全家桶,因为它集齐了各类常用的开发框架,同时降低了Spring开发的门槛,更是简化了各种配置过程,而且Jetbrains大家庭支持它!
所以现阶段而言,个人认为Spring、SpringMVC、SpringBoot是Android开发者学习入门JavaWeb的不错选择。
先理解Spring设计模式,再学习SpringMVCService/Controller等的开发,最后使用SpringBoot快速搭建Web项目。当前这只是一个开始,后续的路诸如还有:
数据库的学习:mysql、mongodb
持久层框架的学习:hibernate、mybatis
缓存框架的学习:ehcache、redis
安全权限框架的学习:shiro、springsecurity
分布式框架的学习:dubbo、springcloud
代理服务:Nginx
毕竟学无止境,有一技旁身,至少不至于孤陋寡闻。
三、开发工具选择
Android开发在IDE在选择上其实也很有优势,因为AndroidStudio本来就是基于Jetbrains的IDEACommutityEdition二次开发的。
都是一家子,选择Jetbrains全家桶中的IntelliJIDEA作为开发工具,对于Android开发者而言,从快捷键、界面UI、调试方式等都可以实现“无缝切换”和降低了学习成本。至于eclipse么,反正它已经没有出现在我视野中很久很久很久。
同时,对于SpringBoot和Maven的支持也同样优秀哦。
四、最后
在学习新的东西时,也经常面临一些选择的问题,特别是在想学Web服务开发时,经历多年的发展后台服务生态百花齐放:php、java、golang、phython、nodejs等容易让人在临门一脚时犹豫不决。(毕竟php天下第一)
除开业务需求和环境限制,我个人是比较推崇低成本拓展的。万事开头难,“三过门而不入”的坚持并不是每个人都有,而能把现阶段所掌握的去衍生去其他的能力,是比较稳定的技术增值。“贪多嚼不烂”,先有深度,再有宽度,望共勉!
本文或许不是什么干货,更多是提供Android开发者,在学习web开发时的一种选择建议。有备无患,毕竟不知道何时就用上了。
任何事情在做之前都需要定制好方向,学习也不例外,最后文末放上学习思维框架,给大家的学习提供一个方向,请笑纳。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习