<i18n dev> RFR: 8358426: Improve lazy computation in Locale

Andrey Turbanov aturbanov at openjdk.org
Thu Jun 5 08:39:52 UTC 2025


On Wed, 4 Jun 2025 21:20:46 GMT, Justin Lu <jlu at openjdk.org> wrote:

> Please review this PR which improves occurrences of lazy computation in `Locale` and `BaseLocale`.
> 
> Existing lazy initialization strategies such as CHM, static nested class, and local inner class are replaced with Stable Values.
> 
> Lambda usage is intentionally avoided in this change during `Locale` creation and in static fields due to potential startup performance degradation as noted by [JDK-8331932](https://bugs.openjdk.org/browse/JDK-8331932).
> 
> Rather than convert `iso3166CodesMap` to a Stable Map, each ISO 3166 resource is represented as a SV. Also, I did not think it was necessary to maintain a SV for _both_ the array and set of ISO3166-1 alpha-2 codes.

src/java.base/share/classes/java/util/Locale.java line 2348:

> 2346:     private static volatile Locale defaultFormatLocale;
> 2347: 
> 2348:     private transient final Supplier<String> languageTag =

let's use blessed modifiers order
Suggestion:

    private final transient Supplier<String> languageTag =

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25646#discussion_r2128278908


More information about the i18n-dev mailing list