给你推荐一个写得非常用心的 Java 基础教程:教妹学 Java 入门基础教程
这个教程将 Java 的入门基础知识贯穿在一个故事中,逐步深入,可以帮助你快速进入 Java 编程的世界。万事开头难,逐步跟着这个教程走一遍,对 Java 应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。
目前已经连载 41 篇,这里就不再贴了,希望能够对你有所帮助。
入门之后,可以考虑以下学习路径和内容:
1、学习的基本路径
首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。
建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。
事实上要成为一个资深的 Java 开发者,对各种 API 和框架的学习,可能是花时间最多的一个地方。在软件开发中也有二八原则,少数的 API 能够胜任开发中的大部分场景。所以你只需要掌握这些关键部分,当在新场景下遇到不能解决的新问题时,再去查看帮助文档。所以帮助文档的阅读也是技术学习的一个关键因素。了解了基础原理之后一般就能上手开发了,帮助文档可以帮助你在实践中学习。
2、三个神器
三个神器,对于软件开发者来说非常重要。
第一个 Google,虽然因为各种原因的话有时候我们访问不了,但是这基本上是可以去寻找技术资料最好的方式。
第二个是 Github,Github 就是一个可以找到大量第三方库的地方,那是别人给我们封装好的可以复用的代码。比方说造一辆汽车的话,我们经常不要自己造轮子,而 Github 上可以找到很多优质的轮子,这些轮子还是免费(代码都是开源的),我们应该尽量利用它们来拼装自己的汽车。
第三个是 StackOverflow 网站,在这个问答网站上你遇到的几乎任何开发问题都能快速找到答案。
3、Java Web 全栈开发的推荐学习内容
简单总结一下,大概包括下面这些内容。每一部分都可以细化成很多知识点,这只是一个粗略的罗列。把它当做技术地图就好了。
开发环境的建立与项目管理:Intellij IDEA、Maven 和 Git
Java 编程基础:基本语法、面向对象特性、Java8 新特性、更高级库(比如 Guava)的使用等
前端开发技术:HTML、CSS、Vue 和 JavaScript 基础
Spring 基础:依赖注入 IoC、面向切面编程 AOP、SpringBoot
MVC 框架:Spring MVC,包括 URL 路由、模板、表单、Session、拦截器等知识
数据访问:关系型数据库、JDBC、Spring JDBC、事务、ORM 框架(MyBatis)
成熟应用的关键功能实现:邮件发送、异步任务、缓存、日志等
应用的测试和部署
4、Java Web 涉及到的内容
构建 MVC 应用
Session
5、数据库相关的内容
除了动态的 Web 界面,一个有价值的 Web 应用必然需要进行数据存储,开发上我们一般称之为数据持久化(Data Persistence)。
从业务功能的角度出发,简单的应用可以认为就是数据的增删改查。比如一个产品级的博客应用,最核心的功能就是对博客内容的创建、修改、删除和查询,而这些功能都离不开 Web 服务器背后的数据库系统。
MySQL 基本使用
SQL 中的 DDL——create,drop,alter,建立主键外键等约束
SQL 中的 DML——insert, select, delete, update,join
数据库连接,连接池
使用 JDBC API 访问数据库
分页查询
事务的基本概念
JDBC 代码的封装与数据访问的三层架构
6、Spring 相关的内容
Spring 最重要的两个核心功能是依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect Oriented Programming)。其中 DI 用于管理 Java 对象之间的依赖关系,AOP 用于解耦业务代码和公共服务代码(如日志,安全,事务等)。DI 和 AOP 能够让代码更加简单,具有良好的松耦合特性和可测试性,极大地简化开发。理解这两者是使用 Spring 框架的基础。
7、Spring MVC 相关内容
Spring 作为 Java 系的全栈(full-stack)开发框架,当然也对 Web 开发有着非常好的支持。Spring 的 Web MVC 框架能够使开发者非常容易的开发 Web 应用,同时能够无缝享受到 Spring 本身的诸多好处——IoC 容器、AOP 编程等等。
8、MyBatis 相关内容
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生 Map 使用简单的 XML 或标注,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录
9、Java Web 应用的部署
10、其它主题
缓存:EhCache、Spring Cache Manager、数据层缓存、服务层缓存、页面缓存、Redis
安全:Spring Security(HTTP 基本验证,角色验证,权限验证)
任务调度:Spring 任务执行器(Executor)
邮件发送:SMTP 协议、spring-boot-starter-mail
Web Socket:@SubscribeMapping, WebSocketConfig
日志:SLF4J 与 Logback、 Spring Boot Logging、 ConsoleAppender/RollingFileAppender 、Sentry、ELK
11、设计模式
12、更进一步
分布式、深入 Java 虚拟机、针对不同场景的 Java 技术框架,到这个阶段已经不仅仅是 Java 的学习了,而是大型应用场景的技术积累、架构设计的精进了。
可参考 GitHub 上标星 115k+ 的 Java 教程