In JLS 3.8. (Identifiers) change: --- 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. --- to: --- 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). As of Java SE 9 the underscore is no longer allowed as a one-character identifier. The $ sign should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems. --- In JLS 3.9. (Keywords) add: _ to the list of keywords In JLS 15.27.1. (Lambda Parameters) remove: --- It is a compile-time error if a lambda parameter has the name _ (that is, a single underscore character). The use of the variable name _ in any context is discouraged. Future versions of the Java programming language may reserve this name as a keyword and/or give it special semantics. ---