Java 9のCLDR(Common Locale Data Repository)とは?デフォルトで有効化されたロケールデータを解説
Java 9における国際化機能の強化:CLDRがデフォルトに
Java 9の国際化(Internationalization)機能の強化点の一つとして、CLDRロケールデータがデフォルトで有効化されたことが挙げられます。これにより、JavaアプリケーションはUnicode CLDRプロジェクトが提供する高品質なロケールデータを標準的に利用できるようになりました。
Javaでは、以下の4つのキーワードによって識別される、異なるロケールデータのソースが用意されています。
4つのロケールデータソース
- CLDR:Unicode Common Locale Data Repository(CLDR)プロジェクトが提供するロケールデータです。日付、時刻、数値、通貨などの地域固有の書式情報を網羅しています。
- HOST:現在のユーザーによるオペレーティングシステム設定のカスタマイズ内容を反映したデータです。OSによって、日付、時刻、数値、通貨などの書式がサポートされます。
- SPI:インストール済みのSPIプロバイダーで実装されたロケール依存サービスから取得されるデータです。
- COMPAT(JRE):Java 9以前のリリースと互換性のある従来のJREロケールデータです。JREは引き続き値として使用できますが、非推奨(deprecated)となっており、将来のリリースで削除される予定です。
Java 8とJava 9でのデフォルト動作の違い
Java 8およびそれ以前のバージョンでは、JRE(COMPAT)がデフォルトのロケールデータでした。一方、Java 9ではCLDRが最優先となるようデフォルト設定が変更されました。
ロケールデータソースの優先順位は、システムプロパティjava.locale.providersを使用して指定できます。優先順位の高い順にプロバイダーが試行され、あるプロバイダーが要求されたロケールデータの提供に失敗した場合には、次のプロバイダーへ処理が引き継がれます。
優先順位のカスタマイズ例
java.locale.providers=COMPAT,CLDR,HOST,SPIこのプロパティを明示的に設定しない場合、Java 9のデフォルト動作は次のようになります。
java.locale.providers=CLDR,COMPAT,SPIJava 8との互換性を維持する方法
Java 8と同じ挙動を維持したい場合は、COMPATをCLDRより前に配置します。これにより、従来のJREロケールデータが優先的に使用されます。
java.locale.providers=COMPAT,CLDRこの設定により、既存アプリケーションをJava 9へ移行する際に、ロケールデータの変更による予期しない動作の違いを最小限に抑えることができます。ただし、COMPATは将来的に削除される予定のため、長期的にはCLDRへの移行を計画しておくことをおすすめします。
-
データセンターとは?仕組み・用途・セキュリティ対策をわかりやすく解説
データセンターとはデータセンターとは、大量のコンピュータサーバーや関連機器を収容するために設けられた専用施設のことです。英語では「data center」と表記するのが一般的ですが、「datacenter」と一語で書かれることもあります。イメージとしては、「壁からはみ出してしまったコンピュータ室」のようなものです。データセンターには、企業ユーザーのメール、財務記録、ウェブサイトのデータなど、あらゆる種類のデータを保存することができます。データセンターは何に使われるのか?一部のオンラインサービスは規模が非常に大きく、1〜2台のサーバーでは運用できません。そうしたサービスでは、サービスを動かすため
-
JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説
StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T