为什么建议你要学Java虚拟机?
Posted 玉刚说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么建议你要学Java虚拟机?相关的知识,希望对你有一定的参考价值。
本文是一篇推广,文中的
“我”
不是指我本人。但抛开推广不说,我依然认为JVM
是每个人都需要了解的,JVM也是面试中的热点,所以我愿意把这门课程分享给大家。
前不久我参加了一个国外程序员的讲座,讲座的副标题很有趣,叫做“我如何学会停止恐惧,并且爱上Java虚拟机”。
为什么会有恐惧这一说?因为所有恐惧来源都一样,源于不了解。
曾经的我经常害怕处理与JVM相关的异常,对JVM的配置参数也一无所知,那个时候我天真地认为,JVM的出现本身就是想让程序员屏蔽实现细节,作为一名普通的开发,我们完全没有必要了解内在构造,只要记住一些简单的规则足矣。
随着工作的深入,我开始接触到JVM的实现原理,驾轻就熟之后,我发现自己看到了一片更为广阔的天地。简而言之,当我再遇到问题时,我也能够更加快速和系统地思考问题的性质,并快速做出判断。同时,学习新的编程语言时,我也可以从“同理心”的角度思考为什么作者要这样设计,他的用意何在。基于这些思考和分析,我也能够快速看到事情的本质,跑得更快,走得更远。
所以,在尽情享受Java虚拟机带来好处的同时,我们还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉JVM,你才能在遇到OutOfMemory等异常时,不会束手无策,不会一脸懵逼的上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。
但,在我7年的学习工作生涯中,我拜读过许多大神关于Java虚拟机的技术博客,在受益匪浅的同时,我发觉不少文章的门槛都比较高,而且过分注重实现细节,这并不是大多数的开发人员可以受益的调优方案。这么一来,许多原本对Java虚拟机感兴趣的同学, 也因为过高的门槛,以及短时间内看不到的收益,而放弃了对Java虚拟机的学习。
这是我非常不想看到的。在收到极客时间的邀请后,我决定挑战一下Java虚拟机的科普工作,于是有了这个专栏:《深入拆解Java虚拟机》。在这个专栏里,我会用简单通俗的语言,来介绍Java虚拟机的实现。具体到每篇文章,我将采用一个贯穿全文的案例来阐述知识点,并且给出相应的分析建议。在文章的末尾,我还将附上一个动手实践的环节,帮助你巩固对知识点的理解。
我是谁?
我是郑雨迪,是甲骨文实验室(Oracle Labs)的高级研究员,主要负责研究如何通过程序分析技术以及动态编译技术让程序语言跑得更快。我是全栈虚拟机Graal编译器的核心开发者之一,也在为HotSpot虚拟机项目添砖加瓦。
这里顺便说明一下,Graal编译器是Java 10正式引入的实验性即时编译器,在国内同行口中被称为“甲骨文黑科技”。其实,我们的工作同样也是分析应用程序的性能瓶颈,寻找优化空间,只不过我们的优化方式对自动化、通用性有更高的要求。因此,我来讲Java虚拟机,可以为你提供一些深入的、独特的视角,让你更能洞察Java虚拟机的核心。
加入甲骨文之前,我在瑞士卢加诺大学攻读博士学位,研究如何更加精准地监控Java程序,以便做出更具针对性的优化。比如,我研究过JVM监控工具的“observer effect”,并提出一套针对动态编译的解决方案。这些研究工作均已发表在程序语言方向的顶级会议上,并获得了不少同行的认可。
课程介绍
我的整个专栏将分为四大模块。
基本原理:剖析Java虚拟机的运行机制,逐一介绍Java虚拟机的设计决策以及工程实现;
高效实现:探索Java编译器,以及内嵌于Java虚拟机中的即时编译器,帮助你更好地理解Java语言特性,继而写出简洁高效的代码;
代码优化:介绍如何利用工具定位并解决代码中的问题,以及在已有工具不适用的情况下,如何打造专属轮子;
虚拟机黑科技:介绍甲骨文实验室近年来的前沿工作之一GraalVM。包括如何在JVM上高效运行其他语言;如何混搭这些语言,实现Polyglot;如何将这些语言事前编译(Ahead-Of-Time,AOT)成机器指令,单独运行甚至嵌入至数据库中运行。
这是郑雨迪原创的JVM知识图谱,可以看看
订阅福利
福利一:限时优惠价¥45,原价¥68,7 月 28 日恢复原价
福利二:每邀请一位好友购买,你可获得 18 元现金返现,多邀多得,上不封顶,立即提现(提现流程:极客时间 App - 我的 - 分享有赏)
扫我的海报即可订阅
以上是关于为什么建议你要学Java虚拟机?的主要内容,如果未能解决你的问题,请参考以下文章