Java için Azure Komut Başlatıcısı (genel önizleme)

Java için Azure Komut Başlatıcısı (jaz), Java geliştiricilerin uygulamalarını Azure üzerinde çalıştırma şeklini basitleştiren basit bir yardımcı programdır. Java Sanal Makinesi (JVM) seçeneklerini bulut ortamları için uyarlanmış bir şekilde akıllıca uygulayarak, araç yapılandırma ek yükünü azaltır ve doğrudan kaynak kullanımını iyileştirir, daha iyi performans olanağı sunar.

Bu araç, şu işlemleri yapan geliştiriciler için idealdir:

  • Ayarlama kılavuzlarına derinlemesine girmeden daha iyi JVM varsayılanları istiyorum.
  • Spring Boot, Quarkus veya Micronaut gibi çerçevelerle bulutta yerel mikro hizmetler geliştirin ve dağıtın.
  • Kubernetes ve OpenShift gibi kapsayıcı tabanlı iş akışlarını tercih edin.
  • Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift veya Azure Virtual Machines Java iş yüklerini dağıtın.

Temel özellikler

  • 🛠 Bulutta yerel dağıtımlar için JVM bayraklarını otomatik olarak ayarlar.
  • 🚀 Tak çalıştır deneyimi. Dockerfile'ınıza veya başlatma betiğinize java koymanız ve jaz komutunu değiştirmeniz gerekiyor.
  • ☁️ Azure ortamlar için iyileştirilmiş.
  • 🔧 Ortam değişkenleri aracılığıyla özelleştirilebilir. Yapılandırma değişikliklerini güvenli bir şekilde kullanıma sunmanın çeşitli yolları vardır.

Desteklenen ortamlar

Java için Azure Komut Başlatıcısı, linux tabanlı ortamlarda Java başlatıcının kullanılabildığı her yerde kullanılabilir. Aşağıdaki Azure ve CI/CD platformları genelinde doğrulanmış ve test edilmiştir:

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

Genel önizleme

Java için Azure Komut Başlatıcısı artık genel önizlemede! Bu araç ve avantajlarına giriş için genel önizleme duyurusunu okuyun.

Nasıl çalışır?

Java için Azure Komut Başlatıcısı, kapsayıcınız veya sanal makine başlatma komutunuz ile JVM arasında yer alır. Aracı başlattığınızda:

  1. Bulut ortamını algılar (örneğin, kapsayıcı sınırları ve kullanılabilir bellek).
  2. İş yükü türünü analiz eder ve aşağıdakiler gibi en uygun JVM ayarlama bayraklarını seçer:
    • Yığın boyutlandırma.
    • Çöp toplayıcı seçimi ve ayarlama.
    • Gerektiğinde günlüğe kaydetme ve tanılama ayarları yapılabilir.
  3. Ayarlama bayraklarını ve kullanıcı tarafından sağlanan bağımsız değişkenleri geçirerek bir Java işlemi başlatır.
  4. Java işlemine stdout, stderr, stdin ve işletim sistemi sinyallerini görünmez bir şekilde aktarır.
  5. Java işlemini izler ve sonlandırıldığında çıkış kodunu aktarır.

Örnek kullanım

Java için Azure Komut Başlatıcısı, kod değişikliği gerektirmeden java komutunun yerine bir açılır menüdür. Basitçe, başlatma betiklerinizde javajaz ile değiştirin; örneğin, java -jar foo.jar'yi jaz -jar foo.jar ile değiştirin.

JVM seçeneklerinizi el ile ayarlamak yerine:

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

jaz kullanın:

jaz -jar myapp.jar

Uygulamanız aşağıdakilerden otomatik olarak yararlanabilir:

  • Bulutta yerel ve kapsayıcı iş yükleri için savaşta test edilmiş varsayılanlar.
  • Bulutta bellek israfı azaltıldı.
  • Daha iyi başlangıç ve ısınma performansı.

Kurulum

