Java学习路线一条龙

说在前面

讲真,虽然我是正规计算机专业出身,但十多年来,Java这语言和它那一大堆配套的工具、框架,变化得太快了。
我也是一边学新的,一边扔旧的,忙得不可开交。

现在回想起来,走过的弯路、浪费的时间,真是让人心疼啊!

我知道,关注我的人里面有很多是刚开始学Java的。刚开始学的时候,压力肯定特别大,毕竟试错成本不能太高嘛。

所以,找个高效的学习路线和靠谱的学习方法就特别重要了,不然一不小心就可能前功尽弃。

好在Java的学习资料特别多,只要稍微用点心去整理,就能找到一条适合自己的学习路径。这两年里,我也没闲着,整理思路、分享Java方面的文章,但感觉都太零散了。

这次想借这个机会,给大家重新梳理一遍,希望能帮到你们。

万丈高楼平地起,基础最重要

哦对了,学Java之前,其实可以先学一下C语言。

特别是对于刚上大学、科班出身的同学来说,我建议你们先接触一下C语言。虽然我那会儿的教材是《Java编程思想》,但说实话,那本书对初学者来说真的不太友好。

在这里插入图片描述

所以嘛,从C语言开始,可能会更顺畅一些哦!

说到编程语言,其实它们都是相通的,就像各种方言一样,虽然听起来不一样,但骨子里都是表达同一个意思。

C语言呢,就像是Java的老祖宗,科班出身的同学去学学C语言,打打基础,绝对有好处。

对于我们程序员来说,真正学的不是编程语言,而是计算机科学。

语言只是工具,没有哪个比哪个更好或更差。

就像我,学过Java、C语言、Ruby、JavaScript等等,它们之间真的有很多相似的地方。

比如你学过JavaScript,那Java的Lambda表达式对你来说就小菜一碟了。

C语言特殊的地方在于,它可能是最适合用来学习计算机基础的。

比如Linux操作系统,就是用C语言重新写的;

再比如计算机网络,里面那些网络协议、header定义,用C语言的union和struct来操作简直方便得不要不要的。

Java里虽然没有指针那么让人头疼的东西,但说实话,它的引用其实和指针差不多。

你懂了C语言的指针,Java的引用也就迎刃而解了。

当然啦,C语言抽象程度比较高,学起来可能要费点劲。如果你是科班出身,刚开始学编程,那我推荐你去看看翁恺教授的C语言程序设计课程,绝对让你受益匪浅!

C语言设计入门

bibi传送门:浙江大学翁恺教你C语言程序设计!C语言基础入门

喜欢看书的同学我只推荐一本,《阮一峰老师的 C语言入门教程》,我第一时间就拜读了一遍,受益匪浅!可以说目前我见到的最好的 C语言入门教程了,没有之一!

在这里插入图片描述

在线学习地址:阮一峰老师的C语言入门教程
小北的编程资料站也搜集了一份C++系列教程:C++专栏教程

学习的过程中啊,有一点得牢牢记住,那就是得多练、多练、再多练!这不仅仅适用于学C语言,也适用于学Java。有句话说得好:“看懂了,再加上写上万行代码,那才算是真学会了。”

不管你是通过看视频学习,还是啃书本,最怕的就是那种眼高手低的情况。以为自己看一遍就懂了,实际上呢?离真正学会还差得远呢,得写上万行代码才能算入门!

对于那些不是科班出身的同学来说,如果时间比较紧,想要快速上手的话,直接学Java也是可以的。只要选对了学习资料,一步一个脚印地学,也是完全没问题的!

学习Java之前要安装的软件

咱们要干好一件事儿,那手头的工具得趁手对吧?就像上战场得有好武器一样。

俗话说的好:工欲善其事必先利其器,所以战斗之前我们要先配备好武器。

1、JDK

JDK,就是Java开发工具包啦,Java的整套家伙什儿都在这里面:有Java的运行环境JRE,还有各种小工具比如javac、java、javap等等,连Java的基础类库都包括了,学Java之前这个得装上,必须的。

他们之间的关系可以用下面这张图来体现:

在这里插入图片描述

2、IDEA

哎呀,现在都2024年了,咱们真的别再用什么记事本敲代码了。

说到写Java程序,Intellij IDEA绝对是首选的IDE,初学者用社区版就足够了,真的,别再折磨自己了,哈哈。

