Есть несколько способов, которыми JLS допускает небрежность. Порядок модификаторов, например. Вероятно, худшее нарушение - это отступы, хотя грамматика не может их разумно обработать.
Особая проблема с именами классов заключается в том, что, IIRC, в грамматике неясно, какие идентификаторы являются именами классов / интерфейсов, а какиене. Строгость в точках объявления возможна, но тогда она усложняет остальную грамматику.
Вероятно, это связано с нехваткой времени. И даже тогда Java считалась властной. Людей, которые заняты написанием C и C ++ со всевозможными соглашениями (обычно отличающимися от библиотек), вызывают всевозможные недоразумения, но, похоже, им все равно.