java做为第一大编程语言,可谓源远流长,一代又一代的java程序员前仆后继走在java学习的路上。java程序员的学习之路在2020年又有什么变化呢?本文详细附上了每个部分所需知识的教程连接地址,并会持续更新,但愿可以和你们一块儿进步!java
先上图:react
上面的RoadMap图中列出了做为一个java程序员须要掌握的技术路线,全部技术都懂那固然很是好,若是还没掌握也不要紧,just keep learning!git
做为程序员固然是有门槛的,这个门槛就是所须要掌握的基础知识,写好了程序不只要知其然,更要知其因此然。这样才能在写程序的过程当中,透过现象看到本质,从本质上提高写代码的功力。程序员
Github做为全球最大的同性交友平台,是个程序员都应该知道。做为开源风潮的托管平台,GitHub上面有大量的优秀开源项目,若是有需能够从GitHub上面借用各类项目,没有须要也能够去读读上面的代码,提高下写做水平。web
Git做为优秀的版本管理工具,相信绝大多数公司都在使用,那么掌握Git的命令和使用就是很是重要了。更为重要的是,Git经过git flow带给咱们了代码管理的新思路。算法
不少程序员用惯了windows可能对Linux并不熟悉,可是你们要知道绝大多数的服务器都是部署在Linux上面的,不懂Linux就说本身懂编程,岂不是很搞笑?连本身写出来的代码运行的平台都不了解,怎么能够。即便不是运维专员,本身部署程序也要会的,部署中须要注意的问题确定要关注,至于Linux的基本命令那更是要100%掌握。chrome
若是只是使用java中的库,那么至少array, linked list, hash table, binary tree, queue, stack, graph这些基本的数据结构是须要掌握的。docker
若是你想更深刻一些Trie, B-Tree, AVL tree等等能够了解一下。数据库
如今是Web的天下了,搞懂HTTP,HTTPS走遍天下都不怕。编程
能够参考以前个人文章:
设计模式能够说是大神和小工的分界线,各类设计模式信手拈来才能成为设计专家。
固然这里不是要你死记硬背,关键是合理应用。
知道计算机是怎么工做的很重要,你的代码,程序怎么转换成计算机能够懂的语言,CPU的调度原理,内存工做原理等等。
有了上面的基础,终于咱们能够开始讲java的学习之路了。
工欲善其事,必先利其器。有了好的工具能够有效的提高开发效率。Eclipse和IDEA固然是IDE的首选。
maven和Gradle是java构建工具的不三之选,这两个优选一个。ANT是以前的构建工具,不须要详细掌握,了解便可。
Docker的横空出世,打造了一个新的虚拟化时代,凭借其优异的性能和资源占用率,Docker赢得了不少企业的喜好,Docker必定要学。有了docker接下来使用Kubernetes(K8S)来作管理则是水到渠成。
Jenkins是CI的很好的工具。
JDK的熟练程度直接关系到能不能写出好的代码,接下来咱们详细来看。
集合类是在任何程序中都要使用到的类型,这几个是你必需要熟悉的 ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet。熟悉使用熟悉其实现原理。下面是我整理和写过的关于Java集合的相关文章:
java中多线程和并发是一个很是重要的话题,concurrency包里面提供了诸多很是有用的同步类:CyclicBarrier,CountDownLatch,Semaphore等等。
concurrency包下面的Locks和Atomic提供了一些新的锁的实现。深刻了解这些内容能够更好的理解多线程环境中资源的使用。
Thread和Thread Pool是多线程的基础,须要深刻理解和应用。
Java并发和多线程的文章以下:
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
java.io和java.nio是Java中处理IO的两个包,IO是很是重要的,处理文件读写,包括网络数据流的读写都须要使用到IO。
咱们须要掌握java.io包中的File, InputStream, OutputStream, Reader, Writer。
还须要掌握java.nio包中的ByteBuffer, FileChannel, Selector等。
待续...
若是想作大型java项目,框架是少不了的,使用框架能够节省开发时间,提高开发效率。
java框架最最最流行的就是Spring了。能够说Spring统治了java的大部分江山。提及来Spring仍是以EJB的替代品出现的,它摆脱了EJB的复杂性,经过使用AOP和IOC,提供了轻便的可配置的容器,赢得了大片市场。最新的Spring版本是5.*。
除了Spring Core,Spring MVC目前的市场份额也愈来愈大。作好web开发Spring MVC也是必不可少的。
Spring 5.X系列教程:知足你对Spring5的一切想象-持续更新
虽然Spring简化了EJB,可是仍是须要诸多的配置文件,而Spring Boot的出现大大的减小了配置文件的编写。
要问什么框架开发最快最靠谱,Spring Boot确定要占一席之地。
Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
Netty & Mina是两个NIO框架,其最本质的就是异步的IO,和普通IO最大的区别就是提高效率节约时间。
Spring 5最新引入的Spring Web Reactive就是基于Netty实现的。
待续...
ORM框架的使用方便咱们对数据库的操做,Hibernate和Mybatis是两个ORM框架的优秀选手。可是据我了解好像国内使用Mybatis的偏多,国外更倾向使用Hibernate。
为何呢?个人理解Hibernate是JPA的一种实现,更加的标准。
这年头若是你不提微服务好像就低人一等。不用怕,Spring特地为咱们准备了微服务全家桶Spring Cloud。
并非全部的服务都须要微服务,微服务也不是越多越好,看项目,看状况,看心情!
待续...
不少朋友可能喜欢写代码,不喜欢写测试。也有的朋友以为测试是测试人员作的,跟开发人员不要紧。
可是测试真的很是重要,从单元测试到end to end测试到集成测试,咱们一直都在路上。
单元测试的几个框架Junit,Mockito,PowerMock都是很是优秀的框架,值得每一个java程序员掌握。
其余的能够学习一下Selenium和Cucumber,做为end to end测试,Selenium配合headless chrome,真的不要太爽。
不少时候JDK并无提供太多的实用库,这时候咱们须要借助于第三方的力量。
有不少第三方库都很是优秀,好比google的Guava,Apache的commons包,处理JSON的Jackson JSON,处理日志的Log4J,Slf4j等,都是咱们平常所经常使用的。
最后,想告诉你们的是要Keep learning,技术革新变化很是快,只有一直学习,才能不掉队不落后,学到老,活到老。但愿各个朋友都能一步一个脚印的找到本身的路。毕竟知识没有捷径可走。
你们有感兴趣的技术路线能够回复本文留言给我,我会尽可能丰富这个技术路线图,谢谢你们!
最后,感兴趣的朋友能够我点个关注!
The END!
本文做者:flydean程序那些事
本文连接:www.flydean.com
本文来源:flydean的博客
欢迎关注个人公众号:程序那些事,更多精彩等着您!