JDK-8213055 : Define Japanese new Era character
  • Type: CSR
  • Component: core-libs
  • Sub-Component: java.lang
  • Priority: P4
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 12
  • Submitted: 2018-10-26
  • Updated: 2019-01-29
  • Resolved: 2018-11-01
Related Reports
CSR :  
Relates :  
Relates :  
Description
Summary
-------

This is a follow-on CSR to JDK-8211739. Add a paragraph for that behavioral change.

Problem
-------

The existing JCK test for JDK12 fails on that code point.

Solution
--------

Add a paragraph in java.lang.Character class description explaining the change.

Specification
-------------

Insert the following paragraph at the end of the first part of the java.lang.Character class description, before the "Unicode Character Representation" heading:

     * The code point, U+32FF, is reserved by the Unicode Consortium
     * to represent the Japanese square character for the new era that begins
     * from May, 2019. Relevant methods in the Character class return the same
     * properties as for the existing Japanese era characters (e.g., U+337E for
     * "Meizi"). For the details of the code point, refer to
     * http://blog.unicode.org/2018/09/new-japanese-era.html


Comments
Moving to Approved.
01-11-2018

Thanks [~darcy] and [~smarks]. Modified the paragraph as a normative one, and moved to where it is suggested.
01-11-2018

As the author of JDK-8068562, I concur. The text regarding U+32FF doesn't apply to overridable methods, and it does apply across all implementations of Java SE. Therefore, @implSpec shouldn't be used here. The proposed text sounds like it's a modification or adjustment to the general statement of the relationship Java SE has to the Unicode Standard, which is the first part of the class doc of the Character class. Thus, it seems to me that the proposed text would fit as ordinary specification (that is, no @implSpec) at the end of the first part of the class doc, before the "Unicode Character Representation" heading.
01-11-2018

The proposed spec change is generally fine, but I don't think this is an appropriate use of the @implSpec tag. From the JEP (http://openjdk.java.net/jeps/8068562): "Implementation Specification. This is where the default implementation (or an overrideable implementation in a class) is specified. Interface implementors or class subclassers use the information here in order to decide whether it is sensible or necessary to override a particular method, and what behavior they can rely on if a method is called via super." The @implSpec tag is used to say "this default method or overridable method does XYZ" separate from the general contract of the method. It would also be reasonable for an @implSpec tag to say something like "This sorting method must have worst case big-O complexity no worse than N log(N)." I view the proposed text here as just plain old spec rather than impl. spec. I'm happy to discuss this point separately.
01-11-2018