|
CSR :
|
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.
*