Java için Azure Komut Başlatıcısı hem x64 hem de arm64 Linux için kullanılabilir. Desteklenen yükleme yöntemleri şunlardır:

Konteyner görüntüleri

Araç, Microsoft Build of OpenJDK için konteyner görüntülerine dahildir. Daha fazla kurulum gerekmez.

Örneğin, aşağıdaki Dockerfile bir jaz dosyasından Java uygulaması çalıştırmak için jar kullanır:

# 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'a yükleme

Sanal makineler ve diğer Azure Linux ortamları için, tdnf paket yöneticisini kullanarak aracı yükleyebilirsiniz. jaz Paketi aşağıdaki komutla yükleyin:

sudo tdnf install jaz

Diğer Linux dağıtımları

Microsoft Ürünleri için Linux Yazılım Deposu'nun kurulumunu yaptıysanız, jaz paketini yüklemek için dağıtımınız için uygun paket yöneticisi komutunu çalıştırın.

Örneğin, Ubuntu veya Debian tabanlı dağıtımlarda şunu çalıştırın:

sudo apt-get install jaz

Microsoft Ürünleri için Linux Yazılım Deposu'na sahip değilseniz Linux dağıtımınıza yönelik yönergeleri izleyin.

Ubuntu'ya yüklemek için bir terminal açın ve aşağıdaki komutları çalıştırın:

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

Depo eklendikten sonra aşağıdaki komutları çalıştırarak yükleyin jaz :

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

Desteklenen JVM sürümleri

Java için Azure Komut Başlatıcısı, sistemde OpenJDK tabanlı bir JDK yüklemesi (sürüm 8 veya üzeri) olmasını gerektirir. Şu testlerle yapılmıştır:

Önemli

Java için Azure Komut Başlatıcısı tam bir JDK yüklemesi gerektirir. Yalnızca JRE yüklemeleri veya özel jlink çalışma zamanları ile tam olarak test edilmemektedir. Daha fazla bilgi için bkz. "Neden JRE veya jlink çalışma zamanlarıyla çalışmıyor?".

Konfigürasyon

Komut, jaz kendi yapılandırması için herhangi bir komut satırı bağımsız değişkeni kullanmaz. Bunun yerine, varsayılan olarak tüm bağımsız değişkenleri doğrudan java komutuna geçirir. Yapılandırmanın uygulamanızın jaz bağımsız değişkenlerine müdahale etmediğinden emin olmak için yalnızca jaz ortam değişkenleri aracılığıyla yapılandırmayı kabul eder.

Komut jaz şu ortam değişkenleri kullanılarak yapılandırılabilir:

Ortam değişkeni Açıklama
JAZ_HELP 1 olarak ayarlayın, yardım mesajı yazdırmak ve 0 koduyla çıkmak için.
JAZ_PRINT_VERSION 1 ayarlayarak jaz sürümünü stdout'a yazdırın ve 0 koduyla çıkış yapın.
JAZ_DRY_RUN 1 yürütülecek java komutunu yazdırmak için ayarlayın ve koduyla 1 çıkın.
JAZ_BYPASS İyileştirme ayarlamalarını atlamak için 1 olarak ayarlayın. Telemetri üzerinde hiçbir etkisi yoktur.
JAZ_IGNORE_USER_TUNING 1 değerini tüm kullanıcı tarafından sağlanan ayarlama bayraklarını yoksaymak ve bunun yerine jaz ayarlamasını uygulamak için ayarlayın. Aksi takdirde, jaz, kullanıcı tarafından sağlanmış ayar bayrakları algılanmazsa yalnızca JVM'yi ayarlar. Bu ayarı etkinleştirmeden nasıl davranacağınız hakkında daha fazla bilgi için bkz. jaz
JAZ_EXIT_WITHOUT_FLUSH 1 Çıkışta temizleme telemetrisini atlamak için olarak ayarlayın. Bu, verileri boşaltırken ortaya çıkabilecek olası gecikmeleri (30 saniyeye kadar) jaz önler, ancak jaz yine de telemetri gönderebilir.

