这个JDK自带的有趣工具,你知道吗?

良心公众号

关注不迷路

01

JVM、JRE与JVM三者之间的关系

在日常工作中,我们经常用到各种JDK自带的工具,这些工具短小精悍,通过它们我们可以轻松的完成任务,定位问题。然而,对于很多缺乏实战经验的小白来说,甚至分不清楚最基本的JDK和JRE以及JVM之间的关系。因此,在开始总结这些实用工具之前,我们先简单介绍一下JDK、JRE和JVM以及三者之间的关系:

  • JVM(Java Virtual Machine):Java虚拟机,你懂的

  • JRE(Java Runtime Environment):Java运行时环境,面向的是普通用户

  • JDK(Java Development Kit):Java软件开发工具包,面向的是程序开发者

至于三者之间的关系,其实很简单。一句话总结:JDK包含JRE,JRE包含JVM。如下图所示:

然而,细心的小伙伴可能发现了,自JDK9开始,在JDK中已经看不到JRE的影子了。这是为什么呢?因为随着虚拟化容器化微服务化的普及和流行,JDK8及之前所携带的JRE,作为一个放之四海而皆准的运行时环境,显得过于臃肿。而也正是从JDK9开始,引入了module system的概念,开发者可以通过jlink自定义运行时环境(myJRE),从而大大提高了横向扩展能力和部署效率。

到此为止,我们对JDK,JRE,JVM及三者之间的关系有了一个比较清晰的认识。上文提到,JDK是Java软件开发工具包,面向的是程序开发者,自然也就会自带很多对程序开发者非常有用的工具。

02

JDK11自带的工具

不同版本的JDK自带的工具会有细微的差别,我们以JDK11为例,来看一下其自带的工具列表:

上面这张图中的内容,有很多我们日常开发过程中经常打交道的老朋友,也有一些之前没怎么接触的新朋友,利用好这些优秀的小工具,我们能够更快地定位和解决问题,说不定还能提前下班……

03

什么是jaotc

今天,我们来聊一聊上面这张图中的第一个小工具:jaotc

如果你用的是JDK8版本,你会发现并没有这个工具。事实上,jaotc是在JDK9才被加入进来的。那么jaotc到底有什么作用呢?通过工具名字的jaotc,我们可以看出一些端倪,j很明显指的是java,c指的是compile,那么aot指的是啥呢?

这个就非常有意思了,在介绍aot之前,我们先来了解一下JIT,这会对理解aot有所帮助。什么是JIT呢?众所周知,Java程序是通过解释器进行解释执行的。然而,为了提高效率,在HotSpot(一种时下主流的JVM实现)中对其进行了优化。当JVM发现某个方法或代码块的运行比较频繁时,就会将这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,JVM会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器,也就是上文提到的JIT(Just In Time)编译器。

大体介绍了JIT之后,我们将话题回到aot本身。关注Java新特性的小伙伴可能有所了解,自JDK9开始,Java引入了aot编译方式,这种编译方式是将class文件直接编译成可执行的二进制文件

aot的编译方式,一定程度上可以减少JIT的预热时间,从而缓解Java应用程序第一次启动慢的问题。这对于提升服务重启场景下的可用性,是很有意义的。

在了解了aot的基本功能之后,接下来,我们来看一下jaotc的具体操作。这个时候,就需要用到万能的help命令了!当面对一个不熟悉的工具,最简单有效的方式就是“求助”,我们通过jaotc -h命令,来看一下jaotc的官方阐述:

通过上面这张图,我们可以查看jaotc的使用场景和具体操作,usage阐述了工具的用途,where options include列举了具体的操作。没错,我们只需要通过一条简短的jaotc -h命令,就对这个陌生的小工具的操作及其用途有了一个比较全面的认识。这在一定程度上说明,查看官方文档往往要比求助搜索引擎更为简捷有效。

因此,需要在心中埋下一个意识,在面对自己不熟悉的技术或者工具时,查看官方文档不失为一个明智的选择,对于习惯求助搜索引擎的小伙伴,如果能做出这样一个转变,对后续的成长是会有潜移默化的帮助的。因为官方文档称得上是第一手资料,阅读第一手资料有助于对其有一个更为系统的认识,还可以减少踩坑,当然,如果有条件,源码才是真正的第一手资料。

今天关于JDK自带的小工具jaotc的总结就到这里了。

欢迎大家一起讨论技术,共同成长!


学习 | 工作 | 分享

????长按关注“有理想的菜鸡

只有你想不到,没有你学不到

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值