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