Komut satırı bağımsız değişkenleri yerine ortam değişkenlerini kullanmak da bazı durumlarda yapılandırmayı jaz kolaylaştırır. Kapsayıcılı bir uygulama dağıtırken, bazen ortam değişkenlerini ayarlamak, başlatma betiklerini değiştirmekten daha kolaydır ve JAZ_IGNORE_USER_TUNING ile deney yapmak JAZ_BYPASS değerlendirilirken jaz yararlı olabilir.

Yol Haritası

  • ⚙️ JVM yapılandırma profilleri
  • 📦 AppCDS desteği
  • 🔄 Sürekli ayarlama
  • 📊 Telemetri
  • 📦 Leyden desteği

Değişiklik günlüğü

0.0.0-preview+20260421.1

  • Bağımlılık güncellemeleri.

0.0.0-preview+20260408.1

  • Bağımlılık güncellemeleri.

0.0.0-preview+20260403.2

  • Bağımlılık güncellemeleri.

0.0.0-preview+20260323.1

  • Bağımlılık güncellemeleri.

0.0.0-preview+20260223.1

  • Bağımlılık güncellemeleri.

0.0.0-preview+20260120.1

  • Bağımlılık güncellemeleri.

0.0.0-preview+20251211.7

  • Bağımlılık güncellemeleri.
  • Diğer hata düzeltmeleri.

0.0.0-preview+20251205.1

  • İç hata düzeltmeleri.

0.0.0-preview+20251126.1

  • Sertifikalı sürümler listesine Microsoft Build of OpenJDK 25 ekleyin.

0.0.0-preview+20251120.1

  • Bağımlılık güncellemeleri.

0.0.0-preview+20251118.1

  • Genel Önizleme girin.
  • RPM ve DEB paketlerini uygulayın.
  • Atık toplayıcının yaygın olmayan ayarlamalarını geliştirin.
  • Java programı sıfır olmayan bir kodla çıktığında belirsiz tanılama çıktısını yaymayı durdurun.
  • İşletim sistemi sinyallerini Java işleme iletmeyi geliştirin; örneğin, SIGTERM ve SIGINT.
    • Java uygulamasını çalıştıran bir kapsayıcıyı durdurmak artık uygulamaya düzgün bir şekilde kapatılması için zaman verir.
  • PrintFlagsFinal kullanımını kaldırarak belirli Java uygulamalarıyla uyumluluğu geliştirin.
    • Özel durum oluşturma çağrılarını System.console() düzeltin.
    • Stdout akışı arabelleğe alma sorunu düzeltildi: jaz artık yeni satır karakteri görene kadar çıktıyı aktarmayı geciktirmiyor.
  • Diğer hata düzeltmeleri ve iç dayanıklılık geliştirmeleri.

Özel önizleme 2

  • Hata düzeltmeleri.
  • Glibc gereksinimlerini azaltarak Genişletilmiş Linux dağıtım uyumluluğu.
  • jaz şimdi el ile JVM ayarlaması olup olmadığını algılar ve bu durumda kendi ayarlamalarını uygulamaz.
  • JAZ_IGNORE_USER_TUNING=1 varsa elle yapılan JVM ayarlarını yoksayar ve jaz'ın kendi ayarlarını uygular.
  • OpenJDK HotSpot JVM 8 ile kullanıldığında PrintFlagsFinal görünen (istenmediğinde) çıkış düzeltildijaz.

Özel önizleme 1

  • Java için Azure Komut Başlatıcı'nın ilk sürümü.

Telemetri

Java için Azure Komut Başlatıcısı kullanım verilerini toplar ve ürünlerimizin ve hizmetlerimizin geliştirilmesine yardımcı olmak için Microsoft gönderir. Daha fazla bilgi edinmek için gizlilik bildirimimizi okuyun.