Azure Command Launcher untuk Java (pratinjau publik)

Azure Command Launcher untuk Java (jaz) adalah utilitas ringan yang menyederhanakan cara pengembang Java menjalankan aplikasi mereka di Azure. Dengan menerapkan opsi Java Virtual Machine (JVM) secara cerdas yang disesuaikan untuk lingkungan cloud, alat ini mengurangi overhead konfigurasi dan meningkatkan pemanfaatan sumber daya di luar kotak, dengan potensi performa yang lebih baik.

Alat ini sangat ideal untuk pengembang yang:

  • Ingin default JVM yang lebih baik tanpa menyelam jauh ke dalam panduan penyetelan.
  • Mengembangkan dan menyebarkan layanan mikro asli cloud dengan kerangka kerja seperti Spring Boot, Quarkus, atau Micronaut.
  • Lebih suka alur kerja berbasis kontainer seperti Kubernetes dan OpenShift.
  • Sebarkan beban kerja Java pada Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift, atau Azure Virtual Machines.

Fitur utama

  • ๐Ÿ›  Secara otomatis mengatur parameter JVM untuk penyebaran cloud-native.
  • ๐Ÿš€ Pengalaman penggunaan yang langsung siap pakai. Masukkan saja ke Dockerfile Anda atau jalankan skrip, ganti perintah java dengan jaz.
  • โ˜๏ธ Dioptimalkan untuk lingkungan Azure.
  • ๐Ÿ”ง Dapat disesuaikan melalui variabel lingkungan. Ada beberapa cara untuk meluncurkan perubahan konfigurasi dengan aman.

Lingkungan yang didukung

Peluncur Perintah Azure untuk Java dapat digunakan di mana pun peluncur Java tersedia di lingkungan berbasis Linux. Ini telah divalidasi dan diuji di seluruh platform Azure dan CI/CD berikut:

  • Azure Kubernetes Service (AKS)
  • Azure Container Apps
  • Azure App Service
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Azure Virtual Machines
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions

Pratinjau umum

Peluncur Perintah Azure untuk Java sekarang tersedia di pratinjau publik! Baca pengumuman pratinjau publik untuk pengenalan alat ini dan manfaatnya.

Cara kerjanya

Peluncur Perintah Azure untuk Java berada di antara perintah kontainer atau startup komputer virtual Anda dan JVM. Saat Anda meluncurkan alat ini, alat tersebut:

  1. Mendeteksi lingkungan cloud (misalnya, batas kontainer dan memori yang tersedia).
  2. Menganalisis jenis beban kerja dan memilih bendera penyetelan JVM yang paling sesuai, seperti:
    • Ukuran timbunan.
    • Pemilihan dan penyetelan pengumpul sampah.
    • Pengaturan pengelogan dan diagnostik sesuai kebutuhan.
  3. Meluncurkan proses Java, meneruskannya bendera penyetelan dan argumen yang disediakan pengguna.
  4. Secara tak terlihat menyampaikan sinyal stdout, stderr, stdin, dan OS ke dan dari proses Java.
  5. Memantau proses Java dan menyampaikan kode keluarnya saat dihentikan.

Contoh penggunaan

Peluncur Perintah Azure untuk Java adalah pengganti drop-in untuk perintah java, tidak memerlukan perubahan kode. Cukup ganti java dengan jaz dalam skrip peluncuran Andaโ€”misalnya, ganti java -jar foo.jar dengan jaz -jar foo.jar.

Alih-alih menyetel opsi JVM Anda secara manual:

JAVA_OPTS="-XX:... several JVM tuning flags"
java $JAVA_OPTS -jar myapp.jar

Gunakan jaz:

jaz -jar myapp.jar

Aplikasi Anda mungkin secara otomatis mendapat manfaat dari:

  • Default yang teruji untuk beban kerja natif cloud dan container.
  • Mengurangi pemborosan memori di cloud.
  • Performa startup dan pemanasan yang lebih baik.

Instalasi

Peluncur Perintah Azure untuk Java tersedia untuk Linux x64 dan arm64. Metode penginstalan yang didukung adalah:

Gambar kontainer

Alat ini disertakan dalam gambar container untuk Microsoft Build of OpenJDK. Tidak ada lagi penyiapan yang diperlukan.

Misalnya, Dockerfile berikut menggunakan jaz untuk menjalankan aplikasi Java dari file jar.

# 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"]

Instal di Azure Linux

Untuk komputer virtual dan lingkungan Linux Azure lainnya, Anda dapat menginstal alat menggunakan manajer paket tdnf. jaz Instal paket dengan perintah berikut:

sudo tdnf install jaz

Distribusi Linux lainnya

Jika Anda telah menyiapkan Repositori Perangkat Lunak Linux untuk Produk Microsoft, jalankan perintah manajer paket yang sesuai untuk distribusi Anda untuk menginstal paket jaz.

Misalnya, pada distribusi berbasis Ubuntu atau Debian, jalankan:

sudo apt-get install jaz

Jika Anda belum mengonfigurasi Repositori Perangkat Lunak Linux untuk Produk Microsoft, ikuti instruksi untuk distribusi Linux Anda.

Untuk menginstal di Ubuntu, buka terminal dan jalankan perintah berikut:

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

Setelah repositori ditambahkan, instal jaz dengan menjalankan perintah berikut:

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz

Versi JVM yang didukung

Peluncur Perintah Azure untuk Java memerlukan penginstalan JDK berbasis OpenJDK (versi 8 atau yang lebih baru) untuk hadir pada sistem. Ini telah diuji dengan:

Penting

Peluncur Perintah Azure untuk Java memerlukan penginstalan JDK lengkap. Ini tidak sepenuhnya diuji dengan penginstalan JRE saja atau runtime jlink kustom. Untuk informasi selengkapnya, lihat "Mengapa tidak berfungsi dengan runtime JRE atau jlink?".

