每個開發(fā)人員都應(yīng)該知道的 Java 命令行界面工具
下面列出了開發(fā)人員需要掌握的五個比較有用的 Java 命令行工具,才能成為他們團(tuán)隊的高效成員。
1. Java編譯器:javac
javac 實(shí)用程序是你可以在 JDK 的 bin 目錄中找到的最重要的命令行界面 (CLI) 工具。這是 Java 編譯器,無論你使用 Maven、Gradle、SpringSource IDE 還是 Jenkins CI,在編譯 Java 源代碼時都會使用這個 JDK 工具。
但是,如果所有流行的構(gòu)建框架都只是抽象了它的使用,為什么開發(fā)人員需要了解 javac 命令行程序呢?好吧,當(dāng)項(xiàng)目的構(gòu)建和部署管道中出現(xiàn)難以診斷的問題時,故障排除從工具鏈中最基本的組件開始,而這通常是編譯代碼的地方。當(dāng)構(gòu)建橫向運(yùn)行時,開發(fā)人員通常需要將所有花哨的打包和部署工具放在一邊,并恢復(fù)到首要原則。這意味著使用 JDK 的 javac 實(shí)用程序編譯代碼。
2. Java 分析器:javap
你可以將 Java 命令行工具 javap 視為對 javac 實(shí)用程序的補(bǔ)充。 當(dāng) javac 編譯代碼時,javap 實(shí)用程序反轉(zhuǎn)該編譯并提供有關(guān)已編譯類的信息,例如它聲明的變量類型,以及它提供的各種方法和 API。 javap JDK 工具不會將已編譯的類完全返回為其原始源代碼格式,但它確實(shí)提供了有關(guān)原始源代碼設(shè)計方式的見解。
javap命令行程序也可以用來查看用于創(chuàng)建類文件的編譯器版本,這對故障排除很有幫助。 此外,javap 工具可以向你顯示編譯器為類創(chuàng)建的字節(jié)碼,并提供有關(guān)組件如何執(zhí)行其邏輯的見解。
3. Java 統(tǒng)計聚合器:jstat
你的應(yīng)用程序是否遇到運(yùn)行時問題?為什么不打開 jstat 實(shí)用程序?
兩個最常調(diào)整的 Java 虛擬機(jī) (JVM) 參數(shù)是堆大小和 Java 運(yùn)行時環(huán)境 (JRE) 的垃圾收集算法。這個統(tǒng)計監(jiān)控 Java CLI 工具提供了類加載器指標(biāo)、即時編譯器如何工作的見解,以及最重要的是,關(guān)于垃圾收集發(fā)生頻率的數(shù)據(jù)。有了這些統(tǒng)計數(shù)據(jù),你就可以就如何配置 JVM 以獲得最佳性能做出明智的決定。
4.Java依賴管理器:jdeps
使用 Java 12,將不允許編譯任何引用內(nèi)部 API 的代碼庫。在不久的將來,即使鏈接到引用內(nèi)部 API 的已編譯組件也會觸發(fā)構(gòu)建失敗。如果你想知道任何現(xiàn)有代碼是否使用或引用了內(nèi)部 Java API,jdeps Java CLI 應(yīng)用程序會告訴你。此外,如果它確實(shí)在你的源代碼中識別出對內(nèi)部 API 的引用,它通常會提供有關(guān)更新的、更可取的 API 的建議,你可以使用它來替換壞的 API。
5. Java 歸檔實(shí)用程序:jar
創(chuàng)建壓縮歸檔文件并沒有什么特別神奇的地方,這是 Java jar 實(shí)用程序的主要用途。但是這個 Java 命令行工具還有其他一些有用的特性。除了能夠創(chuàng)建壓縮的 zip 文件外,jar 實(shí)用程序還可用于指定可執(zhí)行或嵌入式 JAR 文件的入口點(diǎn)、配置在 JRE 上運(yùn)行時使用的選項(xiàng),甚至記錄 JAR 文件的內(nèi)部內(nèi)容。當(dāng)你想將一個版本的代碼版本與另一個版本進(jìn)行比較時,Jar 會很有用。當(dāng)然,除了能夠壓縮文件之外,JDK 工具 jar 還可以用于提取歸檔文件的內(nèi)容。
JDK 的 bin 目錄中還打包了許多其他有趣的 Java 命令行界面工具,研究它們并探索它們的實(shí)用程序符合每個 Java 開發(fā)人員的較大利益。但是這些前面提到的 Java 命令行工具——即 javac、javap、jstat、jdeps 和 jar——是認(rèn)真的軟件開發(fā)人員需要知道的五個。