JDK是Java语言的软件开发工具包,没有它就无法编译Java程序。目前,有许许多多的JDK工具呈现在大家面前,但最常用的莫过于java.x、javac.x、jar等。除了这几个,还有哪些呢?本文作者Jo拥有多年的Java开发经验,其在博客上分享了一篇文章:5JDKToolsEvryJavaDvloprShouldKnow,笔者对其进行了编译,以下为译文。
目前,有许多工具可以绑定到JavaJDK上面,其中java.x和javac.x是每位Java工程师的必备武器,与此同时,还有许多其它JavaJDK工具呈现在大家眼前。大多数Java程序员都没有使用过这些工具,但如果使用,它们会让你的工作事半功倍。
在之前的教程中,我曾介绍过这些工具。现在,我向大家介绍其中最重要的5个工具。
1.javap
javap是一个Java类文件反汇编程序,可以查看Java编译器生成的字节码,是分析代码的一个好工具。让我们用javap来编译这段HlloWorld代码,再分解它。
publicclassHlloWorld{
publicstaticvoidmain(String...args){
Systm.out.println(HlloWorld!);
}
}
C:\Usrs\Cycl\DsktopjavapHlloWorld
我没有传递任何参数,只是运行了javap这个工具,就得到了上面这个结果。默认情况下,它会输出Java类的packag,protctd,public字段和方法。
CompildfromHlloWorld.java
publicclassHlloWorld{
publicHlloWorld();
publicstaticvoidmain(java.lang.String...);
}
C:\Usrs\Cycl\Dsktopjavap-cHlloWorld
如果传递参数-c到javap里面,便会得到上面这个结果。这是一条非常好的信息,这样输出的指令可以帮助我们更好地了解JVM。
CompildfromHlloWorld.java
publicclassHlloWorld{
publicHlloWorld();
Cod:
0:aload_0
1:invokspcial#1//Mthodjava/lang/Objct.:()V
4:rturn
publicstaticvoidmain(java.lang.String...);
Cod:
0:gtstatic#2//Fildjava/lang/Systm.out:Ljava/io/PrintStram;
3:ldc#3//StringHlloWorld!
5:invokvirtual#4//Mthodjava/io/PrintStram.println:(Ljava/lang/String;)V
8:rturn
}
2.jvisualvm
jvisualvm是一个Java虚拟机监控和分析工具,该工具提供了一个图形界面窗口,并且可以直观的了解Java应用程序的运行时信息。jvisualvm集成了许多工具,比如像jmp、jinfo、jstat、jstack、JConsol等。自从JDK6Updat7以后已经作为JDK的一部分。
在Java垃圾回收监控和分析这篇文章中,我曾使用jvisualvm,大家不妨过去看看jvisualvm的使用方法。
3.jcmd
jcmd主要用来把诊断命令请求发送到JavaJVM中,当JVM进程中没有jcmd参数列表时,jcmd就会立即运行。这相当于jps工具,我开始启动jconsol,并且把它作为参数传递到jcmd,得到如下结果,这个也可以通过进程id(pid)实现。
C:\Usrs\Cycljconsol
C:\Usrs\CycljcmdJConsolhlp
: