Java学习路线图-百战程序员

时间:2018-09-14 22:27:33   来源:百战程序员   阅读:
JAVA 语言是一门非常流行和重要的语言,目前仍是需求量最大的语言,应用范围最广的语言,在:企业级开发、移动开发、大数据云计算、人工智能等领域都有大量的应用。
 
怎么样学习好 JAVA 语言,达到可以轻松就业的地步,是每个初学者都关注的话题。我们一般将 JAVA 编程的学习分为这四个大阶段:基础阶段、WEB 开发阶段、框架阶段、高级技术阶段。各阶段具体学习内容和方法如下:
 
1. 基础阶段
 
基础阶段的学习说白了就是 JAVASE 的学习,这是最基础的阶段。目标是让初学者进入编程的殿堂,具备基本的编程思维。在这个阶段我们可以在细分为如下内容:
 
1. JAVA 编程入门
 
入门阶段主要学习:变量、数据类型、控制语句这些最基本的概念。这些技术是所有编程语言都有的内容。很基础也很重要。专心学完,大约需要 3 天时间。
 
2. 面向对象
 
面向对象是深入学习 JAVA 的核心,也是大家真正进入 JAVA 世界的难点和重点。这里会有各种各样的概念,非常重要。但是,大家在学习面向对象的时候,先注意“开始学习语法和概念,不要期望一口气学的很透彻。面向对象,需要大家在后面做项目时才能深入体会如何将面向对象思想应用于实践”。因此,我建议大家不要在此处过于纠结概念,能学多少学多少,遇到不懂的概念,先记结论开始用,快速往后学,不要停留过长的时间在此处。如果全天候学习,建议学习时间 3 天。
 
3. 异常
 
异常是 JAVA 安全机制的核心,也是让我们程序更易懂更稳定的核心。初学异常重在理解概念、学习如何解决异常的思路。如果全天候学习,建议学习时间 0.5 天。
 
4. 数组
 
数组是最常用的概念。在学习本内容的时候,掌握核心“数组也是对象,数组的元素相当于对象的的成员变量”,理解了这一句话,就掌握了数组的一大半了。数组学习时顺便学习一下一些基本的算法,比如:排序、二分法等。这样,既可以学习数组,也能复习前面的控制语句、面向对象等知识。因此,在此处可以多做练习,停留时间长一点。如果全天候学习,建议学习时间 2 天。
 
5. 常用类
 
我们重点掌握常用类的用法,学习 API 的查询和使用。如果你想更深入,学习时可以阅读这些常用类的底层源码,开始培养高手的格局。如果全天候学习,建议学习时间 2 天。
 
6. 容器
 
容器是开发中最常用的内容。学习容器时,既要学习相关类和接口的使用,也要明白容器的底层原理。容器的底层实现和数据结构知识紧密挂钩。也是,我们在工作和面试中经常会碰到的问题。因此,容器需要初学者花大力气学习,并且要深入底层,明白底层的核心机制。如果全天候学习,建议学习时间 2 天。
 
7. 多线程
 
多线程的 JAVA 语言的特点。我们在后续学习服务器编程时,服务器的底层核心机制就是基于“多线程”的。因此,我们需要掌握多线程的基本原理和应用。为了后续学习并发编程,也有必要学习一下“生产着消费者模式”、“锁机制”、“TheadLocal”、“线程池”等高端一点的概念。如果全天候学习,建议学习时间2 天。
 
8. 网络编程
 
更容器的网络编程是 JAVA 在互联网时代击败 C++的关键。我们需要掌握 TCP 编程、UDP 编程的经典模式,但是不需要太深入去学习。因为,大多数项目开发时底层都做好了封装。如果全天候学习,建议学习时间 1.5 天。
 
2. WEB 服务器开发阶段
 
学习 JAVA,大多数人最终会进入服务器编程、企业级开发领域。因此,为了能够完整的编写项目。这个阶段我们也要学习一些 JAVA 之外的技术:网页开发和设计、数据库编程。JAVA 之内的技术有:Servlet、JSP、标签库、服务器等。这都是大家进入开发领域必须要学习的内容,光会 JAVASE 是不能实现就业、不能独立开发项目的。但是,学完本阶段的技能,大家就可以独立开发一些项目、具备初步的就业能力了。
 
1. 网页开发和设计
 
JAVA 程序员主要完成服务器端的开发,但是对于浏览器端如何展现数据也是很有必要掌握的。网页开发的基本知识可以说是必学的技能。集中包括:HTML、CSS、JavaScript、JQuery 等。网页开发也是专门的专业,JAVA 程序员去学习,掌握基本概念即可,不需要深入太多细节。大家在学习的时候,把握好“度”。如果全天候学习,建议学习时间 6 天。
 
2. 数据库编程和设计
 
数据库是绝大多数项目的存储的核心,因此,作为 JAVA 程序员也必须掌握。在学习数据库技术时,重点掌握 SQL 查询、表的设计范式、JDBC 技术、ORM 思想和 Mybatis 框架。其他关于数据库管理的知识不需要掌握太多。如果全天候学习,建议学习时间 9 天。
 
