学习路线
由@LYS编辑此页面
预防针
恭喜你!选择了 Java 后端开发路线,你的未来指定是:
学 Java 的这辈子是有了,因为后端 Java 死路一条,尤其是(客观的讲)在学历劣势的情况下。
虽然没有具体的数据统计,但是纵观整个 Java 后端找工作的历史难度,放在整个计算机行业都是相当炸裂的存在。
以我自己 2024 年秋招投递 Java 后端岗位为例,从 2024/08 开始投递,到 2024/11 结束:
- 投递数量:200 +
- 笔试数量:< 50
- 面试数量:< 10
- 意向数量:2
几乎可以说是刀剑起舞,命悬一线,具体详细的过程可以参考工作经验篇。
而且,在可预估的未来几年内,Java 后端仍是一个竞争非常激烈的赛道,无论是社招还是校招。
Java 学习路线
如果你能接受 Java 巨卷无比的现状,并且立志于在这个赛道卷出属于自己的一片天,那么请继续。
这里我按照自己的学习经验,将 Java 后端路线分为了三个大阶段,在每个阶段我都提供了相关的学习课程和资料。
WARNING
下面也许会出现许多技术名词,但是不要担心,随着学习深入,你会逐渐了解。
基础阶段
这一部分主要是针对 JavaWeb 及其相关内容的学习:
- 计算机网络相关:TCP 通信、HTTP 协议、Cookie 等。
- 数据库基础:MySQL 数据库、JDBC 框架、Mybatis 框架。
- 前端基础:HTML 页面、CSS 样式、JavaScript 脚本。
- 后端基础:Tomcat 服务器、Servlet 基础。
- 其他框架和技术:Maven、Lombok、JUL、Thymeleaf。
你可能会有如下疑问:
- 我只学习后端,为什么还要学前端?
- 后端基础内容为什么占比这么少?
- 出现了这么多框架都要掌握吗?要如何学习?
别急,下面一一解答:
- 在这一部分,我们学习到的是 JSP 开发(一种在 HTML 中嵌入 Java 代码的技术,用于生成动态 Web 页面),因此需要学习部分前端基础内容。
- 这一阶段,我们需要注重于与后端开发相关的技术和框架,例如数据库基础、计算机网络、前端基础等。这些知识和技术也是后端开发中非常重要的一部分。因此在后端基础中,我们只学习 Tomcat 服务器、Servlet 基础这两个重要内容。
- 对于上述出现的框架和技术,我们需要重点学习 MySQL、Mybatis、Maven、Lombok 即可,其他技术了解即可,因为 JSP 开发并不是 Java 后端开发最核心的内容。
完成这一部分的学习,基本就具备了独立开发简单网站的能力,实现包括连接数据库获取用户信息、实现简单数据库交互业务、网站登录等功能,以及使用一些比较方便的框架,还有通过 Maven 管理项目依赖等,这些技能是 JavaEE 开发的基础。
提高阶段
现在主流的 Java 后端开发,借助的是极为成熟的 Spring 系列框架,这是一组基于Java的开源框架,用于构建企业级应用程序(JavaEE)。
因此,我们这一部分主要是围绕 Spring 系列框架学习并进行开发:
- Spring 系列框架:Spring、SpringMVC、SpringSecurity、SpringBoot、SpringDataJPA
- 中间件:Redis 数据库。
- 操作系统:Linux
- 版本控制:Git
通过这一阶段的学习,你就能基本掌握前后端分离架构的 web 项目开发,独立完成项目管理,以及合理使用中间件来实现各种功能。
在你完成这一阶段的学习后,一些计算机设计类竞赛如中国大学生计算机设计大赛、软件杯等都可以尝试去参加。
进阶阶段
来不及为学习完提高阶段而感到自豪,因为马上到来的是进阶阶段——微服务技术相关课程的学习。
微服务架构的引入,可以使得你的项目整体解耦,实现真正的模块化,使应用程序更易于扩展,在高并发领域也有重要应用。
- SpringCloud组件:Eureka、Loadbalaner、Hystrix、Gateway、Config、Stream、Bus
- SpringCloud Alibaba 组件:Nacos、Sentinel、Seata
- 其他中间件:ShardingJDB、消息队列
- 数据库:MySQL集群方案、Redis集群方案
- 登录校验:OAuth2.0、单点登录、JWT 校验
经过这一阶段的学习,我们的技术栈将会再次上升一个层次。到了这一个阶段,你基本可以独立去开发一些企业级别的商业项目。
Q&A
JavaWeb 已经过时了,还用学习吗?
随着近年来出现了越来越多的后端开发框架和技术选择,JSP 开发在现在市场开发所占的比重在逐年缩小,但是仍要学习。
相对于目前比较流行的前后端分离开发的模式,JSP 的高耦合性、维护难度大等缺点显然缺乏足够的竞争力,即便如此,仍有较多企业在使用和维护老旧的 JSP 项目,甚至也是大部分学校教学的重点。
我们目前学习 JavaWeb,主要是为了学习和了解计算机网络和后端基础以及 MySQL、Mybatis、Maven 等,这些在之后的学习中仍是十分重要的。
可以跳过 SSM 直接学 SpringBoot 吗?
SSM(Spring + Spring MVC + MyBatis)部分是后续学习 SpringBoot 等高级框架的基础,如果你直接跳过基础去学,大概率学完只会 Curd,而不懂其中的原理。
如果你真的十分着急(距离毕业不到一年想找工作),你可以跳过这一阶段,但是 Spring 的核心思想的学习仍是必不可少的。
能够支撑你走的更远的,一定是扎实的基础。SpringBoot 只是基于 SSM 的脚手架而已,核心原理仍是 SSM。换言之,当你丢掉 SpringBoot 之后就没有办法进行开发的话,你就什么也不是了。