偷偷告诉你,如果你想用专业版,也不是没有办法,可以参考这篇文章白嫖一波

传送门:[JetBrains IDEA 2023,2022,2021 破解](https://aijiangsir.com/?p=3783)

在这里插入图片描述

初次使用的话,建议阅读一下《IntelliJ IDEA 简体中文专题教程》,GitHub 上已开源。

judasn/IntelliJ-IDEA-Tutorial: IntelliJ IDEA 简体中文专题教程 (github.com)

如果你英文良好,建议直接阅读官网帮助文档

官网帮助中心:http://www.jetbrains.com/idea/webhelp/getting-help.html

3、Maven

Maven 这个东西啊,真的是个超好用的项目管理和自动化构建工具!

它基于项目对象模型(POM)的概念,能帮你轻松管理项目的构建、报告和文档。

Maven 是 Apache 组织里的一个超成功的开源项目,主要是用来服务基于 Java 的项目构建、依赖管理和项目信息管理。

用了 Maven 之后啊,那些烦人的第三方类库管理起来就轻松多了。

安装和配置 Maven 其实很简单的,你直接看下面这份Maven系列文章《10分钟,掌握项目构建神器Maven)》就好了,里面讲得清清楚楚,包你一看就会。

另外啊,我强烈推荐大家用 GitHub 或者码云来作为私有的代码仓库,真的是特别方便!不仅免费,还能云同步,随时随地都能访问你的代码。

如果你还不太熟悉 Git 命令的话,别担心,下载个 GitHub 桌面版,就能用傻瓜式的方式来操作了。

如果你想要找个教程系列学习下git,也可以参考这个教程,进行系统化的提升

Git 教程

等你把这一套软件都安装好了之后啊,基本上开发 Java 的必备工具就都齐活了。

接下来呢,你就可以放心大胆地进入 Java 的世界去闯荡了!加油哦!

Java学习的重点是什么

老话儿说得好,“冰冻三尺非一日之寒”,想把 Java 这门手艺学好,那可不是一朝一夕的事儿。

Java 这语言啊,知识点跟天上的星星似的,数都数不完,咱们时间又紧,怎么办呢?

那就得挑重点、挑实用的来学,不能眉毛胡子一把抓,那些不常用的知识点,咱们就先放一放,直接 pass 掉吧🚫。

来来来,看这里,小北为大家整理的导航地图来啦!这个大地图啊,分了好几大块儿,有 Java 核心、Java 企业级开发、数据库、计算机基础、求职面试、学习资源等等,基本上你想要的 Java 学习资源,这里都能找着,找不着的,后面小北我也会给你补上,放心吧😉!

下面给大家放一份对标阿里P5级别的Java工程师需要掌握的学习路线图:

在这里插入图片描述

大家发现没有,一个P5级别需要掌握的知识就已经是非常多,那更不要说P6、P7级别的了

上面的图其实下面还有很长,由于太长了,影响文章美观,我就截图了上半部分。

如果有兴趣需要完整的版的同学,可以长按识别/扫描下方二维码,关注后回复 「阿里P5」 下载这份 PDF 吧:

在这里插入图片描述

                                                扫码关注后回复「阿里P5」关键字

这些知识这么多,该怎么学呢?当然是直接上小北的编程资料站了,内容非常的全面和硬核,截图给大家鉴赏一下。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

资料非常齐全,几乎Java相关的,不相关的这里都有整理,而且还在持续更新

记住我们的网址:

程序员-江小北的编程资料站【持续更新】

这其中的难点是并发编程和 JVM,显然这两部分的内容学起来并不容易,但却最能考验一名 Java 后端工程师的功底了。

在这里插入图片描述

在这里插入图片描述

自学的小伙伴们,听我一句劝,教程上的代码一定要自己动手敲一遍,特别是在初学的时候。咱们自学可不像工作后有那么多项目可以练手,能马上看到效果。

所以,记笔记就显得特别重要了。还有啊,自己写的小 demo 一定要分门别类保存好,以后找起来方便。特别是那些已经调通的小程序,千万别随手就删了,说不定哪天它们就能帮你大忙呢🐱‍🏍。

根据我的经验啊,学习的过程中,有些知识点当时觉得懂了,但时间一长或者换个环境,可能就傻眼了。明明感觉代码没错,可就是跑不起来。这时候,如果手头有之前写过的类似 demo,打开参考一下,或者直接复制粘贴试试,问题可能就迎刃而解了😊。

