4

java程序员从小工到专家成神之路(2020版)

 3 years ago
source link: http://www.flydean.com/java-roadmap-2020/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

java作为第一大编程语言,可谓源远流长,一代又一代的java程序员前仆后继走在java学习的路上。java程序员的学习之路在2020年又有什么变化呢?本文详细附上了每一个部分所需知识的教程链接地址,并会持续更新,希望能够和大家一起进步!

上面的RoadMap图中列出了作为一个java程序员需要掌握的技术路线,所有技术都懂那当然非常好,如果还没掌握也没关系,just keep learning!

必须掌握的基础知识

作为程序员当然是有门槛的,这个门槛就是所需要掌握的基础知识,写好了程序不仅要知其然,更要知其所以然。这样才能在写程序的过程中,透过现象看到本质,从本质上提升写代码的功力。

1. Git & Github

Github作为全球最大的同性交友平台,是个程序员都应该知道。作为开源风潮的托管平台,GitHub上面有大量的优秀开源项目,如果有需可以从GitHub上面借用各种项目,没有需要也可以去读读上面的代码,提升下写作水平。

Git作为优秀的版本管理工具,相信绝大多数公司都在使用,那么掌握Git的命令和使用就是非常重要了。更为重要的是,Git通过git flow带给我们了代码管理的新思路。

2. Linux

很多程序员用惯了windows可能对Linux并不熟悉,但是大家要知道绝大多数的服务器都是部署在Linux上面的,不懂Linux就说自己懂编程,岂不是很搞笑?连自己写出来的代码运行的平台都不了解,怎么可以。即使不是运维专员,自己部署程序也要会的,部署中需要注意的问题肯定要关注,至于Linux的基本命令那更是要100%掌握。

3. 数据结构和算法

如果只是使用java中的库,那么至少array, linked list, hash table, binary tree, queue, stack, graph这些基本的数据结构是需要掌握的。

如果你想更深入一些Trie, B-Tree, AVL tree等等可以了解一下。

4. HTTP / HTTPS

现在是Web的天下了,搞懂HTTP,HTTPS走遍天下都不怕。

可以参考之前我的文章:

一篇文章让你彻底弄懂SSL/TLS协议

5. 设计模式

设计模式可以说是大神和小工的分界线,各种设计模式信手拈来才能成为设计专家。

当然这里不是要你死记硬背,关键是合理应用。

6. 计算机原理

知道计算机是怎么工作的很重要,你的代码,程序怎么转换成计算机可以懂的语言,CPU的调度原理,内存工作原理等等。

java学习之路

有了上面的基础,终于我们可以开始讲java的学习之路了。

1.1 开发工具

工欲善其事,必先利其器。有了好的工具可以有效的提升开发效率。Eclipse和IDEA当然是IDE的首选。

2020年,5个你不能不知道的java IDE神器

1.2 构建工具

maven和Gradle是java构建工具的不三之选,这两个优选一个。ANT是之前的构建工具,不需要详细掌握,了解即可。

1.3 虚拟化工具

Docker的横空出世,打造了一个新的虚拟化时代,凭借其优异的性能和资源占用率,Docker赢得了很多企业的喜爱,Docker一定要学。有了docker接下来使用Kubernetes(K8S)来做管理则是水到渠成。

1.4 CI工具

Jenkins是CI的很好的工具。

2. JDK

JDK的熟练程度直接关系到能不能写出好的代码,接下来我们详细来看。

2.1 Java Collections

集合类是在任何程序中都要使用到的类型,这几个是你必须要熟悉的 ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet。熟悉使用熟悉其实现原理。下面是我整理和写过的关于Java集合的相关文章:

2.2 Java并发和多线程

java中多线程和并发是一个非常重要的话题,concurrency包里面提供了诸多非常有用的同步类:CyclicBarrier,CountDownLatch,Semaphore等等。

concurrency包下面的Locks和Atomic提供了一些新的锁的实现。深入了解这些内容可以更好的理解多线程环境中资源的使用。

