Java基础怎么样才算牢固,能熟练使用还是深入源码?

java就是一门工具

本质上跟你开的车没什么区别

java的熟练程度,就犹如你的驾驶技术

本质上就是工具操作的熟练度

对于工具的操作而言,绝大多数人,会用就行了

源码基本上没有深入的必要

因为对于绝大多数程序员以及非程序员而言,这个轮不到你去做

开发java的jdk那些东西,人满为患,多的是人在做这事

这个领域,并不缺人

而且有的是各种乱七八糟的企业,在给openjdk贡献,也就是修bugs什么的

这是jdk从11到18的各个企业的贡献列表,你可以看到,上面什么乱七八糟的企业都有

国外大厂尤其多,什么google,ibm,red hat,sap这些,全都在这上面,甚至intel,amd什么

所以各位,尤其是那些身在国内,连phd都没读下来的同学,千万不要自我感动啊

java不缺任何人,世界非常大,jdk的发展有的是人在干这事

搞技术的经常会有种误解,误以为,你不做,这事就不发展了

但其实你真的懂的话,就应该知道,jdk这么大的东西,全球几十亿设备在用的工具

怎么可能会因为某一个技术员不搞了,它就不运转了

对不对?

这就好像泰坦尼克的铲煤工人,以为自己不铲煤了,泰坦尼克就不运转了

肿么可能

一个道理

所以对于java而言,能熟练使用,就足够了

深入源码,完全没有必要,我说的是在起步阶段

当然可能随着你在某个组织的发展,掌握了越来越多的社会资源,你有足够的资源了,可以开始贡献这种东西了,那时候,你再去看源码,再去参与这些全球性项目的合作,也不迟

当然,一个比较合理的参与方式就是

你先把phd给读了,最少master吧,最好在国外读

为什么呢?

因为下一代jdk,也就是graal,在全球范围内,招实习生

这个本质上就是java的自举,用java来实现jdk,来替换以前用c++实现的代码

这个项目可以追溯到99年,也就是做了20多年,sun发布jdk 1.2开始,就在尝试自举了

jdk作为编译器,分为前端和后端嘛,前端就是javac,那个已经完全用java实现了,当然用c做了一个wrapper,但是核心全部都是java代码

后端也就是jit,以及包含有jit的jvm,这个现在还是c++写的

那graal的出发点就是,用java实现jit,以及jvm

这个在jep里面,叫做jvmci,直接替换c++写的c1/c2[1]

那将来,java肯定会走向自举,实际上现在这个迹象已经非常明显了

openjdk主要是一些老头子在搞,你看openjdk几个project的team lead,全部都在50多岁,甚至更老,很多是从sun时代起,就在搞java的工程师

但是graal呢,是一个sun当年的实习生,在做,这个team lead现在才30多岁,比很多知乎上的老程序员还要小

这个人,代表着将来,因为openjdk那些老c++程序员,再干几年就退休了

实际上现在像red hat(看上面各个公司的贡献数量,red hat毫无疑问是第二把交椅)等企业,对于graal的兴趣,远远大于openjdk

因为java代码,写起来,就是比c++代码简单啊

维护成本也要低很多

c++写的openjdk,一年发两个版本,两年一个lts
java写的graal,一年发四个版本,一年一个lts

你说哪个开发速度快?

所以graal在将来,一定会替换掉openjdk,而且graal的功能还更多,比如能够aot,能够编译成机器码,这个就是目前jvm还做不到的,当然有一个project leyden,但是目前看,project leyden很有可能用graal做,而不是用c++写,因为graal的native image已经得到了比较广泛的应用

你可以看到,netty,vert.x,spring,micronaut,heliden等java项目,几乎都在往native image上转,几乎都可以做native image,老外都在这么干,为什么不嘛

将来就算project leyden启动,大概率,也还是会用graal,而不是用c++去写,因为graal在这一块,已经领先很多年了

所以,如果你真要参与java的研发

你最好的介入点,应该是graal,而不是openjdk的那些c++源码

那些东西,将来还能用多久,不知道的,因为替代品已经出现

性能更好,graal jit哪怕不做任何调整,直接替换openjdk里面的c2,都能有显著提升

这个你可以在网络上找到n多老外的benchmark

直接上google了

简单翻译就是,无论从哪一方面看,graal都明显优于jdk里面的jvm里面的jit编译器,也就是c2

所以如果你有志于此,最好的方式

就是把你的本科的成绩好好提一提,拿出一个比较漂亮的gpa

然后把gre和托福考掉,然后申请到国外大学的奖学金,攻读phd,也就是博士学位

graal本身就是一个科研项目,有提供这方面的奖学金,链接在前面

如果你做不到

那你算了吧,你深入个p源码,别自我感动了,你会用就行了,没有人指望你去懂什么java源码

你懂了也没用

当然,话说回来,这里不考虑面试时候有人故意问这些问题

那这种东西,我建议你背一背,你知道这些没啥用的知识只是用来应付面试就好了

就像java面试很喜欢问的jvm调优技巧,如何tune cms gc

现在cms都被删掉了

但是那些老技术员,只懂这些老旧技术,那你要给他点面子,要不然面试不让你过

你可能感兴趣的:(java,开发语言,面试)