Konfigurasi

Perintah jaz tidak menggunakan argumen baris perintah untuk konfigurasinya sendiri. Sebaliknya, secara default, ia meneruskan semua argumen langsung ke java perintah . Untuk memastikan bahwa jaz konfigurasi tidak mengganggu argumen aplikasi Anda, jaz hanya menerima konfigurasi melalui variabel lingkungan.

Perintah jaz dapat dikonfigurasi menggunakan variabel lingkungan ini:

Variabel lingkungan Deskripsi
JAZ_HELP Atur ke 1 untuk mencetak pesan bantuan dan keluar dengan kode 0.
JAZ_PRINT_VERSION Atur ke 1 untuk mencetak versi jaz di stdout dan keluar dengan kode 0.
JAZ_DRY_RUN Atur ke 1 untuk mencetak java perintah yang akan dijalankan dan keluar dengan kode 1.
JAZ_BYPASS Atur ke 1 untuk melewati penyesuaian jaz pengoptimalan. Tidak ada efek pada telemetri.
JAZ_IGNORE_USER_TUNING Atur ke 1 untuk mengabaikan semua parameter penyetelan yang diberikan pengguna dan terapkan jaz penyetelan sebagai penggantinya. Jika tidak, jaz hanya akan menyetel JVM jika tidak mendeteksi bendera penyetelan yang disediakan pengguna. Lihat "Apa yang terjadi jika saya sudah mengatur beberapa opsi JVM di lingkungan saya?" untuk informasi selengkapnya tentang bagaimana jaz berperilaku dengan dan tanpa mengaktifkan pengaturan ini.
JAZ_EXIT_WITHOUT_FLUSH Atur ke 1 untuk melewati penghapusan data telemetri saat keluar. Ini menghindari potensi penundaan (hingga 30 detik) jaz mungkin muncul saat membersihkan data, namun jaz mungkin masih mengirim telemetri.

Menggunakan variabel lingkungan daripada argumen baris perintah juga memudahkan untuk dikonfigurasi jaz dalam beberapa kasus. Saat menyebarkan aplikasi dalam kontainer, terkadang lebih mudah untuk mengatur variabel lingkungan daripada memodifikasi skrip peluncuran, dan bereksperimen dengan JAZ_IGNORE_USER_TUNING dan JAZ_BYPASS mungkin berguna saat mengevaluasi jaz.

Peta strategi

  • โš™๏ธ Profil konfigurasi JVM
  • ๐Ÿ“ฆ Dukungan AppCDS
  • ๐Ÿ”„ Penyetelan berkelanjutan
  • ๐Ÿ“Š Telemetri
  • ๐Ÿ“ฆ Dukungan Leyden

Changelog

0.0.0-preview+20260421.1

  • Pembaruan dependensi.

0.0.0-preview+20260408.1

  • Pembaruan dependensi.

0.0.0-preview+20260403.2

  • Pembaruan dependensi.

0.0.0-preview+20260323.1

  • Pembaruan dependensi.

0.0.0-preview+20260223.1

  • Pembaruan dependensi.

0.0.0-preview+20260120.1

  • Pembaruan dependensi.

0.0.0-preview+20251211.7

  • Pembaruan dependensi.
  • Perbaikan bug lainnya.

0.0.0-preview+20251205.1

  • Perbaikan bug internal.

0.0.0-preview+20251126.1

  • Tambahkan Microsoft Build of OpenJDK 25 ke daftar versi bersertifikat.

0.0.0-preview+20251120.1

  • Pembaruan dependensi.

0.0.0-preview+20251118.1

  • Masukkan Pratinjau Umum.
  • Menerapkan paket RPM dan DEB.
  • Meningkatkan penyesuaian pengelolaan pelepasan komitmen pengumpul sampah.
  • Berhenti memancarkan output diagnostik yang tidak jelas ketika program Java keluar dengan kode bukan nol.
  • Tingkatkan penerusan sinyal OS ke proses Java, misalnya, SIGTERM dan SIGINT.
    • Menghentikan kontainer yang menjalankan aplikasi Java sekarang memberi waktu bagi aplikasi untuk mematikan dirinya dengan baik.
  • Hapus penggunaan PrintFlagsFinal, meningkatkan kompatibilitas dengan aplikasi Java tertentu.
    • Perbaiki pemanggilan System.console() yang melempar pengecualian.
    • Memperbaiki buffering aliran stdout: jaz tidak lagi menunda penyampaian output hingga melihat karakter baris baru.
  • Perbaikan bug lainnya dan peningkatan ketahanan internal.

Pratinjau Pribadi 2

  • Perbaikan bug.
  • Kompatibilitas distro Linux yang diperluas dengan mengurangi persyaratan glibc.
  • jaz sekarang mendeteksi apakah ada penyetelan JVM manual dan dalam kasus seperti itu, itu tidak menerapkan penyesuaiannya sendiri.
  • JAZ_IGNORE_USER_TUNING=1 mengabaikan penyetelan JVM manual jika ada, dan menerapkan penyesuaian penyetelan Jaz sendiri sebagai gantinya.
  • Output PrintFlagsFinal muncul secara tetap ketika tidak diminta telah diperbaiki jika menggunakan jaz dengan OpenJDK HotSpot JVM 8.

Pratinjau pribadi 1

  • Rilis awal Azure Command Launcher untuk Java.

Telemetri

Azure Command Launcher untuk Java mengumpulkan data penggunaan dan mengirimkannya ke Microsoft untuk membantu meningkatkan produk dan layanan kami. Untuk mempelajari lebih lanjut, baca pernyataan privasi kami.