3. Servlet 和 JSP 技术
 
Servlet 和 JSP 是 JAVA 服务器开发的核心技术,也是必备技能。重点掌握如下知识: HTTP 协议、Tomcat 服务器、Servlet、Jsp、EL 表达式和标签库。如果全天候学习,建议学习时间 5 天。
 
4. 做一个简单的项目
 
学到现在,大家已经具备初步的项目开发能力。非常有必要通过一个项目,将所学的知识串联一遍,强化所学成果。同时,也通过项目开发的学习,真正进入 JAVA 企业级开发的行列。如果全天候学习,建议学习时间 5 天。
 
3. 框架阶段
 
框架做为企业使用的重要技术, 其本质是”写更少的代码,做更多的事情”, 从而大大减少代码量, 让程序员更加关注业务的实现。 自己写的少了,都是用别人写好的东西就要明白别人写了什么, 学习框架重难点不仅仅是如果使用框架而是要明白别人到底写了什么。 但是也要掌握好”度”,不要一味追求底层, 要”择其重”, 否则可能出现东西太多, 永远也学习不完的情况。
 
1. MyBatis  框架
 
学习 MyBatis 框架要知道它是一个持久层框架。它的主要职责就是完成数据库操作,因此也要求我们有一定的 SQL 基础。MyBatis 灵活就体现在所有 SQL 都是程序员编写,想要什么样的结果就写什么样的 SQL 命令,剩下大部分的事情都交给 MyBatis 完成了。在我们这次课程设计上,我们把 Mybatis 放到了学完 JDBC 之后,这样既可以巩固 JDBC 和数据库知识,也能在即将要做的项目中开始使用 Mybatis,这样更贴合企业实战。
 
如果全天候学习,建议学习时间 3 天。
 
2. Spring 框架
 
学习 Spring 框架的目标很明确, 就是学习好 IOC/DI、 AOP、 声明式事务。 单独使用 Spring 很简单,重点是学习了核心功能后如何把这些功能运行。目前大部分技术都需要被 Spring 整合, 所以 Spring 是很重要的框架。
 
Spring 框架不是专注于某一层, 哪里都有 Spring 的影子。所以基础语法学习好后要多做几个项目去, 才能真正的感受到 Spring 的魅力。
 
如果全天候学习,建议学习时间 3 天。
 
3. SpringMVC 框架
 
SpringMVC 做为 MVC 框架, 其关注点就是控制器的编写。如何接收参数, 如何传递内容到页面,还有大量注解这些都是核心。学习时把握好主脉,要从运行原理入手, 清楚的知道里面的核心组件, 学习起来就事半功倍了。
 
如果全天候学习,建议学习时间 3 天
 
4. Shiro 安全框架
 
Shiro 应用场景都是在权限、安全上,应用场景很明确,所以就导致 Shiro 里面有着大量专业术语。 学习 Shiro 从架构图出发,清晰的记忆所有专业术语。我们分两大块学习 shiro,分别是:认证和授权。
 
如果全天候学习,建议学习时间 2 天。
 
4. 高级技术阶段
 
高级技术阶段是随着电商火热后被大量使用的,这些技术大部分都是为了解决”高负载”,”高并发”等使用。
 
1. Linux
 
Linux 是操作系统,学习 Linux 就是为了让自己开发的项目发布到 Linux 中,所以学习 Linux 的主要要求是如何把项目运行的环境都配置出来。作为 JAVA 程序员不要求掌握特别深的 Linux 知识,掌握基本操作即可。本课程就是针对 JAVA 程序员进行设计,快速入门,简单直接。
 
如果全天候学习,建议学习时间 1 天。
 
2. Maven
 
Maven 是项目构建工具,必须先要弄清楚分布式的概念。 从学习了 Maven 后每个项目可能不是一个 Project 而是很多个, 所以重难点是项目和项目之间的关系以及 Maven 中 POM 的配置。
 
如果全天候学习,建议学习时间 1 天
 
3. Dubbo
 
使用 Dubbo 先要弄清楚 RPC 概念。从架构图入手,清晰明白 Dubbo 的架构和运行过程,要多花一定时间在 Dubbo 的架构图上。另外,Dubbo 使用过程中要尽量使用配置文件配置而不要使用注解。
 
如果全天候学习,建议学习时间 1 天
 
4. VSFTPD
 
VSFTPD 可以搭建图片服务器, 先要知道 FTP 协议,然后弄清楚为什么使用
 
VSFTPD 以及熟练使用 FtpClient。
 
如果全天候学习,建议学习时间 1 天
 
5. Nginx
 
先要弄清楚反向代理的概念,代理本机目录和代理其他主机。 熟练安装 Nginx 和配置 Nginx 是学习 Nginx 的重点。
 
如果全天候学习,建议学习时间 1 天
 
6. Redis
 
