结合各大公司的技术要求,给大家总结了一份非常全面的最新Java学习路线图,一共包含以下六个阶段@mikechen
Java语言基础(第一阶段)
Java学习路线的第一阶段,我认为需要打好坚实的基础。
1.编程基础
- 常量与变量
- 数据类型
- 运算符
- 流程控制语句
- 方法
- 数组
2.面向对象
- 继承
- 多态
- 重写(Override)
- 重载(Overload)
- 封装
- 接口
- java包 package
3.泛型(Generic )
- 泛型的使用场景
- 泛型类型
- 泛型方法
- 泛型通配符?
4.Java集合
- 集合概述
- 集合特点
- ArrayList集合
- HashMap集合
- 常用集合优劣比较
5.异常处理
- 异常概述
- 异常分类
- 异常处理方案
- 自定义异常
6.注解(annotation)
- 注解的使用和原理
- 三种内置annotation
- 自定义annotation
- 注解类的反射调用
- 动态代理类如何处理
7.输入/输出 IO
- 字符输入流
- 字符输出流
- 字符缓冲输入流
- 字符缓冲输出流
- 复制文件
- 集合与文件中数据相互读写
java语言高级(第二阶段)
打好坚实的基础好,Java学习路线的第二阶段,我认为需要掌握好Java高级内容。
果你今后想进入Java高级俱乐部,这些内容你必须掌握牢固:
1.多线程
- Java线程:概念与原理
- Java线程:创建与启动
- Java线程:多线程的实现方案
- Java线程:线程生命周期
- Java线程:线程池
- Java线程:线程状态的转换
- Java线程:线程的同步与锁
- Java线程:线程的交互等等
线程的几个主要概念
在多线程编程时,你需要了解以下几个概念
- 线程同步
- 线程间通信
- 线程死锁
- 线程控制:挂起、停止和恢复
2.Java并发编程
- 并发工具类
- 并发容器
- 并发锁等
3.反射(reflection)
- 类加载机制原理
- 反射构造方法、字段、方法
- Properties配置文件
4.网络编程
- 网络机制
- Socket原理机制
- UDP、TCP传输等
5.Java高级特性和类库
- java类加载器class loader
- java 程序运行的基础知识,java编译后的bytecode的整个运行机制,这一点对应.net的IL(intermediate language)。
- 理解Java nio,关于这一点网上有非常多的教程,这一条需要重点掌握,对于高并发的掌握很重要。
- java juc(java.util.concurrent)等等
6.JVM原理和调优
JVM最重要的三个部分必须要非常清楚,内存划分、class加载机制以及GC策略。搞清楚这三部分不仅仅是为了面试,也是为了让你对于Java有更深刻的理解,这对于你的Java生涯非常有帮助。
内存划分简单说分为三个部分,Young Generation(年轻代)、Old Generation(年老代)以及Perm Generation(永久代)。其中的Young Generation(年轻代),又分为Eden、From和To,其中From和To又统称为Survivor Spaces(幸存区)。
关于classloader机制的学习,可以结合tomcat去学习,了解清楚tomcat的classloader机制,看tomcat是如何保证各个APP之间的类隔离的。如果可能的话,看一下tomcat中classloader的源码,当中也包含了与tomcat类加载机制相似的部分。
至于GC,需要清楚GC Roots都有哪些,以及如何判断一个对象可以被回收。此外,GC的算法和策略也要有大概的了解。
Java Web阶段(第三阶段)
掌握好Java基础好Java高级后,可以开始Java学习路线的第三阶段,重点学习Web相关的技术。
1.前段技术掌握
- html
- css
- js
- jquery
- bootstrap
2.动态网页技术
- Java Servlet API
- Velocity
- FreeMarker
- Thymeleaf等常用模板引擎
比如,淘宝前端层使用的是velocity模板,部分公司采用jsp、freemarker等,基本类似。
3.linux服务器基本命令
在个阶段,也可以结合自己的情况,学习linux系统底层原理。
Java框架(第四阶段)
Java学习路线的第四阶段,重点学习市面上的主流技术框架。
1.Spring 框架
Spring框架是现在Java后端框架家族里面最强大的一个,拥有IOC和AOP两大利器,简化了开发的复杂性。而且Spring现在能与所有主流开发框架集成,是一个万能框架,Spring让Java开发变得简单。
2.Spring MVC 框架
SpringMVC是Spring的一个模块,一个“小弟”,用于web开发,可理解为servlet的升级版.
SpringMVC能和Spring IOC容器结合,拥有松耦合、方便配置、代码分离等特点,让 Java 程序员开发 WEB 项目变得更加容易。
3.Spring Boot 框架
springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。
SpringBoot化繁为简,使开发变得更加的简单迅速。
4.Spring Cloud
Spring Cloud 是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务系统的构建。
Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。
它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。
5.Mybatis框架
Mybatis是一个用Java编写的持久层框架,它使用ORM实现了结果集的封装。
ORM是Object Relational Mapping 对象关系映射。简单来说,就是把数据库表和实体类及实体类的属性对应起来,让开发者操作实体类就实现操作数据库表。
6.Redis框架
Redis 是完全开源的高性能的 key-value 数据库,性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
如果你还有兴趣,可以自己搭建Lucene、solr框架,以及RocketMQ、Hadoop等等搜索、分布式缓存、异步消息等框架。
开发工具阶段(第五阶段)
Java学习路线的第五阶段,还需要掌握目前市面上的主流开发工具,包含如下:
1.web调试工具
- firefox
- firebug
- web developer
- yslow
- httpwatch
- ietester等
这些都是开发必用。
2.集成开发工具
Idea(首推) ,Eclipse
eclipse里的插件太多,推荐几个必装插件:
JadClipse 、run-jetty-run(很牛的热部署调试)、veloctiy、freemarker IDE、Subclipse、m2eclipse、mybatis Editor、 Easy Explorer等等。
3.版本控制工具
svn、git(首推)
4.构建工具
maven、nexus搭建maven私服
建议自己搭建一套nexus maven私服,成为你们公司的代码仓库员。
5.Java调试工具
- jProfiler(性能跟踪)
- jClarity(性能监控和日志分析)
- Visualvm(性能分析和调优)等
java调试还有很多,以上偏向性能调优和分析
架构技术(第六阶段)
Java学习路线的第六阶段,这个时候还需要掌握目前主流的分布式、微服务等大型网站架构技术。
企业发展过程中,业务量和用户量逐渐增加,为了保证系统的可用性,系统越做越复杂,研发人员增多,大家很难共同维护一个复杂的系统,往往修改部分内容,导致牵一发而动全身,所以我们需要升级系统架构,需要用到分布式微服务的技术。
学习完该阶段内容,可以具备大型SOA架构和微服务架构能力,能掌握大型微服务项目必备技术和实际经验。
Web应用程序发展的早期,大部分web工程是将所有的功能模块打包到一起并放在一个web容器中运行,这就是大家熟知的单体架构。
随着业务的发展,为了支撑更大的访问,很多公司正在从单体系统转向微服务。
Spring Framework 提供了Spring Cloud和Spring Boot,极大地简化了Java微服务的开发。
如果想掌握好微服务,你首先需要了解:如何设计一个微服务框架?,其次掌握好Spring Cloud的5大核心组件详解,以及了解从单体架构、到SOA、再到微服务的架构设计。
其次,当你需要考虑使用微服务的时候,一定会涉及分布式架构系统拆分原则、需求、微服务拆分步骤。
最后,拆分后还需要考虑监控微服务等:微服务技术架构、监控、Docker、服务治理等详解
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》