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:+HeapDumpOnOutOfMemoryError | OOM 時自動產生堆轉儲檔 | 生產環境事後分析必備 |
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 已於 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 [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-8 | HTTP Content-Type charset | 同上 |
-tag custom:cm:"自定義標籤:" | 自訂標籤顯示 | 如 @apiNote、@implSpec |
-link https://docs.oracle.com/javase/8/docs/api/ | 連結外部 JDK 文件 | 標準類別自動超連結 |
-linkoffline <url> <pkg-list> | 離線連結外部文件 | 內網環境部署文件站 |
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 處理繁瑣參數組合,專注於業務邏輯與架構設計。