大部分 Java 程序员都要做 JavaWeb 的开发工作,那就离不开 Spring 的系列框架。

不管它怎么变,Spring 的核心概念还是 IOC 和 AOP,也就是控制反转和面向切面编程。

把这两个搞懂了,Spring 框架就学通了一大半。

说到 Spring Boot 的实战内容啊,小北也在我的资料站里为大家准备了一系列的SpringBoot、SpringCloud、SpringCloudAlibaba等实战内容。这里给大家展示一下,都是现在非常主流的技术哦。大家有需要的可以自行前往学习。

在这里插入图片描述

记住我们我们的网站

程序员-江小北的编程资料站【持续更新】

记得收藏哦,不然下次可能找不到我了

说在最后

如果你已经掌握了 Spring、SpringMVC、MyBatis、Spring Boot 这些大招,那你就可以开始搞一些真正有用的应用项目了,比如学生管理系统、商城系统、博客系统、秒杀系统等等,这些都是能让你大展身手的舞台😍。

当然啦,要做完整的 Java Web 项目,前端的知识肯定也要懂一点,不过不用太过纠结,界面丑点没关系,重点还是要放在 Java 后端上面。毕竟,后端才是项目的核心和灵魂嘛😉。

学习编程啊,就是一个从混沌到有序的过程。如果碰到了理解不了的知识,别怀疑自己适不适合编程,直接跳过就行了。这是再正常不过的事情了,毕竟谁都有碰到难题的时候嘛。重要的是要有一颗越挫越勇的心,勇往直前,不要害怕失败💪!

哪些Java知识不需要再学了

张无忌学太极拳的时候,他太师父张三丰就一直叮嘱他:“把你之前学的那些武功都忘掉,忘得越干净,你学新招就越快!”😄其实啊,咱们自学Java也是这个理儿。你得先弄清楚,哪些Java知识现在已经不流行了,没必要再死磕了。毕竟啊,现在技术更新换代的速度,简直比火箭还快呢!🚀

有些Java的知识点,说实话,早就过时了。你要是还抱着那些老古董不放,不懂得断舍离,那你学起来可就太费劲了,简直就是在折磨自己嘛!所以啊,咱们得聪明点儿,别跟自己的脑袋过不去,该扔的就得扔,这样你才能轻装上阵,学得更快更轻松!😉

1、AWT和Swing

现在都2024年了,谁还用那老掉牙的AWT和Swing搞桌面应用啊?😅 现在可是移动互联网的天下,大家都用手机APP、小程序和Web网页来做前端了。所以啊,咱们学习也得跟上时代,重点得放在Spring Boot、Spring Cloud、Netty、Dubbo、Zookeeper和Mysql这些后端技术上。🚀 这些才是现在最热门、最实用的技术,学好了这些,找工作、涨工资都不是问题!😉

2、Applet

作为网页插件技术,Applet 压根就没流行起来。

3、XML

XML 还没有被淘汰,应用的地方还有不少,比如说 Maven 的 pom.xml 文件里就还在用。但是作为一种数据传输格式,它正在被 JSON 替代。

至于复杂的 XML 操作 API(例如 XPath)就完全没必要学习了,如果真的用到了,再去补也不迟。

4、JDBC

我个人不建议再学习偏底层的 JDBC 了,尤其是对于时间宝贵的自学程序员来说。

与其花这点时间,不如把精力投入到 MyBatis 的学习上。

当然了,如果真的有时间,真的想打基础,研究一下也无可厚非。

5、Struts

Struts 是早年一个优秀的 MVC 框架,单从技术的角度来看,还是蛮不错的。

但是自从有了 SpringMVC 后,Struts 就被拍死在沙滩上了。

6、Hibernate

Hibernate 太重量级了,学习成本太高,取而代之的是轻量级的 MyBatis。

现在有一种说法就是这种对象关系映射太过死板了,不如直接写 SQL 来得灵活,像我很喜欢的一个轻量级框架 JFinal 就更偏重于在 Java 代码中写 SQL,而不像 MyBatis 和 Hibernate 在 xml 文件中写。

7、JSP

JSP 在实际开发中,主要是作为 MVC 模型中的V(View)层出现的。它本来是为 Java 后端程序员开发前端界面而生的,但随着技术的发展,前后端分离的流行,JSP 的生命周期已经到头了。

8、Servlet

