Aracılığıyla paylaş


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

Java için Azure Komut Başlatıcısı (jaz), Java geliştiricilerinin uygulamalarını Azure'da çalıştırma şeklini basitleştiren basit bir yardımcı programdır. Bulut ortamları için uyarlanmış Java Sanal Makinesi (JVM) seçeneklerini akıllı bir şekilde uygulayarak, araç, yapılandırma ek yükünü azaltır ve daha iyi performans potansiyelini artırarak varsayılan olarak kaynak kullanımını iyileştirir.

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 Sanal Makineler'de 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ı, Java başlatıcısının Linux tabanlı ortamlarda kullanılabilir olduğu her yerde kullanılabilir. Aşağıdaki Azure ve CI/CD platformları genelinde doğrulanmış ve test edilmiştir:

  • Azure Kubernetes Hizmeti (AKS)
  • Azure Konteyner Uygulamaları
  • Azure App Service
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Azure Sanal Makineler
  • Azure DevOps
  • GitHub Codespaces
  • GitHub İşlemleri

Genel önizleme

Java için Azure Komut Başlatıcısı artık genel önizleme aşamasında! 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 komutun java 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ç, OpenJDK'nin Microsoft Derlemesi için kapsayıcı görüntülerinde yer alır. Daha fazla kurulum gerekmez.

Örneğin, aşağıdaki Dockerfile, bir jar dosyası içerisinden jaz Java uygulamasını çalıştırmak için 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 paket yöneticisini tdnf 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, paketi yüklemek jaz 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'nun kurulumunuz yoksa, Linux dağıtımınız için 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üğü

Genel önizleme 1: 0.0.0-preview+20251118.1

  • 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 net olmayan tanılama çıktıları yaymayı durdurun.
  • Java işlemine işletim sistemi sinyali iletmeyi geliştirin, örneğin SIGTERM ve SIGINT.
    • Java uygulaması ç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ı, ürünlerimizin ve hizmetlerimizin geliştirilmesine yardımcı olmak için kullanım verilerini toplar ve Microsoft'a gönderir. Daha fazla bilgi edinmek için gizlilik bildirimimizi okuyun.