jvm15版本源码阅读之总结


  对于怎么总结jvm15的这个版本的源码,确实需要从大的方面着手思考.
  首先就需要从使用者的角度来审视,毕竟jvm作为一款软件类产品,能被多数发开者所接受并使用,这里面的一些缘由需要弄清楚.
  其次,源码阅读本身也是多少带有研究或者说挖根刨底性质的工作,在这一过程中源码本身也是会引导阅读者,其设计和结构的实现也会带有明确的指向,其所指向的未来发展趋势也是显而易见的,这一点也要说明白.
  最后,还是要回归到本源,如何对这一发展了二十多年的软件做一个阶段性的总结,未来jvm的发展会给开发者带来哪些方面的启示,这也是不能回避的问题.

1 客观的看待jvm被接受的缘由

  首先,不能说jvm解决了什么问题,如果要说其解决了推广应用的问题,这听起来就非常模棱两可,也是一句两句解释不清的.如果说很多软件在试图解决一些问题,比如大数据相关的软件就在试图解决数据的存储查询计算等方面的问题.那么是否解决了?或者说是否已经处于解决完成的状态?我想应该不是,想要说已解决这些大数据的问题,很难.
  同样,思考jvm成功的缘由也无法确切的说它解决了什么问题,只能说由于它在一些领域有着明显的优点,导致人们更加偏爱而已.

1.1 java,cpp,c和汇编

  jvm的优点有哪些?不同的人看到这个问题会有不同的答案,比如解决了cpp中的类的管理问题,最典型的就是垃圾回收.除此之外,还有很多其它方面的对比,和cpp对比,和c对比,都能得出不同的答案.
  试想一下,如果把jvm的外壳去掉,把类系统概念和GC的概念都使用原本的cpp代码(这在技术上肯定是可行的,因为jvm就是cpp和c写的),此时在功能实现等每个方面都和原来的jvm等同,那么这么改过后还会不会有人使用了?还能不能继续推广了?显然这些问题的答案是否定的,这又是为什么?
  就如c和cpp可以拿来做系统级的开发,那么为什么人们不用汇编来代替它们?道理也是一样的,如果把java领域的应用都改为c和cpp,就如同把linux内核改为汇编来实现,那么就脱离了现实.

1.2 小节

  C对于汇编来说是高级语言,cpp自认比c高明,但在应用领域和java比起来确实有如c和汇编相比的感觉.
  不能说cpp做不了java能做的事,也不能说java就比cpp高明.其实,运行于jvm之上的java和cpp也是伯仲之间,只是应用领域目前发生了很大的不同而已,在这些应用领域,java会比cpp有优势.
  因此可以这么来说,jvm的优点都是在和cpp等在某些方面作一些特定的比较之后得出的,特别是在一些领域内,会放大这些优点,因此导致人们更加倾向于使用jvm,而不是cpp或c,更不是汇编.

2 jvm的发展趋势概述

  首先,jdk目前是以半年为一个发布周期,再过几天jdk16就发布了,从源码中也可以看到一些老的设计在逐步被抛弃,比如垃圾回收的cms已经不存在了.
  其次,jvm的长远目标是通用的虚拟机,graal编译器的1.0版本也已经发布,一些不是java的东西也会进入该虚拟机的范畴,比如python.
  最后,整个源码工程的结构也是为未来添加诸多模块留下了广阔的空间,比如loom模块.未来jvm的功能和涵盖面会越来越广,可以肯定的是其在尽可能的跑马圈地.
  所以可以预见,过去曾经是核心的东西,只会在概念上继续存在下去,比如文件的编译,类系统的构建以及基于栈的字节码执行这些核心概念,但是在实际的实现上则会和之前完全不同,比如引入graal之后,从编译到class文件以及执行都会发生本质的不同.
  Jvm在不断的迭代和发展,这是不争的事实,因此需要对其有一个全面深入的认识和把握.

3 对jvm的认识和把握

  本人喜欢追根溯源,对一些隐藏在外壳之下的东西很感兴趣.这里就试着对jvm做一个合理的定位.

3.1 jvm目前的特点

  首先,jvm的实现是使用cpp编写的,没有固定的格式,只是一套规范而已.而jvm的语言特性就是java,可以称之为一个不同于cpp的新的语言,但本质上还是和cpp有着紧密的联系.
  其次,jvm的发展非常迅速,而且已有二十多年的发展历程,目前没有显示出丝毫的放慢速度的迹象.越来越多的特性和模块系统被加入其中,从体量和深度来说,都达到了非常的程度.
  最后,jvm也有要一统江湖的目的.其在官网的未来规划中也明确提出要整合各种语言,形成大一统的虚拟机系统,各语言间无缝衔接,共同完成不同的功能.

3.2 jvm作为产品的内在发展规律

  Jvm本质上还是一款产品,所以其发展目的也是为使用者服务的,把握这一条对理解其发展规律来说很重要.
  为了更好的服务用户,其必然会做到如下几点:
  1 与时俱进的加入更多能够提升生产效率的模块功能
  2 增加体量的同时进一步降低使用门槛
  3 自动化程度越来越高,越来越向着傻瓜式操作发展
  就如美剧《黑袍纠察队2》里的公司老板在教训祖国人的那段话中所说,“祖国人也不过是公司的产品,是产品就可以替换,只有生产产品的核心要素才是根本”.
  产品可以被替换,那么使用产品的人也会被替换,使用jvm的开发人员当然也会被替换.阅读源码无非就是看看这些根源是什么而已,或许也能获得如何应对被替换的办法.

4 总结

  Jvm在运行时就是一个cpp程序.但是作为一款非常优秀的产品,使用cpp编写,在众多领域有着不可替代的作用.阅读这么一款优秀作品的源码也是一件令人愉悦的事情.从根源上把握jvm的本质,看清其未来发展的方向,能够让开发者在使用时心里有底,也能更好的规划职业生涯.

5 后续规划

  由于jvm本质上就是cpp程序,所以还是从实用的角度,聚焦在排查问题上,准备在这方面做一些解析.
  首先会介绍cpp的一些核心概念,其次会把java的报错和cpp的报错对应起来,然后会介绍这些底层的报错信息,最后会给出关于jvm的查错方法和手段.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值