虽然 SpringMVC 的底层是以 Servlet 为基础的,是 JavaWeb 容器的基石,但 Servlet 的确已经过时了。

如果后面有空余时间的话,想钻的话可以钻一下,对服务器端接收请求数据和向前端发送响应数据时会有一些帮助。

我这样的说法可能不够可观,不够顾及底层知识,但自学的时间成本还是要适当控制一下。总之,我们应该省下更多的时间去学习前面小节提到的重点知识

学习Java还需要补充哪些知识

1、数据结构与算法

数据结构啊,对程序员来说就是吃饭的家伙嘛🍚。

你听过那句话没?程序就是数据结构加上算法,这话啥时候说都没错的!

但是啊,大部分的数据结构课程呢,都是教你怎么从数学上搞一个数据结构出来。

可实际上呢,像我们常用的编程语言,比如Java啊,都已经内置了常见的数据结构了。

所以啊,对于咱们这些普通的程序员来说,真的很少有需要从头开始搞一个数据结构的。

那么,咱们要怎么做呢?其实很简单,就这么几点:

1️⃣ 熟悉一下常见的数据结构概念,比如数组啊、堆栈啊、链表啊、哈希表这些。

2️⃣ 知道一下常用数据结构之间的区别,比如ArrayList和LinkedList它们有啥不一样。

3️⃣ 了解一下常用数据结构的外围算法,比如怎么在List和Map里查找东西。

4️⃣ 注意一下使用数据结构时容易出错的地方,比如线程安全不安全这些问题。

哦对了,如果你想学数据结构的话,B站上有个浙江大学的数据结构课挺不错的,讲得很系统很经典,可以去瞅瞅👀。

在这里插入图片描述

视频传送门:浙江大学数据结构 陈越

以我接触的领域来说,大部分普通的业务系统都不会涉及到太复杂的算法,因此我没有在算法上投入过多时间。

但如果你将来要从事一些特殊的领域,如果算法跟不上,可以说是“寸步难行”,比如说图形处理领域,无论是图像的变化还是增强,无一例外都要用到矩阵变换,因此就必然涉及到线性代数的内容,再往深处学的话,必然会牵扯出更多的知识。

所以学习算法要视情况而定,如果想走算法岗,那么《算法第4版》、《算法导论》、《数学之美》、《编程珠玑》、《剑指offer》这些书都要耐着性子啃一啃

当然小北的编程资料站也整理了一系列的数据结构与算法实战,包含Java、C#、Python、JavaScript、Golang等多种语言的实战教程,大家也可以一起看下交叉学习下

在这里插入图片描述

程序员-江小北的编程资料站【持续更新】

记得收藏哦,不然下次可能找不到我了

2、设计模式

我觉得吧,设计模式就是初中级程序员要迈向高级程序员的必经之路。

在我们开发过程中,大致把程序员分为两类人:

  1. 对于设计模式一头雾水,代码写的随心所欲、忘乎所以、我行我素、为所欲为。。。

  2. 将设计模式玩的炉火纯青、了如指掌,代码写的很优雅,维护性、可扩展性都很强,同事也会大大提高代码的可读性!

说白了,写代码就跟我们在日常生活中处理一些大大小小的事情一样,当我们配合上一套成熟的思考框架和行动模式来走的时候,会发现很多事情处理起来变得轻松很多。

说到这里,设计模式的重要性不言而喻了,

如何学习呢? 给大家推荐一个网站 :

常用设计模式有哪些? (refactoringguru.cn)

这是国外的一个网站,建立的初衷,是帮助开发者以更为简单便捷的方式,迅速掌握各个设计模式的学习。

目前网站已经支持中文了:

在这里插入图片描述

当然了,设计模式我们的编程资料站也整理了很多相关的实战资料,包含各种语言的,有需要的同学也可自行前往学习

在这里插入图片描述

程序员-江小北的编程资料站【持续更新】

3、JDK源码

面试的时候啊,面试官们总是特别喜欢深挖源码方面的知识,就像那些关于HashMap的经典问题一样:

“加载因子为啥是0.75啊?”
“为啥链表变成红黑树的门槛是8呢?”
“HashMap的底层到底是个啥样的数据结构啊?”
“要是hash冲突了,咱们有啥招儿解决啊?”
“HashMap数组的长度怎么老是2的幂次方啊?”
“HashMap是怎么扩容的啊?”

