將 Java 應用程式編譯為 Windows 原生執行檔(.exe),可避免使用者需安裝 JRE、隱藏原始碼邏輯、提升啟動速度並整合作業系統原生體驗。雖然 Java 設計初衷是跨平台,但在特定部署場景下,EXE 封裝仍具備剛性需求。
| 工具/方案 | 類型 | 特點 | 授權/狀態 | 推薦指數 |
|---|---|---|---|---|
| Excelsior JET | AOT 編譯器 | 效能最接近 C++,支援完整 Java SE,啟動極快,體積優化佳 | 商業軟體(已停止更新,但仍可取得舊版) | ⭐⭐⭐⭐⭐ |
| Instantiations JOVE | AOT 編譯器 | 前身為 SuperCede,優化積極,支援 Swing/SWT,適合桌面應用 | 商業軟體 | ⭐⭐⭐⭐ |
| GraalVM Native Image | AOT 編譯器 | 現代主流選擇,開源免費,支援多語言互通,生態活躍 | 開源 (Oracle/Community) | ⭐⭐⭐⭐⭐ |
| Launch4j | Wrapper 封裝 | 將 JAR 包裝為 EXE,可檢測/下載 JRE,設定圖標、JVM 參數 | 開源免費 | ⭐⭐⭐⭐ |
| JSmooth | Wrapper 封裝 | 功能類似 Launch4j,介面友善,但年久失修 | 開源免費 | ⭐⭐⭐ |
| InstallAnywhere | 安裝包產生器 | 跨平台安裝精靈,可產生含 JRE 的獨立安裝程式 | 商業軟體 | ⭐⭐⭐ |
| Microsoft Jexegen (SDK 4.0) | 舊式編譯器 | 早期微軟方案,僅支援 Java 1.1/1.2,**已淘汰不建議使用** | 免費但過時 | ⭐ |
| Visual Cafe | IDE 內建 | 早期 Symantec 產品,**已停止開發** | 商業/過時 | ⭐ |
| IBM HPJC / TowerJ / JToEXE | 歷史產品 | 均已停止維護,難以取得,**不建議新專案採用** | 過時 | ⭐ |
reflect-config.json)。System.getProperty("user.dir") 或固定路徑載入 .dll/.so。Class.getResourceAsStream() 仍可用,但檔案系統路徑須區分開發/部署環境。jexegen /OUT:app.exe /MAIN:MainClass MainClass.class [other.class...] (Microsoft SDK 4.0)hpjc -o app.exe MainClass.class總結:2024 年新專案請優先評估 GraalVM Native Image(開源、活躍、效能強);單純需求用 Launch4j 最划算。舊文中提及的 JET、JOVE 等已屬歷史產物,僅供維護舊系統參考。