Azure Command Launcher for Java(jaz)是一款輕量級的工具,簡化了Java開發者在 Azure 上執行應用程式的方式。
透過智慧地套用專為雲端環境量身打造的 Java 虛擬機(JVM)選項,該工具降低設定開銷並提升資源利用率,並帶來更高的效能潛力。
此工具適用於下列項目的開發人員:
- 想要更好的 JVM 預設設定,但又不想深入研究調校指南。
- 利用 Spring Boot、Quarkus 或 Micronaut 等框架開發並部署雲端原生微服務。
- 偏好容器式工作流程,如 Kubernetes 和 OpenShift。
- 部署 Java 工作負載至 Azure Container Apps、Azure Kubernetes Service、Azure Red Hat OpenShift 或 Azure 虛擬機器。
主要功能
- 🛠 自動調整 JVM 旗標以支援雲端原生部署。
-
🚀 即插即用體驗。 只要直接丟進你的 Dockerfile 或啟動腳本,把指令替換
java成jaz。 - ☁️ 針對 Azure 環境進行優化。
- 🔧 可透過環境變數自訂。 有幾種方法可以安全地推出設定變更。
支援的環境
在 Linux 環境中,凡是有可用的 Java 啟動器,Azure for Java 的指令啟動器都可以使用。 它已在以下 Azure 與 CI/CD 平台上進行驗證與測試:
- Azure Kubernetes Service (AKS)
- Azure 容器應用程式
- Azure App Service
- Azure Functions
- Azure Red Hat OpenShift (ARO)
- Azure 虛擬機器
- Azure DevOps
- GitHub Codespaces
- GitHub Actions
公開預覽
Azure Java 命令啟動器現已公開預覽版! 請參閱 公開預覽公告 ,了解此工具及其優點的介紹。
運作方式
Azure Java 指令啟動器位於你的容器或虛擬機啟動指令與 JVM 之間。 當你啟動這個工具時,它會:
- 偵測雲端環境(例如容器限制與可用記憶體)。
- 分析工作負載類型並選擇最適合的 JVM 調校標誌,例如:
- 堆積大小。
- 垃圾回收器的選擇與調校。
- 根據需要進行日誌記錄和診斷設定。
- 啟動 Java 程序,傳遞調校旗標及使用者提供的參數。
- 隱形地將 stdout、stderr、stdin 和作業系統訊號中繼到 Java 程序之間。
- 監控 Java 程序,並在程序終止時中繼其退出程式碼。
範例使用方式
Azure 指令啟動器用於 Java 是 java 指令的可直接替代,無需更改程式碼。 只要在啟動腳本中替換 java 為 jaz ,例如替換 java -jar foo.jar 為 jaz -jar foo.jar。
與其手動調整 JVM 選項,不如:
JAVA_OPTS="-XX:... several JVM tuning flags"
java $JAVA_OPTS -jar myapp.jar
使用 jaz:
jaz -jar myapp.jar
您的應用程式可能會自動受益於:
- 經過實戰驗證的雲端原生與容器工作負載預設設定。
- 減少雲端的記憶體浪費。
- 啟動和預熱效能更好。
安裝
Azure 指令啟動器 for Java 適用於 x64 和 arm64 的 Linux。 支援的安裝方法包括:
容器映像
此工具包含在 Microsoft Build of OpenJDK 容器映像 中。 不需要再做更多設定。
例如,以下 Dockerfile 使用 jaz 從 jar 檔案執行 Java 應用程式:
# Use any Microsoft Build of OpenJDK base image
FROM mcr.microsoft.com/openjdk/jdk:25-ubuntu
# Add your application.jar
COPY application.jar /application.jar
# Use jaz to launch your Java application
CMD ["jaz", "-jar", "application.jar"]
在 Azure Linux 上安裝
對於虛擬機及其他Azure Linux 環境,你可以使用 tdnf 套件管理器安裝此工具。 請使用以下指令安裝該 jaz 套件:
sudo tdnf install jaz
其他 Linux 發行版本
如果你已經設定好 Microsoft 產品的 Linux 軟體倉庫,請執行適合你發行版的套件管理員指令來安裝 jaz 套件。
例如,在 Ubuntu 或 Debian 發行版上,執行:
sudo apt-get install jaz
如果你還沒有設定 Microsoft 產品 Linux 軟體倉庫,請依照你的 Linux 發行版指示操作。
要在 Ubuntu 上安裝,請開啟終端機並執行以下指令:
wget "https://packages.microsoft.com/config/ubuntu/$(. /etc/os-release; echo $VERSION_ID)/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb && \
sudo dpkg -i packages-microsoft-prod.deb
儲存庫新增後,請執行以下指令安裝 jaz :
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz
支援的 JVM 版本
Azure Java 指令啟動器需要系統上安裝基於 OpenJDK 的 JDK(版本 8 或更新版本)。 它已測試過:
- Eclipse Temurin OpenJDK 8 搭配 HotSpot JVM
- Microsoft Build of OpenJDK 11、17、21 和 25。
這很重要
Azure Command Launcher for Java 需要完整的 JDK 安裝。 它未經過單獨安裝 JRE 或自訂 jlink 執行環境的完整測試。 更多資訊請參見「為什麼它不能搭配 JRE 或 jlink 執行時運作?」。
設定
指令 jaz 在本身配置時不會使用任何命令列參數。
相反地,預設情況下,它會直接將所有參數傳給指令。java
為了確保設定 jaz 不會干擾應用程式的參數,只 jaz 接受環境變數的設定。
jaz此指令可透過以下環境變數進行配置:
使用環境變數而非命令列參數,在某些情況下也讓設定 jaz 變得更容易。
部署容器化應用程式時,有時候設定環境變數比修改啟動腳本容易,並且在評估JAZ_IGNORE_USER_TUNING時,嘗試JAZ_BYPASS和jaz可能很有用。
藍圖
- ⚙️ JVM 設定檔
- 📦 AppCDS 支援
- 🔄 連續調音
- 📊 遙測
- 📦 萊頓支援
Changelog
0.0.0-preview+20260421.1
- 依賴性更新。
0.0.0-preview+20260408.1
- 依賴性更新。
0.0.0-preview+20260403.2
- 依賴性更新。
0.0.0-preview+20260323.1
- 依賴性更新。
0.0.0-preview+20260223.1
- 依賴性更新。
0.0.0-preview+20260120.1
- 依賴性更新。
0.0.0-preview+20251211.7
- 依賴性更新。
- 其他錯誤修正。
0.0.0-preview+20251205.1
- 內部錯誤修正。
0.0.0-preview+20251126.1
- 將 Microsoft Build of OpenJDK 25 加入認證版本清單。
0.0.0-preview+20251120.1
- 依賴性更新。
0.0.0-preview+20251118.1
- 進入公開預覽版。
- 實作 RPM 和 DEB 套件。
- 改進垃圾回收器取消承諾的調整。
- 當 Java 程式以非零程式碼退出時,停止發出不清楚的診斷輸出。
- 改善作業系統訊號轉發至Java程序,例如
SIGTERM和SIGINT。- 停止容器執行 Java 應用程式,現在會讓應用程式有時間優雅地關閉。
- 移除使用
PrintFlagsFinal,提升與某些Java應用程式的相容性。- 修正引發
System.console()例外的呼叫。 - 修正 stdout 串流緩衝:
jaz不再延遲中繼輸出直到看到換行字元。
- 修正引發
- 其他錯誤修正與內部韌性改進。
私人預覽 2
- 錯誤修復。
- 透過降低 glibc 需求,擴展了 Linux 發行版的相容性。
-
jaz現在會偵測是否有手動 JVM 調校,在這種情況下,它不會自行調整。 -
JAZ_IGNORE_USER_TUNING=1如果有手動 JVM 調音,會忽略,改用 jaz 自己的調音調整。 - 若搭配 OpenJDK HotSpot JVM 8 使用
PrintFlagsFinal,則固定jaz輸出(未被請求時)會出現。
私人預覽 1
- Azure Command Launcher for Java 的初始版本。
遙測
Azure Command Launcher for Java 會收集使用資料並傳送給 Microsoft,以協助改進我們的產品與服務。 若要深入瞭解,請閱讀我們的 隱私聲明。