系统学Java底层源码,包括Spring等组件的源码,是大多数Java初学者都会缴的智商税。看似有效但实则无用,为什么这样说呢?
1 初级开发做的是增删改查,没必要了解底层,了解了对开发帮助也不大。
2 中级开发要求的是熟悉业务,能排查大多数问题,这时也无需系统学习底层技能。
3 架构师确实要熟悉各种分布式组件或Java组件的底层,但程序员先得升级到架构,才有必要去掌握底层技能。
4 底层源码技能唯一的用处是面试,java程序员可以通过准备和说明底层技能在面试中充分展示技能,但这无需系统学习,在面试前顶多用两三周时间死记硬背即可。
也就是说,深入研究源码应该是水到渠成,勉强不得。比如在你项目中,感觉有必要通过阅读源码区解决spring boot或并发或组件层面的问题时,这时深如源码是必要的,而且还需要通过debug的方式调试源码。
但如果平时只是做增删改查,或者涉及到的技术不深,这个时候去看源码,大概率是前看后往,而且是没有方向去看。但是,如果在面试中,能结合源码去说自己解决过的资深问题,这绝对是个加分项。比如能力一般的java程序员,真可以通过此类方法去挑战更高级别的职位。
先说下,什么是Java的底层?在写代码时总要通过import语句引入所用的包,底层就包含在这些引入的jar包里,从这些jar包里,能看到各种底层源码。
1 针对Java核心库,比如HashMap,ArrayList或ConcurrentHashMap,或者是多线程锁相关的,底层源码是包含在JDK1.11的库里,比如是上述类的实现细节代码。
2 针对Spring Boot或Spring MVC,比如日常说的,Bean加载生命周期,Spring boot启动或装载模式,能从底层么里看到。
3 针对分布式组件,比如dubbo或netty或Spring Cloud alibaba里的诸多组件,底层是指在对应jar包里的代码或配置等实现细节。