다음을 통해 공유


Java용 Azure 명령 시작 관리자(공개 미리 보기)

Java용 Azure 명령 시작 관리자(jaz)는 Java 개발자가 Azure에서 애플리케이션을 실행하는 방법을 간소화하는 간단한 유틸리티입니다. 이 도구는 클라우드 환경에 맞게 조정된 JVM(Java Virtual Machine) 옵션을 지능적으로 적용하여 구성 오버헤드를 줄이고 리소스 사용률을 향상시켜 더 나은 성능을 제공합니다.

이 도구는 다음과 같은 개발자에게 적합합니다.

  • 튜닝 가이드를 자세히 살펴보지 않고 더 나은 JVM 기본값을 원합니다.
  • Spring Boot, Quarkus 또는 Micronaut과 같은 프레임워크를 사용하여 클라우드 네이티브 마이크로 서비스를 개발하고 배포합니다.
  • Kubernetes 및 OpenShift와 같은 컨테이너 기반 워크플로를 선호합니다.
  • Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift 또는 Azure Virtual Machines에 Java 워크로드를 배포합니다.

주요 기능

  • 🛠 클라우드 네이티브 배포에 대한 JVM 플래그를 자동으로 조정합니다.
  • 🚀 플러그 앤 플레이 경험. Dockerfile이나 시작 스크립트에 java 명령을 jaz로 바꾸어 추가하기만 하면 됩니다.
  • ☁️ Azure 환경에 최적화되었습니다.
  • 🔧 환경 변수를 통해 사용자 지정할 수 있습니다. 구성 변경 내용을 안전하게 롤아웃하는 방법에는 여러 가지가 있습니다.

지원되는 환경

Java용 Azure 명령 시작 관리자는 Linux 기반 환경에서 Java 시작 관리자를 사용할 수 있는 모든 위치에서 사용할 수 있습니다. 다음 Azure 및 CI/CD 플랫폼에서 유효성을 검사하고 테스트했습니다.

  • AKS(Azure Kubernetes Service)
  • Azure Container Apps (Azure 컨테이너 애플리케이션)
  • Azure App Service
  • Azure Functions
  • ARO(Azure Red Hat OpenShift)
  • Azure Virtual Machines
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions (GitHub 액션)

공개 미리 보기

이제 Java용 Azure 명령 시작 관리자를 공개 미리 보기로 사용할 수 있습니다. 이 도구 및 해당 혜택에 대한 소개는 공개 미리 보기 공 지 사항을 읽어보십시오.

작동 방식

Java용 Azure 명령 시작 관리자가 컨테이너 또는 가상 머신 시작 명령과 JVM 사이에 있습니다. 도구를 시작할 때 다음을 수행합니다.

  1. 클라우드 환경(예: 컨테이너 제한 및 사용 가능한 메모리)을 검색합니다.
  2. 워크로드 유형을 분석하고 다음과 같이 가장 적합한 JVM 튜닝 플래그를 선택합니다.
    • 힙 크기 조정.
    • 가비지 수집기 선택 및 튜닝.
    • 필요에 따라 로깅 및 진단 설정입니다.
  3. Java 프로세스를 시작하여 튜닝 플래그 및 사용자가 제공한 인수를 전달합니다.
  4. stdout, stderr, stdin 및 OS 신호를 Java 프로세스와 주고받을 때 보이지 않게 중계합니다.
  5. Java 프로세스를 모니터링하고 종료 시 종료 코드를 릴레이합니다.

사용 예시

Java용 Azure 명령 실행 도구는 코드를 변경할 필요 없이 명령을 대체하는 교체 형태의 도구입니다. 시작 스크립트에서 javajaz로 간단히 대체하세요. 예를 들어, java -jar foo.jarjaz -jar foo.jar로 대체하세요.

JVM 옵션을 수동으로 튜닝하는 대신 다음을 수행합니다.

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

jaz는 다음 용도로 사용합니다.

jaz -jar myapp.jar

애플리케이션은 다음을 통해 자동으로 혜택을 받을 수 있습니다.

  • 클라우드 네이티브 및 컨테이너 워크로드에 대한 전투 테스트 기본값입니다.
  • 클라우드에서 메모리 낭비가 감소했습니다.
  • 더 나은 시작 및 준비 성능.

설치

Java용 Azure 명령 시작 관리자를 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에 설치

다음 명령을 사용하여 jaz 패키지를 설치합니다.

sudo tdnf install jaz

Microsoft 제품용 Linux 소프트웨어 리포지토리에서 설치

Microsoft 제품용 Linux 소프트웨어 리포지토리를 이미 설정한 경우 배포에 적절한 패키지 관리자 명령을 실행하여 패키지를 설치 jaz 합니다.

그렇지 않으면 다음 목록에서 Linux 배포와 일치하는 지침을 찾습니다. 지침을 따르되 jaz 패키지 대신 msopenjdk-25를 설치하십시오.

지원되는 JVM 버전

Java용 Azure Command Launcher는 OpenJDK 기반 빌드를 지원하며 다음을 사용하여 테스트되었습니다.