NoSQL 数据库在企业中使用越来越多,最主要的优点就是效率高。每个 NoSQL 数据库有着自己独有的操作 API,所以在能够熟练安装 Redis 基础上,更要熟练使用 Jedis 操作 Redis。
 
如果全天候学习,建议学习时间 1 天
 
7. Solr
 
Solr 搜索,先要能够搭建 SolrCloud。 学会使用 SolrJ 之后,还需要明白”索引”,搜索算法,Solr 实现原理才能掌握好 Solr。
 
如果全天候学习,建议学习时间 1 天
 
8. ActiveMQ
 
基于队列实现,明白队列概念后,把 ActiveMQ 安装上可以很快的上手。
 
如果全天候学习,建议学习时间 1 天
 
9. HttpClient
 
基于 HTTP 协议使用 Java 代码完成请求/响应的 API,所以请求及响应概念清楚, HttpClient 可以很快的上手。
 
如果全天候学习,建议学习时间 1 天
 
10. JsonP
 
浏览器异步请求静态资源,这个可以通过浏览器的调试工具清晰看到。明白这点
 
JsonP 也是可以很快的学习明白的。
 
如果全天候学习,建议学习时间 1 天
 
11. MyCat
 
为了保留关系型数据的优点,MyCat 作为一个解决 MySql 不能分库分表的解决方案。学习 MyCat 先从配置 MySQL 主从备份开始,然后熟练配置 MyCat 配置文件。
 
如果全天候学习,建议学习时间 1 天
 
5. 设计模式和框架底层深化阶段
 
设计模式是解决特定问题的较优代码编写方案.在程序开发中时时刻刻都有着设计模式。
 
学习设计模式必须要明白这么写代码是为了解决什么事情的。
 
可以先把所有设计模式都学习完, 对于 GOF23 设计模式有一个基本的认识。 然后在学习成熟框架的底层代码,这样技能将框架学习更深入也能让自己的底功更扎实。
 
学习设计模式可以拆分成多个小块学习,不建议一次性占用大量时间。
 
 
框架学习分为两种:一种是使用一种是明白实现原理。 如果学习框架只是为了知道如果搭建框架的环境, 如果使用框架,框架的学习还是比较容易的。但是如果想要非常清楚的明白每个功能是如何实现的就必须清楚的知道框架底层。
 
学习框架底层可以帮助我们在出现异常时快速的想到是什么原因出现这个错误。 因为我们知道自己写的代码,也知道别人写了什么,出现了错误肯定会更好的解决。
 
MyBatis 框架底层可以从 SqlSessionFactory 入手, 一个类一个方法的往下跟踪,一直跟踪到 SqlSession 关闭。
 
Spring 的底层源码要从 BeanFactory 和 ApplicationContext 入手,知道 Spring 容器作用。
 
SpringMVC 底层源码可以从 DispatcherServlet 入手,观察所有核心组件的运行过程。
 
Struts2 的底层代码要从 struts-default.xml 入手,里面配置了很多内置的内容。
 
Hibernate 的底层代码查看思路和 MyBatis 类似,从 Configuration 开始。
 
每个框架可以自己绘制一份流程图, 这样更利于自己把整个框架的运行原理弄清晰
 
框架底层内容可以在边学习框架边学习。
 
 
【注】框架底层的学习适合学有余力的同学。如果掌握框架的使用都比较吃力,可以先放一下。熟练使用框架以后再深入底层。
 
 
6. 综合项目
 
技术技能学习完毕后,必须通过一个综合的项目将所学知识串一遍。既是复习,也是升华。我们采用“电商项目”作为综合项目。电商项目可以很简单,也可以很复杂。有的所谓电商项目就是一个商品管理和购物车,但是一个京东商城也是电商项目。 所以,电商项目是一个非常好的可以串联知识点的项目,以及解决高并发问题好的场景。 我们这里设计的电商项目,既包含了项目本身的各个模块实现逻辑,也包含了高并发场景如何处理的技术。吃透这个项目完全可以胜任绝大部分的开发工作。建议学习时间 15 天。
 
 
7. 微服务架构
 
微服务架构是目前比较火热的一种架构方式,其特点为将一个大型的单一的应用拆分成多个微服务。相比较传统的单一架构模式能够更灵活的应对生产环境中需求变更现象,更好的支持敏捷开发。
 
从目前火爆程度来看,微服务架构在未来中大型应用架构中已经成为首选的架构方式。
 
被多个国内外大型 IT 公司所关注。
 
从编码角度来看 Spring Boot、Spring Data、Spring Cloud 三个技术更好的解决了繁琐的开发模式,让复杂的工作简单化。建议 JAVA 工程师持续关注。
 
 
8. 面试和求职
 
技术学习完毕了,我们也必须掌握一些基本的面试知识,让自己在找工作和求职过程中最少做到“不吃亏”。如果这部分知识掌握到位,可以起到“画龙点睛”的作用,让自己的临门一脚非常漂亮。为自己的职场发展开好头。

文章版权为百战程序员所有
转载请注明出处,喜欢请转发分享。

分享:0

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

0755-23061965

18898413781

微信扫一扫