Java后端自学路线

总体路线

原文链接:http://objcoding.com/2018/02/07/javaweb-learning/
侵权请联系删除。
Java后端自学路线

Java基础

Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射的特性,很多框架的技术都依赖它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的动态代理也是利用反射实现的。此外还有 Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在 Web 开发中无处不在,也是面试经常会被问到的,所以在自学 Java 后端之前,不妨先打好这些基础,另外还有 Java8 的一些新特性,也要重点关注,比如 Lambda 表达式、集合的 Stream 流操作、全新的 Date API 等等。
书籍方面,不建议初学者直接看《Java编程思想》,推荐入门书籍《Java核心技术》。
视频方面,推荐某客的毕向东老师讲的 Java 基础教程。

数据库

sql方面:不能眼高手低,需多加练习。
JDBC方面:需要弄懂JDBC API的用法,其实它只是一组规范接口,所有数据库驱动只要实现了 JDBC,那么我们就可以通过标准的 API 调用相应的驱动,完全不用知道驱动是怎么实现的,这就是面向接口编程的好处。
Java后端自学路线

Web基础

学框架前,打好WEB基础。
关于Http协议,参考博客:Http协议
关于Web基础,书籍方面《Tomcat与Java Web开发技术详解》,虽然技术有些老旧,但是依旧值得推荐;视频方面推荐某客的崔老师讲的「超全面 Java Web ****」。
关于JSP,你只要了解它其实就是一个 Servlet 就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用 JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做 API 接口的时代了,所以时间宝贵,把这些时间重点放在 Servlet 规范上面吧。
关于Tomcat,它是一个 Web 容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循 Http,通过 Socket 通信与客户端进行交互的服务端程序。

Web主流框架

Java Web 框架多如牛毛,等你有一定经验了,你也可以写一个 Web 框架,网上很多说 Spring、Struts2、Hibernate 是 Java 三架马车,但是那是很久远的事情了,严重不推荐 Struts2、Hibernate,相信我,一开始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特别是 Spring 框架,其实 Spring 家族的框架都是很不错的。
但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。
Spring 核心思想是 IOC 和 AOP
SpringMVC 核心思想是全部请求统一用一个 Servlet 去做请求转发与控制,这个 Servlet 叫 DispatcherServlet
Mybatis 它可实现动态拼装 sql,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

Web框架进阶

使用了 SSM 框架后,你会觉得框架也不过这么回事,如果你对 Spring 有过大概了解,你也会产生想写一个「山寨版」Spring 的心思了,一个轻量级 Web 框架主要具备以下功能:

  • 可读取用户自定义配置文件,并以此来初始化框架;
  • 具备 Bean 容器,管理项目的类的对象生命周期;
  • 具备依赖注入,降低类之间的耦合性;
  • 具备 AOP 功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
  • 具备 MVC 框架模式。

其实除了 SSM 之外,Web 框架可谓是百家齐放,其中以 Spring 全家桶最为耀眼,在这里我极力推荐两个 Spring 家族框架:SpringBootSpringCloud

SpringBoot 弥补了 Spring 配置上的缺点,再也不用为繁杂的 xml 费劲精力了,堪称是 Java 后端开发的颠覆者,推荐书籍「Java EE 开发的颠覆者:SpringBoot实战」

SpringCloud 是一个微服务架构,能够将项目按照业务分成一个个微服务,每个微服务都可独立部署,服务之间互相协调。当一个项目越来越大时,随之而来的是越来越难以维护,此时将项目拆分成若干个微服务、单独维护、单独部署,也可以降低项目不同业务间的耦合度。推荐书籍「Spring Cloud 与 Docker 微服务架构实战」,这本书将 Docker 与微服务完美地结合在一起,堪称完美!

其他技术

Redis:一个高性能的 key-value 数据库,当有并发量很高的请求时,将数据缓存在 Redis 中,将提高服务器的响应性能,大大减轻数据库的压力。
Redis中文官网Redis教程
Git:世界上最先进的分布式版本控制系统,建议所有初学者从命令行开始使用 Git!关注 stormzhang 公众号「googdev」,回复「github」,即可免费获取一份 GitHub 教程电子书,我觉得写得很不错。
Git官网最全Git教程Git常用命令
Maven:一个用于构建项目的工具,将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。
Linux:至少要求常用的命令会用,能够在 linux 环境下部署项目。
Linux命令大全最全的SSH连接远程终端教程
Docker:项目部署神器啊,推荐书籍「Docker 技术入门与实战」,中国首部 Docker 著作!
Docker实战1
Docker实战2
Docker实战3
docker-deploy-tutorial

开发工具

Intellij IDEA:Java 开发最好的 IDE,这个是公认的,我一开始是用 Eclipse 的,后来用了 Intellij IDEA,才发现 Eclipse 就是一坨屎,所以我以过来人劝你们不要使用 Eclipse,直接 Intellij IDEA!

Iterm2:macOS 最好用的终端!

Chrome:人生苦短,请用 Chrome。

Postman:很好用的一个接口调试工具。