首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 開發工具鏈深度解析:從 javac 到 javadoc 的命令列實戰

     編輯:Java 程式設計入門

核心執行工具:java 命令完整參數指南

java [options] classname [args...] 啟動 JVM 執行位元組碼。若類別在套件中,需使用完整限定名 (FQCN):com.myapp.Main。

關鍵選項分類速查

類別選項功能實戰場景
除錯診斷-debug啟用除錯模式,配合 jdb 遠端除錯生產環境掛載除錯器
-verbose:class輸出類別載入追蹤排查 ClassNotFound/NoClassDefFoundError、類別載入器衝突
-verbose:gc輸出 GC 事件詳情初步觀察 GC 頻率/停頓,配合 GC 日誌深度分析
記憶體調優-Xms / -Xmx初始/最大堆大小 (建議設相同避免擴縮容抖動)容器化部署設定記憶體上限
-Xmn新生代大小高併發短命物件場景調優
-XX:MetaspaceSize / -XX:MaxMetaspaceSize元空間大小 (JDK 8+ 取代 PermGen)大量動態類別/框架掃描場景
-XX:+UseG1GC / -XX:+UseZGC選擇 GC 演算法大堆低延遲 (G1) / 超大堆亞毫秒延遲 (ZGC, JDK 11+)
執行緒與堆疊-Xss每執行緒堆疊大小 (預設 1MB, 64-bit)深度遞迴/大量執行緒調整防 StackOverflow
-XX:ThreadStackSize同 -Xss,單位 KB精細控制
-XX:+UseThreadPriorities啟用原生執行緒優先級映射即時系統需求
系統屬性與診斷-Dkey=value設定系統屬性,System.getProperty("key") 取得外部化配置、功能開關、版本資訊注入
-XX:+PrintCommandLineFlags輸出 JVM 啟用的所有參數預設值確認實際生效參數、對比預設值
-XX:+HeapDumpOnOutOfMemoryErrorOOM 時自動產生堆轉儲檔生產環境事後分析必備

編譯器:javac 專業參數實戰

javac [options] sourcefiles 將 .java 編譯為 .class。

選項功能實戰技巧
-d <dir>指定輸出目錄根路徑 (依套件結構建立子目錄)javac -d build/classes src/com/**/*.java 標準建構輸出
-sourcepath <path>指定原始碼搜尋路徑多模組專案編譯指定模組源碼
-cp / --class-path <path>覆蓋 CLASSPATH 環境變數精確控制編譯期依賴,避免環境汙染
-g / -g:none / -g:{vars,lines,source}產生除錯資訊 (區域變數、行號、來源檔)生產環境建議 -g:lines,source 平衡體積與除錯能力
-parameters保留方法參數名稱 (JDK 8+)Spring/反射框架需求,Parameter.getName() 才能取得真實名稱
-Xlint:unchecked,deprecation,rawtypes...啟用特定編譯警告CI 流程建議 -Werror -Xlint:all 視警告為錯誤
--release <version>交叉編譯目標版本 (JDK 9+)--release 11 確保位元組碼相容 JDK 11,自動設定 -source/-target/-bootclasspath
-proc:{none,only}控制註解處理器執行Lombok/MapStruct 等 APT 場景控制

Applet 與工具鏈 (歷史/遷移參考)

Applet 已於 JDK 9 標記棄用、JDK 11 移除,現代 Web 改用 WebAssembly、JavaScript 框架。保留工具認知供舊系統維護:

  • appletviewer:無瀏覽器執行 Applet 測試,-debug 掛載 jdb。
  • javap:反組譯神器,javap -c -p -v ClassName 輸出位元組碼、常數池、行號表、簽名、泛型簽名,分析編譯器優化、泛型擦除、內部類別合成結構必備。
  • javah:JNI 開發產生 C/C++ 標頭檔 (JDK 10 移除,改用 javac -h)。

文件生成器:javadoc 專業級配置

javadoc [options] [packagenames] [sourcefiles] 產出 HTML API 文件。

核心標籤與範例

/**
 * 訂單領域服務,處理訂單生命週期核心業務邏輯。
 *
 * @author Chen Wei
 * @version 2.3.1
 * @see OrderRepository
 * @see OrderEventPublisher
 * @since 1.0.0
 */
public class OrderDomainService {

    /**
     * 建立新訂單並發布領域事件。
     *
     * @param cmd 建單指令物件,含客戶、商品、金額等資訊
     * @return 建立完成的訂單聚合根
     * @throws InventoryNotEnoughException 庫存不足
     * @throws InvalidOrderStateException  訂單狀態非法 (如重複建單)
     */
    public Order createOrder(CreateOrderCommand cmd) {
        // ...
    }
}

專業輸出配置

選項功能建議值
-d <dir>輸出目錄target/site/apidocs (Maven 標準)
-sourcepath <path>源碼路徑src/main/java
-subpackages <pkg>遞迴處理子套件com.myapp
-exclude <pkg>排除內部/測試套件com.myapp.internal:com.myapp.test
-encoding UTF-8源碼編碼強制指定避免中文亂碼
-docencoding UTF-8輸出 HTML 編碼同上
-charset UTF-8HTTP Content-Type charset同上
-tag custom:cm:"自定義標籤:"自訂標籤顯示如 @apiNote、@implSpec
-link https://docs.oracle.com/javase/8/docs/api/連結外部 JDK 文件標準類別自動超連結
-linkoffline <url> <pkg-list>離線連結外部文件內網環境部署文件站

Maven/Gradle 整合最佳實務



    org.apache.maven.plugins
    maven-javadoc-plugin
    3.6.0
    
        UTF-8
        UTF-8
        UTF-8
        17
        protected  
        
            https://docs.oracle.com/en/java/javase/17/docs/api/
            https://docs.spring.io/spring-framework/docs/6.0.x/javadoc-api/
        
        com.myapp.internal:com.myapp.config
    


現代工具鏈建議:拋棄手動指令,擁抱建構工具

手動 javac/java 僅適合教學驗證。生產專案請直接使用:

  • Maven:約定優於配置、中央倉庫、生命週期階段清晰、插件生態最豐富。
  • Gradle (Kotlin DSL):增量建構、依賴圖可視化、腳本可程式化、Android/多平台首選。
  • IDE 整合:IntelliJ IDEA (Ultimate/Community) 提供最強大的重構、除錯、靜態分析、框架支援、資料庫工具、HTTP Client、Kubernetes 整合。

「工欲善其事,必先利其器。」精通命令列參數是為了理解建構工具底層行為,排查疑難雜症時能直搗黃龍。日常開發請讓 Maven/Gradle 處理繁瑣參數組合,專注於業務邏輯與架構設計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved