Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9의 새로운 버전 관리 체계 완벽 가이드

Java 9의 새로운 버전 관리 체계 개요

Java 9부터는 시맨틱 버저닝(Semantic Versioning) 방식과 일관성을 갖춘 새로운 버전 관리 체계가 적용되었습니다. 버전 번호는 점(.)으로 구분된 비어 있지 않은(non-empty) 문자열 시퀀스로 구성되며, 크게 세 가지 핵심 요소인 메이저 버전 번호($MAJOR), 마이너 버전 번호($MINOR), 보안 수준($SECURITY)으로 이루어집니다.

새로운 버전 관리 규칙은 Runtime.Version 클래스에 문서화되어 있으며, 이 클래스를 통해 프로그램 실행 중에도 버전 정보를 손쉽게 조회할 수 있습니다.

버전 번호 형식

$MAJOR.$MINOR.$SECURITY(.$otherpart)?
  • $MAJOR: 메이저 버전 번호입니다. 플랫폼 사양에 큰 변화가 있는 메이저 버전이 출시될 때마다 증가합니다. JDK 9의 경우 이 값은 9입니다.
  • $MINOR: 마이너 버전 번호입니다. 표준 API의 버그 수정이나 기능 개선이 포함된 릴리스에서 증가합니다.
  • $SECURITY: 보안 수준을 나타냅니다. 중요한 보안 취약점 수정이 포함된 릴리스에서 증가하며, 마이너 버전 번호가 올라가더라도 0으로 초기화되지 않습니다.
  • $otherpart: JVM 벤더가 소수의 비보안성 패치를 표시하기 위해 사용하는 하나 이상의 추가 버전 정보입니다.

버전 문자열 형식

버전 문자열에는 버전 번호 외에도 조기 액세스(early-access) 릴리스 식별자나 빌드 번호 같은 부가 정보가 포함될 수 있습니다.

$VNUM(-$PRE)?\+$BUILD(-$OPT)?
$VNUM-$PRE(-$OPT)?
$VNUM(+-$OPT)?
  • $PRE: 사전 릴리스(pre-release) 식별자입니다.
  • $BUILD: 빌드 번호입니다.
  • $OPT: 타임스탬프 등 선택적으로 제공되는 부가 정보입니다.

예제 코드

아래 예제는 Runtime.version() 메서드를 사용해 현재 런타임의 버전 정보를 확인하는 방법을 보여 줍니다.

public class VersionSchemeTest {
    public static void main(String args[]) {
        System.out.println(Runtime.version().toString()); // 버전의 문자열 표현
        System.out.println(Runtime.version().major());    // 메이저 버전 번호
        System.out.println(Runtime.version().minor());    // 마이너 버전 번호
        System.out.println(Runtime.version().security()); // 보안 버전 번호
    }
}

실행 결과

9.0.4+11
9
0
4

이처럼 Java 9의 새로운 버전 관리 체계는 버전 번호만 보고도 해당 릴리스의 성격(기능 변경, 버그 수정, 보안 패치 여부)을 직관적으로 파악할 수 있도록 설계되어, 개발 단계와 운영 환경 모두에서 버전 관리의 명확성과 신뢰성을 크게 높여 줍니다.