这些问题啊,你说不看源码,光凭猜哪能猜得准呢?🤷‍♂️

我有个同学,他特牛,说过一句话让我现在都记忆犹新:“有啥解决不了的?只要你肯啃源码,啥都能搞定!”😮,由此可见阅读源码的重要性。

程序员-羊哥出过一个视频,详细地介绍了如何阅读 JDK 源码,推荐给大家。
在这里插入图片描述

视频地址-https://www.bilibili.com/video/BV1V7411U78L

小北的编程资料站也收集了一个JDK源码系列的教程:JDK源码-程序员江小北

4、操作系统、计算机组成原理和计算机网络

这三门课的重要性就不用我多说了,如果有时间有精力,推荐按照下面的路线去学习。

推荐哈工大的《操作系统》实验课,包括

  • 操作系统基础篇

  • 操作系统之进程与线程

  • 操作系统之内存管理

  • 操作系统之外设与文件系统

在这里插入图片描述

如果想深入学习计算机组成原理的话,推荐哈尔滨工业大学刘宏伟教授的《计算机组成原理》公开课,整体评价非常高。

在这里插入图片描述

计算机网络方面的视频我推荐湖科大教书匠的《计算机网络微课堂》,制作得非常用心,是一部不可多得的佳作。

在这里插入图片描述

5、项目管理与架构

想要做一个牛逼的软件系统,光会编码可不够,还得懂得项目安排、团队协调这些非技术的东西。你想啊,要是你想从程序员升级到team leader或者开发经理,那软件工程这方面的知识可得跟得上啊。

推荐你看三本书:《构建之法》、《人月神话》和《人件》。虽然这几本书有点年头了,但里面的东西还是相当有深度的,绝对值得一读。

当然啦,学习软件工程最好的方法就是观察,看看你所在的团队是怎么处理各种工程问题的,多思考思考,慢慢形成自己的方法。

想要写出好的程序,得经历三个阶段。

  1. 第一阶段,基本功得扎实。说白了就是语法、框架得熟练,能完成开发任务,当个合格的“码农”。

  2. 第二阶段,得从“码农”升级到“工程师”。这时候光实现功能可不够了,还得考虑功能之外的东西,比如健壮性、低耦合、可扩展性这些指标。

  3. 第三阶段,那就是从“工程师”跨越到“架构师”了。这时候你不仅得关注一个模块的好坏,还得从整个系统的层面去把控,合理安排资源的优先级,保证整个系统不会出问题。

想要成为优秀的架构师可不容易啊,除了努力还得靠点运气。当然啦,读书是必不可少的,这些经典书籍还是得读一读的,对你的日常工作绝对有帮助。📚👍

  • 《代码大全》
  • 《重构:改善既有代码的设计》
  • 《设计原本》
  • 《大型网站技术架构核心原理与案例分析》

最后,这是真的最后了

学习的过程,就好像登山一样,大概有 80% 的人在这个过程中会掉队。那么请相信我,只要目标明确,努力加上坚持,再加上一点点好运气,你就能登顶!

衷心的希望,大家都能在学习 Java 的这条路上快乐一些,纯粹一些,少听少看一些那些焦虑文,什么 35 岁,什么学历歧视,沉下心来,多学习一点知识,让自己变强一点,比什么都好!

另外,需要 Java 学习资料的话,可以直接访问小北的编程资料站,助力每一个Java程序员构建属于自己的知识体系。包括但不限于Java、设计模式、计算机网络、操作系统、数据库、数据结构与算法、大数据、架构、面试等等。

📚👍

  • 《代码大全》
  • 《重构:改善既有代码的设计》
  • 《设计原本》
  • 《大型网站技术架构核心原理与案例分析》

最后,这是真的最后了

学习的过程,就好像登山一样,大概有 80% 的人在这个过程中会掉队。那么请相信我,只要目标明确,努力加上坚持,再加上一点点好运气,你就能登顶!

衷心的希望,大家都能在学习 Java 的这条路上快乐一些,纯粹一些,少听少看一些那些焦虑文,什么 35 岁,什么学历歧视,沉下心来,多学习一点知识,让自己变强一点,比什么都好!

另外,需要 Java 学习资料的话,可以直接访问小北的编程资料站,助力每一个Java程序员构建属于自己的知识体系。包括但不限于Java、设计模式、计算机网络、操作系统、数据库、数据结构与算法、大数据、架构、面试等等。

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值