引言
在了解了Java的生态体系和基本概念后,野生程序员要想真正入坑Java程序开发还需要先对Java的技术路线有一个清晰的认识。
本文重在为小白理清学习路线,大神请绕行。
一、基础知识
(1)编程语言
主要学习Java语法。(有C++基础上手更快)
可以通过书或网络教程学习。
不用刻意记忆,关键在于实践。
(2)基本算法
主要学习数据结构、查找算法、排序算法等。
(3)基本网络知识
主要学习计算机网络。
TCP/IP协议
现在的互联网如此发达主要得益于TCP/IP协议。HTTP/HTTPS协议
现在流行的Web应用主要得益于HTTP/HTTPS协议。
(4)基本的设计模式
如单例模式、模板模式等。
二、工具
(1)操作系统
Linux(CentOS、Ubuntu等)
(2)代码管理
- SVN
- Git
(3)持续集成/持续交付/持续部署
即:CI(Continuous Integration)、CD(Continuous Delivery)、CD(Continuous Deployment)。
偏运维范畴,Java开发也应该有一定的了解。
- Jenkins
(4)Java项目管理工具
Maven
Gradle
(5)Java集成开发工具
IntelliJ IDEA
Eclipse
两者均支持Windows和Mac系统。目前,Java企业级开发中用的比较多的是IDEA,因为它的集成环境非常强大。
三、框架
(1)应用层框架
SSH(Struts+Spring+Hibernate)
已过时,不要再学了。SSM(Spring+SpringMVC+MyBatis)
目前仍有很多企业在用。MyBatis是数据库的访问层。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,极大地简化了Java操作数据库(增删改查)的流程。Spring Boot
目前比较流行,更易上手。(建议小白由此入坑)
(2)各种中间件
MQ(Message Queue):
消息队列,如RabbitMQ等。RPC(Remote Procedure Call):
远程过程调用,是一种通信框架。
目前比较流行的gRPC、Thrift、Dubbo等都有RPC的影子在里面。ElasticSearch搜索引擎:
我们可以把它理解成一个数据库。
(3)数据库
SQL(Structured Query Language,结构化查询语言):
即传统的关系型数据库。
具体的数据库软件有MySQL、PostgreSQL等。NoSQL(Not Only SQL, 非关系型的数据库)
目前比较流行的有(做缓存的)Redis和MemCached,(文档数据库)MogoDB,以及前面提到的(搜索引擎数据库)ElasticSearch。
四、架构
(1)分布式/微服务架构
Spring Cloud
Dubbo(阿里巴巴的)
前面讲的RPC通信框架也可归于此类
Spring Cloud和Dubbo在某种程度上也可视为一种RPC通信框架。
无论是传统的Servlet + JSP,还是 SSM,以及现在的 SpringBoot,它们都是单体架构。
单体架构在规模比较小的情况下工作情况良好,但是随着系统规模的扩大,它扩展性差、可靠性不高、维护成本高等问题就会暴露出来。
微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。
(2)虚拟化/容器化技术
Docker(易上手)
K8S(Kubernetes,k和s之间有8个字母)
五、源码
在学有余力的情况下,我们还应该关注一些优秀系统的源码。如:
JDK源码及其部分设计思想
Spring全家桶源码
JVM细节与排除
高并发/高可用(更多的要来源于实践)
后记
在理清基本的学习路线后,更多的是靠:实践 + 坚持 + 努力。
(内容主要来自CodeSheep的B站视频,特此鸣谢!)
关注“阿汤笔迹” 微信公众号,获取更多学习笔记。
原文地址:http://www.atangbiji.com/2020/04/10/JavaTechnologyRoadmap/
博主最新文章在个人博客 http://www.atangbiji.com/ 发布。