技术日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。
网上的资料多如牛毛,但是很多时候我们缺的不是一个资料,而是一个学习规划!
就是说,做 Java 开发,我们应该从哪里开始学?应该学习哪些东西?应该按照什么样的顺序来学?
松哥大二刚开始自学 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,自己一个人摸索了很长时间,后来才逐步建立起自己的知识体系。
所以每次有小伙伴问我 Java 的学习规划时,我都能理解大家所处的困境。
Java 开发涉及到的领域非常多,对于开发者而言要掌握的东西也非常多,初入行的小伙伴甚至觉得这些要掌握的东西非常杂乱,其实不然!所有要学习的东西都是有内在关联的。
松哥今天就来和大家捋一捋 Java 学习路线图,一起来看看都有哪些东西需要掌握,以及要按照什么样的顺序来学习。
1. 整体规划
Java 企业级开发涉及到的技能点实际上非常多,我将其大致归为以下五类(文末可以获取思维导图):
在这个技术栈的基础上,你可以继续选择走全栈道路或者走大数据方向。
有的小伙伴可能会纠结于要全面还是要精通某一方面,其实这个无所谓好坏,关键是要看你自己。你是想去大厂做一个某一领域的技术专家,还是想自己独当一面,自己喜欢的才是最好的。
话说回来,即使你想钻研某一方面,也不是说这些东西就不用学了,即使精通某一方面,也必然是先广泛涉猎,再慢慢确定自己的方向。
松哥大学自学 Java 的时候就是这样,当我不知道哪些东西重要哪些东西不重要的时候,我就都学,反正大学生有大把时间,我甚至连 Dreamweaver,Fireworks,Flash 三剑客都学了,甚至利用 Dreamweaver 上简陋的功能做了一个动态网站。
这些东西你说学了没用吗?其实不见得。当我学了很多之后,在未来某一天,突然就顿悟了,把这些学过的东西串起来了,有一种醍醐灌顶的感觉。
接下来,这里五大块松哥拆分开来分别给大家介绍。
2. JavaSE
先来看我画的思维导图(文末可以获取思维导图):
JavaSE 这块其实没啥值得说的,基础的东西很多年都没有变化。而且 JavaSE 这块网上也有很多免费教程,大家在公众号【江南一点雨】后台回复 2TB,也有相关的免费视频教程。
很多公司,用的 Java8/9/10,实际上还是写的 JDK1.5 的代码,但是这并不意味着我们就不用学习了。Java8/9/10/11 中的一些新特性还是有必要去学习下,特别是现在 WebFlux 逐渐被人们重视,一些从 Java8 就开始萌芽的理念与技术还是很有必要掌握一下的。
3. 数据库
先来看我画的思维导图(文末可以获取思维导图):
作为一名 Java 工程师,数据库的重要性不言而喻,这算是基本功,我们不能老指望着 DBA,毕竟配有 DBA 的公司只是极少数。有句话叫做“SQL 写得好,下班下得早”。
当然数据库也有很多优化方面的问题,但是在大家刚刚开始学习的时候,我其实是不建议去学习数据库优化、主从、集群、读写分离这些东西的,这些可以等到后面学习微服务的时候再去学习比较合适,在刚学习 Java 没多久的情况下,就去学习数据库优化,极有可能让你对开发这条路打退堂鼓。
数据库这块大家在公众号【江南一点雨】后台回复 2TB,也有相关的免费视频教程
4. Web 基础
先来看我画的思维导图(文末可以获取思维导图):
学习是给自己学的,不能偷懒,所以你看我这里列出来的知识点比较多,甚至又一些看起来好像过时的技术。
有人会纠结 EasyUI 要不要学,这个有点古老。我的意见是,如果你是在校大学生,那就学,反正有时间;如果你已经工作了,现在查漏补缺,那可以结合公司的技术栈决定要不要学。
其实 EasyUI 也不能算是边缘化的东西,如果你前端不用 Vue、React 或者 Angular,EasyUI 绝对是一个无法忽视的存在,学习一下 EasyUI ,也能让我们理解整个前端的一个发展过程。
一般来说,Web 基础学完其实是可以自己做一些简单的项目的巩固一下知识点,这块网上也有很多开源项目,松哥这里也给大家推荐一个 CoolMeeting:
至于这里列出来的其他技术点,都是常规技术,大家在公众号【江南一点雨】后台回复 2TB,也有对应的免费视频教程。
5. 经典框架
先来看我画的思维导图(文末可以获取思维导图):
这里涉及到的东西就比较多了,也是学起来最最漫长的一部分。
这里我主要说说关注的几个问题。
- SSH 还要学吗
我们说的 SSH 一般是指 Spring、Struts2 以及 Hibernate。这三个里边,可以确认不用学习的 Struts2,如果你大学刚毕业,进入到一家公司,用 Struts2 做开发,你进去干了三年,Struts2 用的滚瓜烂熟,出来跳槽却发现没有任何优势,所以我不建议大家在 Struts2 上花时间。
至于 Hibernate ,这个我持保留态度。为什么这么说呢?
因为 Hibernate 和 Jpa 之间有着千丝万缕的联系,Spring Data Jpa 结合 Spring Boot,还是有很多公司在用,而如果你掌握了 Hibernate,在后面使用 Jpa 的时候上手很快,关于 Hibernate 和 Jpa 之间的关系,松哥之前专门写过文章介绍:干货|一文读懂 Spring Data Jpa!
- 消息中间件学哪个?
就我目前了解到的情况,JavaEE 项目中,RabbitMQ 和 RocketMQ 使用较多,大数据中 Kafka 用的较多,传统的满足 JMS 规范的 ActiveMQ 使用较少。因此小伙伴们可以结合这样一个实际情况选择合适的消息中间件学习顺序。
这个阶段的知识点都搞定了,做个毕设肯定是绰绰有余了,出了学校校门找个实习肯定也够用了。大家在公众号【江南一点雨】后台回复 2TB,也有对应的免费视频教程。
6. 分布式/微服务相关
先来看我画的思维导图(文末可以获取思维导图):
这一块,Spring Boot 和 Spring Cloud 是重点,这两个又分别涉及到诸多知识点:
SpringBoot:
SpringCloud:
学习 Spring Boot 的基础依然是 SSM,不建议跳过 SSM 直接学 Spring Boot,这个松哥之前也专门写文章讲过:Spring Boot 要怎么学?要学哪些东西?要不要先学 SSM?。
Spring Boot 学完之后,也可以做个项目巩固一下,推荐两个开源项目:
当你搞定了 SSM、搞定了 Redis、搞定了中间件,你再去学习 Spring Boot 就会发现他是如此简单!
至于 Spring Cloud,虽然 Netflix 公司的几个组件已经不打算继续开源了,但是对于大家而言,我觉得还是有必要去学习一下的,毕竟也不难,花不了多少时间,而且学习这些组件可以帮助大家快速建立一个 Spring Cloud 知识体系。
出了这两大块之外,剩下的就不用我多说了。MySQL 的进阶我是建议放在这个阶段学习的,像数据优化、主从搭建、读写分离等,我建议放在这个阶段。
大家在公众号【江南一点雨】后台回复 2TB,也有对应的免费视频教程。
7. 小结
上面的都学完之后,你已经可以站在一个比较高的角度来看待 JavaEE 开发了。
这个时候,可以考虑自己是想走 “专” 的道路,当一个技术专家呢,还是想走全栈的道路,以后自己搞个工作室之类的,抑或是想往大数据的方向发展都是可以的。无论小伙伴想走哪个方向,都可以在公众号【江南一点雨】后台回复 2TB,有对应的免费视频教程。
好了,一点点经验和小伙伴们分享,文中涉及到的思维导图大家可以在公众号后台回复 规划 获取下载链接。
好啦,小伙伴们五一快乐哦~