java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15867|回复: 105

Java自学网2019年 最新版Java学习路线图

  [复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66083

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-10-13 01:50:21 | 显示全部楼层 |阅读模式
    不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从何下手。
    Java自学网总结出来的,供大家参考。
    1、Java基础
    Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射的特性,很多框架的技术都依赖它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的动态代理也是利用反射实现的。
    此外还有 Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在 Web 开发中无处不在,也是面试经常会被问到的,所以在自学 Java 后端之前,不妨先打好这些基础。
    另外还有 Java8 的一些新特性,也要重点关注,比如 Lambda 表达式、集合的 Stream 流操作、全新的 Date API 等等,关于新特性。
    2、数据库
    关于 sql 方面:SQL 教程、MySQL 教程
    我是了解了一些基础语法之后,就直接跟着视频的老师做一些表操作实战练习了,比如单表查询、多表查询等。我建议学 sql 切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的 sql 是非常重要的。
    在这里我说下我在项目一直秉承着 sql 语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。
    关于 JDBC 方面:JDBC 教程、 JDBC 获取连接对象源码分析
    你需要弄懂 JDBC API 的用法,其实它只是一组规范接口,所有数据库驱动只要实现了 JDBC,那么我们就可以通过标准的 API 调用相应的驱动,完全不用知道驱动是怎么实现的,这就是面向接口编程的好处。
    而且对于 JDBC 我是直接看视频去理解的,跟着视频做了一个基于 Apache Dbutils 工具做了一个具有事务性的小工具,我特意用思维导图总结了一下:
    jdbc-utils源码地址:jdbc-utils
    3、Web基础
    曾经开源中国创始人红薯写了一篇文章「初学 Java Web 开发,请远离各种框架,从 Servlet 开发」,我觉得他说的太对了,在如今 Java 开发中,很多开发者只知道怎么使用框架,但根本不懂 Web 的一些知识点,其实框架很多,但都基本是一个套路,所以在你学习任何框架前,请把 Web 基础打好,把 Web 基础打好了,看框架真的是如鱼得水。
    关于 Http 协议 这部分内容比较简单搜集一些相关资料就能学会,不赘述。
    关于 Web 基础这方面数据推荐,我当时是看的是「Tomcat 与 Java Web 开发技术详解」,很详细地讲解了整个 Java Web 开发的技术知识点,但现在看来,我觉得里面讲的有一些技术确实有点老旧了,不过可以了解一下 Java Web 开发的历史也是不错的。
    关于 JSP,你只要了解它其实就是一个 Servlet 就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用 JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做 API 接口的时代了,所以时间宝贵,把这些时间重点放在 Servlet 规范上面吧。
    关于 Tomcat,它是一个 Web 容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循 Http,通过 Socket 通信与客户端进行交互的服务端程序:Tomcat结构及处理请求过程。
    4、Web主流框架
    Java Web 框架多如牛毛,等你有一定经验了,你也可以写一个 Web 框架,网上很多说 Spring、Struts2、Hibernate 是 Java 三架马车。
    我只想说,那是很久远的事情了,我严重不推荐 Struts2、Hibernate,相信我,一开始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特别是 Spring 框架,其实 Spring 家族的框架都是很不错的。
    但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。
    Spring其核心思想就是 IOC 和 AOP:
    谈谈对 Spring IOC 的理解
    Spring 面向切面编程
    SpringMVC 它的思想是全部请求统一用一个 Servlet 去做请求转发与控制,这个 Servlet 叫 DispatcherServlet
    Mybatis 它可实现动态拼装 sql,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
    5、Web框架进阶
    使用了 SSM 框架后,你会觉得框架也不过这么回事,如果你对 Spring 有过大概了解,你也会产生想写一个「山寨版」Spring 的心思了,一个轻量级 Web 框架主要具备以下功能:
    可读取用户自定义配置文件,并以此来初始化框架;
    具备 Bean 容器,管理项目的类的对象生命周期;
    具备依赖注入,降低类之间的耦合性;
    具备 AOP 功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
    具备 MVC 框架模式。
    其实除了 SSM 之外,Web 框架可谓是百家齐放,其中以 Spring 全家桶最为耀眼,在这里我极力推荐两个 Spring 家族框架:SpringBoot 和 SpringCloud。
    SpringBoot 弥补了 Spring 配置上的缺点,再也不用为繁杂的 xml 费劲精力了,堪称是 Java 后端开发的颠覆者,推荐书籍「Java EE 开发的颠覆者:SpringBoot实战」
    SpringCloud 是一个微服务架构,能够将项目按照业务分成一个个微服务,每个微服务都可独立部署,服务之间互相协调。
    当一个项目越来越大时,随之而来的是越来越难以维护,此时将项目拆分成若干个微服务、单独维护、单独部署,也可以降低项目不同业务间的耦合度。
    6、其它技术
    Redis:一个高性能的 key-value 数据库,当有并发量很高的请求时,将数据缓存在 Redis 中,将提高服务器的响应性能,大大减轻数据库的压力。
    Git:世界上最先进的分布式版本控制系统,建议所有初学者从命令行开始使用 Git!
    Maven:一个用于构建项目的工具,将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。
    maven 的 pom.xml 文件详解
    Linux:至少要求常用的命令会用,能够在 linux 环境下部署项目。
    最全的 SSH 连接远程终端教程
    7、开发工具
    工欲善其事,必先利其器,以下是我推荐的一些开发工具:
    Intellij IDEA:Java 开发最好的 IDE,这个是公认的,我一开始是用 Eclipse 的,后来用了 Intellij IDEA,才发现 Eclipse 就是一坨屎,所以我以过来人劝你们不要使用 Eclipse,直接 Intellij IDEA!
    Iterm2:macOS 最好用的终端!
    Chrome:人生苦短,请用 Chrome,来不及解释了,快上车!
    Postman:很好用的一个接口调试工具。
    学习Java要有进取心,要有拼搏的精神,要耐得住寂寞。

    % X; x& v) A' |+ S
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3276

    帖子

    6554

    积分

    普通会员

    Rank: 2

    积分
    6554
    发表于 2019-12-24 19:16:52 | 显示全部楼层
    厉害厉害,很强很强
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-11-25 11:20
  • 签到天数: 5 天

    [LV.2]登堂入室

    0

    主题

    3329

    帖子

    6725

    积分

    普通会员

    Rank: 2

    积分
    6725
    发表于 2020-1-20 14:41:25 | 显示全部楼层
    棒棒哒!!很不错!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3219

    帖子

    6440

    积分

    普通会员

    Rank: 2

    积分
    6440
    发表于 2020-1-28 23:29:42 | 显示全部楼层
    大佬  厉害呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3253

    帖子

    6508

    积分

    普通会员

    Rank: 2

    积分
    6508
    发表于 2020-2-6 11:39:10 | 显示全部楼层
    哈哈哈哈哈,开心
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3217

    帖子

    6436

    积分

    普通会员

    Rank: 2

    积分
    6436
    发表于 2020-2-15 10:49:26 | 显示全部楼层
    不错 支持下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3219

    帖子

    6450

    积分

    禁止发言

    积分
    6450
    发表于 2020-2-15 16:38:46 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3241

    帖子

    6484

    积分

    终身VIP

    Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60

    积分
    6484
    发表于 2020-2-20 12:24:02 | 显示全部楼层
    我能看看吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-24 10:47
  • 签到天数: 3 天

    [LV.2]登堂入室

    0

    主题

    3313

    帖子

    6668

    积分

    普通会员

    Rank: 2

    积分
    6668
    发表于 2020-2-27 09:23:54 | 显示全部楼层
    真是好资料
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-4-20 22:08
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    3258

    帖子

    6537

    积分

    普通会员

    Rank: 2

    积分
    6537
    发表于 2020-3-1 08:47:04 | 显示全部楼层
    VERY GOOOOOOD
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-4-19 14:38 , Processed in 0.102917 second(s), 31 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表