我們平常對java程序進行問題排查桶良、性能調(diào)優(yōu)時硅确,如果沒有合適的工具目溉,很多時候會事倍功半,甚至無法繼續(xù)進行下去菱农。其實缭付,jdk自身已經(jīng)提供了很多強大的工具供我們使用。本文就對這些工具做一個概覽性的描述循未。
JDK版本:
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
JAVA_HOME/bin下的工具截圖如下:
appletviewer: 用于運行并瀏覽applet小程序陷猫。
extcheck: 擴展檢測工具,主要用于檢測指定jar文件與當(dāng)前已安裝的Java SDK擴展之間是否存在版本沖突的妖。
idlj: IDL轉(zhuǎn)Java編譯器(IDL-to-Java Compiler)绣檬,用于為指定的IDL文件生成Java綁定。IDL意即接口定義語言(Interface Definition Language)嫂粟。
jar: jar文件管理工具娇未,主要用于打包壓縮、解壓jar文件星虹。
jarsigner: jar密匙簽名工具零抬。
java: Java運行工具,用于運行.class字節(jié)碼文件或.jar文件宽涌。
javac: Java編譯工具(Java Compiler)平夜,用于編譯Java源代碼文件。
javadoc: Java文檔工具卸亮,主要用于根據(jù)Java源代碼中的注釋信息生成HTML格式的API幫助文檔忽妒。
javafxpackager: JavaFX包裝器,用于執(zhí)行與封裝或簽名JavaFX應(yīng)用有關(guān)的任務(wù)。JDK 8u20已經(jīng)遷移此工具到j(luò)avapackager段直。
javah: Java頭文件工具吃溅,用于根據(jù)Java類生成C/C++頭文件和源文件(主要用于JNI開發(fā)領(lǐng)域)。
javap: Java反編譯工具鸯檬,主要用于根據(jù)Java字節(jié)碼文件反匯編為Java源代碼文件罕偎。
javapackager: 執(zhí)行針對Java應(yīng)用程序和JavaFX應(yīng)用程序的打包和簽名的任務(wù)。包含了javafxpackager的功能京闰。
jcmd: Java 命令行(Java Command)颜及,用于向正在運行的JVM發(fā)送診斷命令請求。
jconsole: 圖形化用戶界面的監(jiān)測工具蹂楣,主要用于監(jiān)測并顯示運行于Java平臺上的應(yīng)用程序的性能和資源占用等信息俏站。
jdeps: 用于分析Java class的依賴關(guān)系.
jdb: Java調(diào)試工具(Java Debugger),主要用于對Java應(yīng)用進行斷點調(diào)試痊土。
jhat: Java堆分析工具(Java Heap Analysis Tool)肄扎,用于分析Java堆內(nèi)存中的對象信息。
jinfo: Java配置信息工具(Java Configuration Information)赁酝,用于打印指定Java進程犯祠、核心文件或遠程調(diào)試服務(wù)器的配置信息。
jjs: 對Nashorn引擎的調(diào)用酌呆。Nashorn是基于Java實現(xiàn)一個輕量級高性能的JavaScript運行環(huán)境衡载。
jmap: Java內(nèi)存映射工具(Java Memory Map),主要用于打印指定Java進程隙袁、核心文件或遠程調(diào)試服務(wù)器的共享對象內(nèi)存映射或堆內(nèi)存細節(jié)痰娱。
jmc: Java任務(wù)控制工具(Java Mission Control),主要用于HotSpot JVM的生產(chǎn)時間監(jiān)測菩收、分析梨睁、診斷。開發(fā)者可以使用jmc命令來創(chuàng)建JMC工具娜饵。https://docs.oracle.com/javacomponents/jmc-5-5/jmc-user-guide/toc.htm
jps: JVM進程狀態(tài)工具(JVM Process Status Tool)坡贺,用于顯示目標(biāo)系統(tǒng)上的HotSpot JVM的Java進程信息。
jrunscript: Java命令行腳本外殼工具(command line script shell)箱舞,主要用于解釋執(zhí)行javascript遍坟、groovy、ruby等腳本語言褐缠。
jsadebugd: Java可用性代理調(diào)試守護進程(Java Serviceability Agent Debug Daemon)政鼠,主要用于附加到指定的Java進程风瘦、核心文件队魏,或充當(dāng)一個調(diào)試服務(wù)器。
jstack: Java堆棧跟蹤工具,主要用于打印指定Java進程胡桨、核心文件或遠程調(diào)試服務(wù)器的Java線程的堆棧跟蹤信息官帘。
jstat: JVM統(tǒng)計監(jiān)測工具(JVM Statistics Monitoring Tool),主要用于監(jiān)測并顯示JVM的性能統(tǒng)計信息昧谊,包括gc統(tǒng)計信息刽虹。
jstatd: jstatd(VM jstatd Daemon)工具是一個RMI服務(wù)器應(yīng)用,用于監(jiān)測HotSpot JVM的創(chuàng)建和終止呢诬,并提供一個接口涌哲,允許遠程監(jiān)測工具附加到運行于本地主機的JVM上。
jvisualvm: JVM監(jiān)測尚镰、故障排除阀圾、分析工具,主要以圖形化界面的方式提供運行于指定虛擬機的Java應(yīng)用程序的詳細信息狗唉。
keytool: 密鑰和證書管理工具初烘,主要用于密鑰和證書的創(chuàng)建、修改分俯、刪除等肾筐。主要用于獲取或緩存Kerberos協(xié)議的票據(jù)授權(quán)票據(jù)。允許用戶查看本地憑據(jù)緩存和密鑰表中的條目(用于Kerberos協(xié)議)缸剪。Kerberos密鑰表管理工具吗铐,允許用戶管理存儲于本地密鑰表中的主要名稱和服務(wù)密鑰。
native2ascii: 本地編碼到ASCII編碼的轉(zhuǎn)換器(Native-to-ASCII Converter)杏节,用于”任意受支持的字符編碼”和與之對應(yīng)的”ASCII編碼和(或)Unicode轉(zhuǎn)義”之間的相互轉(zhuǎn)換抓歼。
orbd: 對象請求代理守護進程(Object Request Broker Daemon),它使客戶端能夠透明地定位和調(diào)用位于CORBA環(huán)境的服務(wù)器上的持久對象拢锹。
pack200: JAR文件打包壓縮工具谣妻,它可以利用Java類特有的結(jié)構(gòu),對普通JAR文件進行高效壓縮卒稳,以便于能夠更快地進行網(wǎng)絡(luò)傳輸蹋半。這是微軟提供的對象包裝程序,用于對象安裝包充坑。
policytool: 策略工具减江,用于管理用戶策略文件(.java.policy)。
rmic: Java RMI 編譯器捻爷,為使用JRMP或IIOP協(xié)議的遠程對象生成stub辈灼、skeleton、和tie類也榄,也用于生成OMG IDL巡莹。
rmid: Java RMI 激活系統(tǒng)守護進程司志,rmid啟動激活系統(tǒng)守護進程,允許在虛擬機中注冊或激活對象降宅。
rmiregistry: Java 遠程對象注冊表骂远,用于在當(dāng)前主機的指定端口上創(chuàng)建并啟動一個遠程對象注冊表。
schemagen: XML schema生成器腰根,用于生成XML schema文件激才。
serialver: 序列版本命令,用于生成并返回serialVersionUID额嘿。
servertool: Java IDL 服務(wù)器工具瘸恼,用于注冊、取消注冊册养、啟動和終止持久化的服務(wù)器钞脂。
tnameserv: Java IDL瞬時命名服務(wù)。
unpack200: JAR文件解壓工具捕儒,將一個由pack200打包的文件解壓提取為JAR文件冰啃。
wsgen: XML Web Service 2.0的Java API,生成用于JAX-WS Web Service的JAX-WS便攜式產(chǎn)物刘莹。
wsimport: XML Web Service 2.0的Java API阎毅,主要用于根據(jù)服務(wù)端發(fā)布的wsdl文件生成客戶端存根及框架
xjc: 主要用于根據(jù)XML schema文件生成對應(yīng)的Java類。