天天看點

JDK 工具一覽

Java 坑如此大,需要慢慢填。

本文是列出JDK自帶的一些工具,介于篇幅,簡單列出工具清單及工具的作用。至少先做到知道有哪些工具,然後才能在實際中用到。

本文參考了官方介紹和本機man指令的介紹。

1. 标準工具

這些工具都是JDK提供的,通常都是長期支援的工具,JDK承諾這些工具比較好用。不同系統、不同版本之間可能會有差異,但是不會突然就有一個工具消失。

1.1 基礎 (appletviewer, extcheck, jar, java, javac, javadoc, javah, javap, jdb, jdeps)

工具 簡述

appletviewer 在沒有web浏覽器的情況下運作和調試applet

extcheck 檢查Jar沖突的工具

jar 建立和管理Jar檔案

java Java運作工具,用于運作.class位元組碼檔案或.jar檔案

javac 用于Java程式設計語言的編譯器

javadoc API文檔生成器

javah C頭檔案和stub函數生成器,用于編寫native方法

javap 類檔案反彙編器,主要用于根據Java位元組碼檔案反彙編為Java源代碼檔案

jdb Java調試器(Java Debugger)

jdeps Java類依賴性分析器

1.2 安全 (keytool, jarsigner, policytool)

keytool 管理密鑰庫和證書。主要用于擷取或緩存Kerberos協定的票據授權票據。允許使用者檢視本地憑據緩存和密鑰表中的條目(用于Kerberos協定)。Kerberos密鑰表管理工具,允許使用者管理存儲于本地密鑰表中的主要名稱和服務密鑰。

jarsigner 生成并驗證JAR簽名

policytool 管理政策檔案的GUI工具,用于管理使用者政策檔案(.java.policy)

1.3 國際化/i18n (native2ascii)

native2ascii 本地編碼到ASCII編碼的轉換器(Native-to-ASCII Converter),用于“任意受支援的字元編碼”和與之對應的“ASCII編碼和(或)Unicode轉義”之間的互相轉換。

1.4 遠端方法調用/RMI (rmic, rmiregistry, rmid, serialver)

rmic Java RMI 編譯器,為使用JRMP或IIOP協定的遠端對象生成stub、skeleton、和tie類,也用于生成OMG IDL。

rmiregistry 遠端對象系統資料庫服務,用于在目前主機的指定端口上建立并啟動一個遠端對象系統資料庫。

rmid 啟動激活系統守護程序,允許在虛拟機中注冊或激活對象。

serialver 生成并傳回指定類的序列化版本ID

1.5 Java IDL 與 RMI-IIOP (tnameserv, idlj, orbd, servertool)

tnameserv 提供對命名服務的通路

idlj IDL轉Java編譯器(IDL-to-Java Compiler),生成映射OMG IDL接口的.java檔案,并啟用以Java程式設計語言編寫的使用CORBA功能的應用程式的.java檔案。IDL意即接口定義語言(Interface Definition Language)。

orbd 對象請求代理守護程序(Object Request Broker Daemon),提供從用戶端查找和調用CORBA環境服務端上的持久化對象的功能。使用ORBD代替瞬态命名服務tnameserv。ORBD包括瞬态命名服務和持久命名服務。ORBD工具內建了伺服器管理器,互操作命名服務和引導名稱伺服器的功能。當用戶端想進行伺服器時定位,注冊和激活功能時,可以與servertool一起使用。

servertool 為應用程式注冊,登出,啟動和關閉伺服器提供易用的接口

1.6 Java 釋出工具 (javapackager, pack200, unpack200)

javapackager 打包、簽名Java和JavaFX應用程式

pack200 使用Java gzip壓縮器将JAR檔案轉換為壓縮的pack200檔案。壓縮的壓縮檔案是高度壓縮的JAR,可以直接部署,節省帶寬并減少下載下傳時間。

unpack200 将pack200生成的打封包件解壓提取為JAR檔案

1.7 Java Web 啟動工具 (javaws)

javaws 啟動Java Web Start并設定各種選項的工具

1.8 故障排查,分析,監控和管理 (jcmd, jconsole, jmc, jvisualvm)

jcmd JVM診斷指令工具,将診斷指令請求發送到正在運作的Java虛拟機。

jconsole 用于監控Java虛拟機的使用JMX規範的圖形工具。它可以監控本地和遠端JVM。它還可以監控和管理應用程式。

jmc Java任務控制用戶端(JMC,Java Mission Control),包含用于監控和管理Java應用程式的工具,而不會引入與這些工具相關聯的性能開銷。開發者可以使用jmc指令來建立JMC工具。

jvisualvm 一種圖形化工具,可在Java虛拟機中運作時提供有關基于Java技術的應用程式(Java應用程式)的詳細資訊。 Java VisualVM提供記憶體和CPU分析,堆轉儲分析,記憶體洩漏檢測,MBean通路和垃圾收集。

1.9 WebService工具 (schemagen, wsgen, wsimport, xjc)

schemagen 用于XML綁定的Schema生成器,用于生成XML schema檔案。

wsgen XML Web Service 2.0的Java API,生成用于JAX-WS Web Service的JAX-WS便攜式産物。

wsimport XML Web Service 2.0的Java API,主要用于根據服務端釋出的wsdl檔案生成用戶端

xjc 主要用于根據XML schema檔案生成對應的Java類。

2. 實驗性工具

所謂的實驗性工具,就是HotSpot JDK提供了,但是可能在之後的某個版本中突然就不可用了。通過man指令檢視這些工具的詳細介紹的時候,都會在第一行有This command is experimental and unsupported.這麼一句。HotSpot JDK再三強調要謹慎使用,但是由于這些工具在Java性能調優方面作用太大,是以我們就謹慎的研究然後謹慎的使用吧。

2.1 監控 (jps, jstat, jstatd)

jps JVM程序狀态工具(JVM Process Status Tool),在目标系統上列出HotSpot Java虛拟機程序的描述資訊

jstat JVM統計監控工具(JVM Statistics Monitoring Tool),根據參數指定的方式收集和記錄指定的jvm程序的性能統計資訊。

jstatd JVM jstat守護程式,啟動一個RMI伺服器應用程式,用于監視測試的HotSpot Java虛拟機的建立和終止,并提供一個界面,允許遠端監控工具附加到在本地系統上運作的Java虛拟機。

2.2 故障排查 (jinfo, jhat, jmap, jsadebugd, jstack)

jinfo Java的配置資訊工具(Java Configuration Information),用于列印指定Java程序、核心檔案或遠端調試伺服器的配置資訊。

jhat Java堆分析工具(Java Heap Analysis Tool),用于分析Java堆記憶體中的對象資訊。

jmap Java記憶體映射工具(Java Memory Map),主要用于列印指定Java程序、核心檔案或遠端調試伺服器的共享對象記憶體映射或堆記憶體細節。

jsadebugd 适用于Java的可維護性代理調試守護程式(Java Serviceability Agent Debug Daemon),主要用于附加到指定的Java程序、核心檔案,或充當一個調試伺服器。

jstack Java的堆棧跟蹤工具,主要用于列印指定Java程序、核心檔案或遠端調試伺服器的Java線程的堆棧跟蹤資訊。

2.3 腳本工具 (jjs, jrunscript)

jjs 對Nashorn引擎的調用。Nashorn是基于Java實作一個輕量級高性能的JavaScript運作環境。

jrunscript Java指令行腳本外殼工具(command line script shell),主要用于解釋執行javascript、groovy、ruby等腳本語言。