Java 开发,我们应该从哪里开始学?应该学习哪些东西?应该按照什么样的顺序来学?
Java 开发涉及到的领域非常多,对于开发者而言要掌握的东西也非常多,初入行的小伙伴甚至觉得这些要掌握的东西非常杂乱,其实不然!所有要学习的东西都是有内在关联的。
大仙今天就来和大家捋一捋 Java 学习路线图,一起来看看都有哪些东西需要掌握,以及要按照什么样的顺序来学习。
开发工具
Intellij IDEA:Java 开发最好的 IDE
Iterm2:macOS 最好用的终端!
Chrome:人生苦短,请用 Chrome
整体学习规划
1.JavaSE 2.数据库 3.web基础 4.经典框架 5.分布式/微服务相关
JavaSE
1.Java基础语法 2.数组 3.面向对象 4.常见API 5.异常处理 6.集合与泛型 7.IO/NIO 8.多线程 9.反射/内省 10.Java网络编程 11.Java8/9/10/11各种新特性
JavaSE 这块其实没啥值得说的,基础的东西很多年都没有变化。
很多公司,用的 Java8/9/10,实际上还是写的 JDK1.5 的代码,但是这并不意味着我们就不用学习了。Java8/9/10/11 中的一些新特性还是有必要去学习下,特别是现在 WebFlux 逐渐被人们重视,一些从 Java8 就开始萌芽的理念与技术还是很有必要掌握一下的。
数据库
1.MySQL基础 2.SQL语言/各种查询函数/复杂查询 3.存储过程/触发器/事件 4.数据库备份与恢复 5.数据库用户管理与安全性 6.数据库事务 7.JDBC数据库连接池
作为一名 Java 工程师,数据库的重要性不言而喻,这算是基本功,我们不能老指望着 DBA,毕竟配有 DBA 的公司只是极少数。有句话叫做“SQL 写得好,下班下得早”。
WEB基础
1.HTML5与CSS3 2.JavaScript/jQuery 3.ECharts/EasyUl/Bootrap 4.Ajax/JSON/XML 5.Tomcat 6.Servlet/JSP 7.JSTL/EL 8.Cookie和Session 9.Filter和Listener 10.国际化 11.文件上传下载 12.WebSocket
有人会纠结 EasyUI 要不要学,这个有点古老。我的意见是,如果你是在校大学生,那就学,反正有时间;如果你已经工作了,现在查漏补缺,那可以结合公司的技术栈决定要不要学。
其实 EasyUI 也不能算是边缘化的东西,如果你前端不用 Vue、React 或者 Angular,EasyUI 绝对是一个无法忽视的存在,学习一下 EasyUI ,也能让我们理解整个前端的一个发展过程。
经典框架
1.Maven/Gradle 2.Sping
- Spring5
- SpringMVC
- Spring Data Jpa
- SpringBotch
- Spring Session
3.MyBatis/MyBatis Plus 4.Freemarker/Thymeleaf 5.Linux 6.Git/Svn 7.Apache Shiro 8.Activiti 9.Quartz 10.Nginx 11.Redis 12ActiveMQ/RabbitNQ/Kafka 13EasyExcel/POI
这里涉及到的东西就比较多了,也是学起来最最漫长的一部分。
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 使用较少。因此小伙伴们可以结合这样一个实际情况选择合适的消息中间件学习顺序。
分布式微服务相关
1.SpringBoot 2.SpringCloud 3.zookeeper 4.Dubbo 5.单点登录 6.FastDFS 7.Docker 8.Elasticsearch 9.MySQL高级 10.MyCat 11.JUC 12.Netty
这一块,Spring Boot 和 Spring Cloud 是重点,这两个又分别涉及到诸多知识点:
Spring Boot:
1.基本原理 2.基本配置 3.整合视图层技术 4.整合 web开发 5.整合持久层技术 6.整合NoSQL 7.构建RESTful 8.整合各种缓存 9.整合Spring Security 10.整合webSocket 11.整合中间件 12.整合Swagger/邮件服务等 13.应用监控 14.打包部署
Spring Cloud:
1.Eureka/Consul 2.服务注册与消费 3.OpenFeign 4.Hystrix 5.Resillience4j 6.Zuul/Gateway 7.Spring Cloud Config 8.Spring Cloud Bus 9.Spring Cloud Stream 10.Spring Cloud Sleuth/Zipkin 11.Spring Cloud Admin 12.Spring Cloud Security 13.Spring Cloud OAuth2 14.Spring Allibaba :
- Nacos
- Sentinel
- 学习 Spring Boot 的基础依然是 SSM,不建议跳过 SSM 直接学 Spring Boot*
学习资源
当你搞定了 SSM、搞定了 Redis、搞定了中间件,你再去学习 Spring Boot 就会发现他是如此简单!
至于 Spring Cloud,虽然 Netflix 公司的几个组件已经不打算继续开源了,但是对于大家而言,我觉得还是有必要去学习一下的,毕竟也不难,花不了多少时间,而且学习这些组件可以帮助大家快速建立一个 Spring Cloud 知识体系。
出了这两大块之外,剩下的就不用我多说了。MySQL 的进阶我是建议放在这个阶段学习的,像数据优化、主从搭建、读写分离等,我建议放在这个阶段。
上面的都学完之后,你已经可以站在一个比较高的角度来看待 JavaEE 开发了。