Java 实现必须支持以非 ASCII 的 Unicode 字母开头的标识符吗?

Must Java implementation support identifiers starting with Unicode letters which aren't ASCII?

来自 Java 语言规范 Java SE 8 版(第 3.8 节)似乎 Java 字母必须包含 ASCII 字母

The "Java letters" include uppercase and lowercase ASCII Latin letters A-Z (\u0041-\u005a), and a-z (\u0061-\u007a), and, for historical reasons, the ASCII underscore (_, or \u005f) and dollar sign ($, or \u0024). The $ sign should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems.

但可能不包括其他 Unicode 字母(因为下面的句子包含 可能 而不是 必须):

Letters and digits may be drawn from the entire Unicode character set, which supports most writing scripts in use in the world today, including the large sets for Chinese, Japanese, and Korean. This allows programmers to use identifiers in their programs that are written in their native languages.

即使在标识符中不支持非 ASCII 字母,实现也符合规范,这是否正确?

如果是这样,那么句子“这允许程序员在用他们的母语编写的程序中使用标识符。”没有多大意义 - 因为它建议使用并非所有实现都支持的功能。

我认为您误解了 "may" 一词的用法。该句子应读作 "It is allowed to draw letters and digits from the entire Unicode character set,..."

因此,实现必须支持整个 Unicode 集。