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

Java 9의 CLDR(Common Locale Data Repository) 완벽 정리: 국제화 개선 사항 살펴보기

Java 9의 국제화(Internationalization) 개선 사항 중 가장 주목할 만한 변화는 바로 CLDR 로케일 데이터가 기본값으로 활성화된 것입니다.

이번 글에서는 Java 9에 도입된 로케일 데이터 소스의 종류와 우선순위 설정 방법을 자세히 알아보겠습니다.

로케일 데이터의 4가지 소스

Java 9에서는 아래 키워드를 통해 식별되는 네 가지 로케일 데이터 소스를 제공합니다.

1. CLDR

Unicode 컨소시엄이 운영하는 Common Locale Data Repository(CLDR) 프로젝트에서 제공하는 로케일 데이터입니다. 전 세계적으로 표준화된 날짜, 시간, 숫자, 통화 형식 정보를 담고 있으며, 가장 폭넓은 언어와 지역을 지원합니다.

2. HOST

현재 사용자가 운영체제(OS) 설정을 직접 커스터마이징한 내용을 기반으로 하는 로케일 데이터입니다. 운영체제에 따라 날짜, 시간, 숫자, 통화 등의 형식이 지원됩니다.

3. SPI

시스템에 설치된 SPI(Service Provider Interface) 프로바이더에서 구현한 로케일 민감(locale-sensitive) 서비스를 의미합니다. 개발자가 직접 확장한 로케일 서비스를 활용할 수 있습니다.

4. COMPAT (JRE)

Java 9 이전 릴리즈와 호환되는 기존 JRE 로케일 데이터입니다. JRE 값은 여전히 사용할 수 있지만 더 이상 권장되지 않으며(deprecated), 향후 버전에서 제거될 예정입니다.

기본 우선순위의 변화

Java 8 및 그 이전 버전에서는 JRE가 기본 로케일 데이터였습니다. 반면 Java 9부터는 기본적으로 CLDR이 최우선 순위로 설정됩니다.

로케일 데이터 소스의 탐색 순서는 java.locale.providers 시스템 속성으로 직접 지정할 수 있습니다. 첫 번째 프로바이더가 로케일 데이터 요청에 실패하면, 다음 순위의 프로바이더로 처리가 넘어갑니다.

java.locale.providers=COMPAT,CLDR,HOST,SPI

속성 미설정 시 기본 동작

java.locale.providers 속성을 별도로 설정하지 않으면, Java 9는 다음과 같은 기본 순서로 동작합니다.

java.locale.providers=CLDR,COMPAT,SPI

즉, CLDR → COMPAT → SPI 순서대로 로케일 데이터를 조회합니다.

Java 8과의 호환성 유지 방법

기존 Java 8 애플리케이션과 동일한 로케일 동작을 유지해야 한다면, COMPAT를 CLDR보다 앞에 배치하면 됩니다.

java.locale.providers=COMPAT,CLDR

정리

Java 9의 CLDR 도입은 국제화 표준과의 정합성을 높이고, 보다 정확하고 일관된 로케일 데이터를 제공하기 위한 중요한 변화입니다. 다만 기존 JRE 기반 애플리케이션은 날짜·숫자·통화 포맷이 달라질 수 있으므로, 마이그레이션 시에는 위의 시스템 속성을 활용해 호환성을 관리하는 것이 좋습니다.