중요합니다

Java용 Azure 명령 시작 관리자에는 전체 JDK 설치가 필요합니다. JRE 전용 설치 또는 사용자 지정 jlink 런타임으로 완전히 테스트되지는 않습니다. 자세한 내용은 "JRE 또는 jlink 런타임에서 작동하지 않는 이유는 무엇인가요?"를 참조하세요.

구성 / 설정

명령은 jaz 자체 구성에 대해 명령줄 인수를 소비하지 않습니다. 대신 기본적으로 모든 인수를 명령에 직접 java 전달합니다. 구성이 jaz 애플리케이션의 인수 jaz 를 방해하지 않도록 하려면 환경 변수를 통한 구성만 허용합니다.

다음 jaz 환경 변수를 사용하여 명령을 구성할 수 있습니다.

환경 변수 설명
JAZ_HELP 1으로 설정하여 도움말 메시지를 인쇄하고 0 코드로 종료합니다.
JAZ_PRINT_VERSION 1로 설정하여 jaz 버전을 stdout으로 인쇄하고, 코드 0로 종료합니다.
JAZ_DRY_RUN 명령을 실행하기 위해 1으로 설정하고 명령어를 인쇄한 후 코드 java로 종료하도록 설정합니다.
JAZ_BYPASS 최적화 조정을 피하기 위해 1을(를) jaz로 설정합니다. 원격 분석에는 영향을 주지 않습니다.
JAZ_IGNORE_USER_TUNING 1으로 설정하여 사용자가 제공한 모든 튜닝 플래그를 무시하고 대신 jaz 튜닝을 적용합니다. 그렇지 않으면 jaz 사용자가 제공한 튜닝 플래그가 검색되지 않는 경우에만 JVM을 튜닝합니다. 자세한 정보는 를 참조하세요. 이 설정이 활성화되었을 때와 그렇지 않을 때 jaz의 동작 방식을 확인할 수 있습니다.
JAZ_EXIT_WITHOUT_FLUSH 종료 시 원격 분석 데이터를 비우지 않도록 1로 설정합니다. 이렇게 하면 데이터를 플러시하는 동안 잠재적인 지연(최대 30초)을 피할 수 있지만, jaz은 여전히 원격 분석을 보낼 수 있습니다.

명령줄 인수 대신 환경 변수를 사용하면 경우에 따라 더 쉽게 구성할 jaz 수 있습니다. 컨테이너화된 애플리케이션을 배포할 때, 시작 스크립트를 수정하는 것보다 환경 변수를 설정하는 것이 더 쉬울 수 있으며, JAZ_IGNORE_USER_TUNING을 평가할 때 JAZ_BYPASSjaz을 실험해 보는 것이 유용할 수 있습니다.

로드맵

  • ⚙️ JVM 구성 프로필
  • 📦 AppCDS 지원
  • 🔄 연속 조정
  • 📊 원격 측정
  • 📦 레이든 지원

Changelog

공개 미리 보기 1: 0.0.0-preview+20251118.1

  • RPM 및 DEB 패키지를 구현합니다.
  • 가비지 수집기 커밋 취소 조정을 개선합니다.
  • Java 프로그램이 0이 아닌 코드로 종료되면 명확하지 않은 진단 출력 내보내기 중지
  • 예를 들어 SIGTERMSIGINTJava 프로세스에 대한 OS 신호 전달을 개선합니다.
    • 이제 Java 애플리케이션을 실행하는 컨테이너를 중지하면 애플리케이션이 정상적으로 종료할 수 있습니다.
  • 특정 Java 애플리케이션과의 호환성을 개선하기 위해 PrintFlagsFinal를 제거합니다.
    • 예외가 발생하는 System.console() 호출을 수정합니다.
    • stdout 스트림 버퍼링 수정: jaz 줄 바꿈 문자를 볼 때까지 더 이상 릴레이 출력을 지연하지 않습니다.
  • 내부 복원력에 대한 기타 버그 수정 및 개선 사항

프라이빗 미리 보기 2

  • 버그 수정.
  • glibc 요구 사항을 줄여 Linux 배포판 호환성을 확장했습니다.
  • jaz 이제 수동 JVM 튜닝이 있는지 감지하고 이러한 경우 자체 조정을 적용하지 않습니다.
  • JAZ_IGNORE_USER_TUNING=1 는 있는 경우 수동 JVM 튜닝을 무시하고 jaz의 자체 튜닝 조정을 대신 적용합니다.
  • OpenJDK HotSpot JVM 8과 함께 PrintFlagsFinal를 사용할 때 요청하지 않은 경우에도 jaz 출력이 나타나는 문제가 수정되었습니다.

프라이빗 미리 보기 1

  • Java용 Azure 명령 시작 관리자의 초기 릴리스입니다.

테레메트리

Java용 Azure Command Launcher는 사용량 현황 데이터를 수집하고 Microsoft에 보내 제품 및 서비스를 개선하는 데 도움을 줍니다. 자세한 내용은 개인정보처리방침을 읽어보세요.