Android程序员为什么要去学Java后台

简介: 作为一个原生Android开发,一路走来经历了Java 、 Kotlin的洗礼;在“原生要凉”的氛围下学习Cordova、ReactNative、Weex、Flutter 等跨平台框架;之后又在“大前端”的口号下延伸到React、Vue 等前端框架的学习;最终面对“全栈”的诱惑,又撸起了 SpringBoot的 Java web 开发。

作为一个原生Android开发,一路走来经历了Java 、 Kotlin的洗礼;在“原生要凉”的氛围下学习CordovaReactNativeWeexFlutter 等跨平台框架;之后又在“大前端”的口号下延伸ReactVue 等前端框架的学习;最终面对“全栈”的诱惑,又撸起了 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 给你。而 HibernateMyBatis 都是持久层框架,属于能方便使用如 MySql 等数据库的 ORM 框架。

 

如果说 SpringSpringMVC 是 Android 开发者较友好的选择,那么 Spring Boot 则是你的“绿色通道”。 Spring Boot 又称之为全家桶,因为它集齐了各类常用的开发框架,同时降低了 Spring 开发的门槛,更是简化了各种配置过程,而且 Jetbrains 大家庭支持它!

所以现阶段而言,个人认为 SpringSpringMVCSpringBoot 是 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 的支持也同样优秀哦。

 

四、结语

本人在学习新的东西时,也经常面临一些选择的问题,特别是在想学 Web 服务开发时,经历多年的发展后台服务生态百花齐放:php、java、golang、phython、nodejs 等容易让人在临门一脚时犹豫不决。

除开业务需求和环境限制,我个人是比较推崇低成本拓展的。万事开头难,“三过门而不入”的坚持并不是每个人都有,而能把现阶段所掌握的去衍生去其他的能力,是比较稳定的技术增值。“贪多嚼不烂”,先有深度,再有宽度,望共勉!

本文或许不是什么干货,更多是提供 Android 开发者,在学习 web 开发时的一种选择建议。有备无患,毕竟不知道何时就用上了。


五.附录

Android高级技术大纲,以及系统进阶视频;

 

附录一;Android高级技术大纲

附录二;Android进阶系统资料视频

获取方式;

加Android进阶群;701740775。即可前往免费领取。免费备注一下csdn

相关文章
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
2264 33
|
Java 程序员 应用服务中间件
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-2)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
263 0
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
371 0
|
11月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
1302 4
|
Java Linux
java的jar后台启动
java的jar后台启动
267 14
|
网络协议 Java 大数据
【高薪程序员必看】万字长文拆解Java并发编程!(1)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
209 0
|
安全 Java 程序员
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-1)
🔥【高薪程序员必看】万字长文拆解Java并发编程!面试官看了直呼内行,90%人不知道的线程安全骚操作!💻🚀《16个高频面试灵魂拷问+底层源码暴击》🔥👉戳这里看如何用1个月经验吊打3年程序员!📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!
186 0
|
缓存 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(3-1):并发共享问题的解决与分析
活锁:多个线程相互影响对方退出同步代码块的条件而导致线程一直运行的情况。例如,线程1的退出条件是count=5,而线程2和线程3在其代码块中不断地是count进行自增自减的操作,导致线程1永远运行。内存一致性问题:由于JIT即时编译器对缓存的优化和指令重排等造成的内存可见性和有序性问题,可以通过synchronized,volatile,并发集合类等机制来解决。这里的线程安全是指,多个线程调用它们同一个实例的方法时,是线程安全的,但仅仅能保证当前调用的方法是线程安全的,不同方法之间是线程不安全的。
220 0
|
Java 程序员
【高薪程序员必看】万字长文拆解Java并发编程!(3-2):并发共享问题的解决与分析
wait方法和notify方法都是Object类的方法:让当前获取锁的线程进入waiting状态,并进入waitlist队列:让当前获取锁的线程进入waiting状态,并进入waitlist队列,等待n秒后自动唤醒:在waitlist队列中挑一个线程唤醒:唤醒所有在waitlist队列中的线程它们都是之间协作的手段,只有拥有对象锁的线程才能调用这些方法,否则会出现IllegalMonitorStateException异常park方法和unpark方法是LockSupport类中的方法。
223 0
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(4-1):悲观锁底层原理与性能优化实战
目录4. JVM字节码文件4.1. 字节码文件-组成4.1.1. 组成-基础信息4.1.1.1. 基础信息-魔数4.1.1.2. 基础信息-主副版本号4.1.2. 组成-常量池4.1.3. 组成-方法4.1.3.1. 方法-工作流程4.1.4. 组成-字段4.1.5. 组成-属性4.2. 字节码文件-查看工具4.2.1. javap4.2.2. jclasslib4.2.3. 阿里Arthas
230 0