2021 入门级的 Java 程序员学习路线图

Hello,大家好,我是阿粉,最近看文章发现一个 Java 学习路线图的资料,觉得很不错就拿过来分享给大家,目前这个版本是 1.0 的,之所以说这个是 1.0 的版本主要是因为还有一些高级内容没有加进去,比如 JVM,容器,消息队列,云原生等都还没有提到,不过对于初学者来说这个路线图已经可以上手完成工作了。

作为 Java 程序员的阿粉不得不说,现在的小伙伴们是真的很幸福,互联网如此的发达,网上各种学习资料以及开源项目可以免费学习。虽然说这些资料方便了小伙伴们的学习,但是同样也会带来一个问题,那就是对于琳琅满目的资料显得无从下手,没有体系,不知道工作中到底会用到哪些,抓不到重点。这个时候 Java 学习路线图就可以起到一个辅助的作用了。

![]http://www.justdojava.com/assets/images/2019/java/image_ziyou/2021/0708/1.png)

Git

Git 作为目前最流行的版本控制软件没有之一,作为每个开发人员,不单单是 Java 程序员而是每个程序员都需要学习使用的。我们进入一家公司,刚开始的时候除了阅读文档之外能做的第一件事情就是把自己所在的小组的代码克隆下来。所以 git clone 相信是大家使用的第一个命令。另外虽然说都是在 IDE 里面使用git 的命令操作,但是还是强烈建议大家把 git 的常用命令给记下来,通过 git bash 或者其他命令窗口手动执行,可以加深大家这 git 的使用理解。如果说对于还没有步入职场的小伙伴没有实际的项目练手的话,可以考虑通过 GitHub 来练手。毕竟 GitHub 作为全球最大的同性网站,在互联网行业有着举足轻重的地位。

Linux

Linux 同样的作为后端程序员也是要学习的一个知识点,不过针对 Linux 我们刚开始可以先学习一些简单的基础,随着使用频率的增加再慢慢深入,毕竟很多时候我们在服务器上面查看日志,查找文件,以及编写一些简单的 shell 来处理一些任务。学习 Linux 我们需要循序渐进,毕竟一个操作系统要想完全搞透对于我们普通人来说那是不太可能的。

数据结构与算法

数据结构与算法这个更不用说了,是一个老生常谈的话题,虽然说在科班出身的在大学会学习相关内容,但是相信很多人都没有好好学习过,社会会告诉你该来的还是会来,有些东西是躲不掉的,除非不干这一行。学习数据结构和算法的唯一途径就是不断练习,而且一个题目要练习很多遍,尝试不同的方案去解决,只有这样才能熟练的掌握。刷题可以在 LeetCode 或者牛客网都是可以的,海量的题目足够练手。

通用编程技能

通用编程技能主要包含一些网络知识比如 HTTPHTTPSTCPUDP,设计模式,可能很多时候大家会觉得真正在工作中这些东西用到的会很少,有必要学习吗?有必要!有必要!有必要!重要的事情说三遍,要知道我们的日常工作除了写业务代码之外,很多时候还会涉及到组件,框架的封装或者代码的阅读,这个时候如果不具备这部分的知识,那看起来会很吃力的。所以建议大家一定要把基础知识给打牢,这样才能再需要的时候得心应手。

Java

讲到这里终于到了核心模块,在 1.0 的路线图中 Java 的学习主要包含工具,JDK,框架,单元测试,数据库相关知识。这块的东西就相对较多了,而且很多内容都需要结合项目来实际操作才能更好的掌握,单独看资料代码是不怎么能掌握的。

工具

工具这块主要要学习 IDEAMavenGradle 还有 Docker 容器部署相关的内容。图中的有些东西可以不用学,比如 EclipseANT,这些现在很多公司都不用了,就没必要在浪费时间了,毕竟要学习的东西还有很多。JDK 这块的内容就更多了,1.0 的路线图中提到了集合,并发,IO,和 JDK8 的一些特性,这些内容需要好好的学习,因为在工作中占据了很大的一部分场景。并且如果在找工作面试的过程中也是必问的一些内容。特别是集合和并发这块的内容,阿粉经历的面试基本上都有被问到过相关的内容。IO 这块的内容是很多网络工具的底层核心,特别是一些 RPC 服务,底层的 Netty 都会使用到 IO 相关的内容。

框架

框架这边就更不用多说,现在 Java 主流的编程框架非 SpringSpringBoot 莫属,这块的内容确实很难啃,需要找一些资料或者视频去学习,如果条件和时间允许的话也可以去报一些线上或者线下课程,这个根据自己的情况去决定就好。GitHub 上面也有很多基于 SpringSpringBoot 的开源项目,特别是一些大公司开源的优秀项目,比如阿里的 DubboSpringCloud Alibaba,都可以下载下来阅读一下。阿粉上家公司使用的微服务框架就是 SpringCloud Alibaba,他的注册中心 Nacos 是基于服务发现与配置中心一体的注册中心,还是挺好用的。

单元测试

单元测试这个也是一个很有必要学习的内容,优秀的代码单元测试的用例要覆盖 80% 以上才算合格,但是实际工作中往往很少会有人写单元测试。这个不是个好习惯,该写的单元测试还是要写的,这样再后续代码有所改动的时候我们可以直接测试一下,避免新的改动导致了新的 bug。关于测试框架 Mockito 公众号前几天有发过一篇介绍的文章,感兴趣的可以看看 Mockito

数据库

线路图中的数据库主要想表达的是 JDBC 以及一些 ORM 的内容,其实关于数据库的知识是很复杂的,作为 Java 程序员只关注这么一点是不够的,特别是对于 MySQL 数据库,我们必须熟练的掌握,包括事务,锁,索引等内容,相应的内容大家可以看看公众前面的文章,有很多关于 MySQL 的内容。

上面的内容比较多,但是阿粉觉得还少了一个重要的内容,那就是前端知识,不会写页面的的 Java 开发不是一个好开发,简单的页面和 JS 我们还是要会写的,不说多么精通,至少能看懂代码并且能实现功能。

总结

今天给大家分享了一个 Java 学习路径图,可以帮助初学者更好的入门,对于我们程序员来说,真的有很多东西需要学习,新的技术层出不穷,唯一不变的就是变化。最后借用乔帮主的一句话:Stay foolish,Stay hungry!

Java Geek Tech wechat
欢迎订阅 Java 极客技术,这里分享关于 Java 的一切。