-
CSR
-
Resolution: Unresolved
-
P4
-
None
-
behavioral
-
minimal
-
This is a javadoc change only.
-
Java API, System or security property
-
SE
Summary
Clarify the description of java.locale.providers
system property
Problem
The system property java.locale.providers
specifies the user's preferred loading order of the locale sensitive services, described in java.util.spi.LocaleServiceProvider
class. The current description is not clear on the possible values of the property, especially whether they are normative Java SE specs or implementation specific.
Solution
Clarify the class description for java.locale.providers
system property, making a clear distinction on the mandated spec or implementation note.
Specification
Modify the third paragraph in Invocation of Locale Sensitive Services
section of the java.util.spi.LocaleServiceProvider
class description as follows:
* <p>
- * The search order of locale sensitive services can
- * be configured by using the {@systemProperty java.locale.providers} system property.
- * This system property declares the user's preferred order for looking up
- * the locale sensitive services separated by a comma. As this property value is
- * read and cached only at the initialization of this class, users should specify the
- * property on the java launcher command line. Setting it at runtime with
- * {@link System#setProperty(String, String)} is discouraged and it may not affect
- * the order.
- * JDK Reference Implementation provides the following four
- * locale providers:
+ * Since an implementation of the JDK may provide multiple sets of locale sensitive
+ * service implementations, their search order can be configured using the
+ * {@systemProperty java.locale.providers} system property. This system property
+ * declares the user's preferred order for looking up the sets of locale sensitive
+ * services separated by a comma. Each string entity represents an arbitrary name of
+ * the set provided by the JDK implementation except "{@code SPI}", with which the
+ * application provided implementations of {@code LocaleServiceProvider} are
+ * represented. Applications which require their implementations of
+ * {@code LocaleServiceProvider} must explicitly specify "{@code SPI}" in the system
+ * property, in order for the Java runtime to load them from the classpath. If
+ * multiple implementations of the same subclass of {@code LocaleServiceProvider}
+ * are found on the classpath, it depends on the JDK with regard to which one is loaded.
+ * As this system property value is read and cached only at the initialization
+ * of this class, users should specify the property on the java launcher command
+ * line. Setting it at runtime with {@link System#setProperty(String, String)}
+ * is discouraged and it may not affect the order.
+ * @implNote The JDK provides the following four sets of locale sensitive services:
* <ul>
- * <li> "CLDR": A provider based on Unicode Consortium's
+ * <li> "{@code CLDR}": The set of locale sensitive services based on Unicode Consortium's
* <a href="http://cldr.unicode.org/">CLDR Project</a>.
- * <li> "COMPAT": represents the locale sensitive services that is compatible
- * with the prior JDK releases up to JDK 8 (same as JDK 8's "JRE"). This
- * provider is deprecated and will be removed in the future release of JDK.
- * <li> "SPI": represents the locale sensitive services implementing the subclasses of
- * this {@code LocaleServiceProvider} class.
- * <li> "HOST": A provider that reflects the user's custom settings in the
- * underlying operating system. This provider may not be available, depending
- * on the JDK Reference Implementation.
- * <li> "JRE": represents a synonym to "COMPAT". This name
+ * <li> "{@code COMPAT}": The set of locale sensitive services that is compatible
+ * with the prior JDK releases up to JDK 8 (same as JDK 8's "{@code JRE}"). This
+ * set is deprecated and will be removed in the future release of JDK.
+ * <li> "{@code SPI}": The set of application provided locale sensitive services implementing
+ * the subclasses of this {@code LocaleServiceProvider} class on the classpath.
+ * <li> "{@code HOST}": The Set of locale sensitive services that reflects the user's custom
+ * settings in the underlying operating system.
+ * <li> "{@code JRE}": represents a synonym to "{@code COMPAT}". This name
* is deprecated and will be removed in the future release of JDK.
* </ul>
* <p>
- * For example, if the following is specified in the property:
+ * For example, if the following is specified in the system property:
* <pre>
* java.locale.providers=SPI,CLDR,COMPAT
* </pre>
- * the locale sensitive services in the SPI providers are looked up first. If the
- * desired locale sensitive service is not available, then the runtime looks for CLDR,
- * COMPAT in that order.
+ * the locale sensitive services in the "{@code SPI}" set are looked up first. If the
+ * desired locale sensitive service is not available, then the runtime looks for the one
+ * in {@code CLDR}, {@code COMPAT} in that order.
* <p>
- * The default order for looking up the preferred locale providers is "CLDR,COMPAT",
- * so specifying "CLDR,COMPAT" is identical to the default behavior. Applications which
- * require implementations of the locale sensitive services must explicitly specify
- * "SPI" in order for the Java runtime to load them from the classpath.
+ * The default order for looking up the preferred sets of locale providers is
+ * "{@code CLDR,COMPAT}", so specifying "{@code CLDR,COMPAT}" is identical to the
+ * default behavior.
*
- csr of
-
JDK-8305595 Clarify `java.locale.providers` description
-
- Open
-