Thread和Thread Pool是多线程的基础,需要深入理解和应用。

Java并发和多线程的文章如下:

2.3 Java 8-15的新特性

Java 8引入了太多太多新的有用的东西,像Lambda,Stream API, Date Time API等待。Java 8引入的函数式编程直接改变了以往的编程习惯。

JDK8

当然java 8只是最低的要求,java已经出到了13了,如果有能力的话可以学习Java 9 到 Java 13的新特性: Modules, var for local variables, static factory methods for collections等等。

JDK9

JDK10

JDK11

JDK12

JDK13

JDK14

JDK15

2.4 Java IO

java.io和java.nio是Java中处理IO的两个包,IO是非常重要的,处理文件读写,包括网络数据流的读写都需要使用到IO。

我们需要掌握java.io包中的File, InputStream, OutputStream, Reader, Writer。

还需要掌握java.nio包中的ByteBuffer, FileChannel, Selector等。

2.5 深入理解JVM

JVM分析工具系列:

小师妹学JVM系列:

如果想做大型java项目,框架是少不了的,使用框架可以节省开发时间,提升开发效率。

3.1 Spring

java框架最最最流行的就是Spring了。可以说Spring统治了java的大部分江山。说起来Spring还是以EJB的替代品出现的,它摆脱了EJB的复杂性,通过使用AOP和IOC,提供了轻便的可配置的容器,赢得了大片市场。最新的Spring版本是5.*。

除了Spring Core,Spring MVC目前的市场份额也越来越大。做好web开发Spring MVC也是必不可少的。

Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新

3.2 Spring Boot

虽然Spring简化了EJB,但是还是需要诸多的配置文件,而Spring Boot的出现大大的减少了配置文件的编写。

要问什么框架开发最快最靠谱,Spring Boot肯定要占一席之地。

Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新

3.3 Netty & Mina

Netty & Mina是两个NIO框架,其最本质的就是异步的IO,和普通IO最大的区别就是提升效率节约时间。

Spring 5最新引入的Spring Web Reactive就是基于Netty实现的。

3.4 ORM

ORM框架的使用方便我们对数据库的操作,Hibernate和Mybatis是两个ORM框架的优秀选手。但是据我了解好像国内使用Mybatis的偏多,国外更倾向使用Hibernate。

为什么呢?我的理解Hibernate是JPA的一种实现,更加的标准。

3.5 微服务

这年头如果你不提微服务好像就低人一等。不用怕,Spring特意为我们准备了微服务全家桶Spring Cloud。

并不是所有的服务都需要微服务,微服务也不是越多越好,看项目,看情况,看心情!

4. 测试框架

很多朋友可能喜欢写代码,不喜欢写测试。也有的朋友觉得测试是测试人员做的,跟开发人员没关系。

但是测试真的非常重要,从单元测试到end to end测试到集成测试,我们一直都在路上。

单元测试的几个框架Junit,Mockito,PowerMock都是非常优秀的框架,值得每个java程序员掌握。

其他的可以学习一下Selenium和Cucumber,作为end to end测试,Selenium配合headless chrome,真的不要太爽。

5. 实用库

很多时候JDK并没有提供太多的实用库,这时候我们需要借助于第三方的力量。

有很多第三方库都非常优秀,比如google的Guava,Apache的commons包,处理JSON的Jackson JSON,处理日志的Log4J,Slf4j等,都是我们日常所常用的。

Keep learning

最后,想告诉大家的是要Keep learning,技术革新变化非常快,只有一直学习,才能不掉队不落后,学到老,活到老。希望各个朋友都能一步一个脚印的找到自己的路。毕竟知识没有捷径可走。

大家有感兴趣的技术路线可以回复本文留言给我,我会尽量丰富这个技术路线图,谢谢大家!

最后,感兴趣的朋友可以我点个关注!

The END!

本文作者:flydean程序那些事

本文链接:www.flydean.com

本文来源:flydean的博客

欢迎关注我的公众号:程序那些事,更多精彩等着您!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK