Матрица совместимости с Janino

Что из современного Java-синтаксиса компилируется, а что — нет.

Плагин использует Janino как встроенный компилятор, и он реализует не весь современный Java-синтаксис. Ниже — результаты прямого тестирования.

Работает Не работает
Java 8-и-раньше синтаксис (циклы, try/catch, массивы, generics для JDK-типов, switch-операторы) Lambda-выражения (x -> ...) — Compilation of lambda expression NYI
Текстовые блоки ("""...""", Java 15+) Method references (Foo::bar) — Compilation of method reference NYI
Локальные классы, например class Box { ... } внутри блока final class, объявленный как локальный класс — IDENTIFIER expected instead of 'class'
switch-выражения (case X -> value, Java 14+) — Unexpected token "switch" in primary
Локальный вывод типа var (Java 10+) — Local variable type inference NYI
Коллекции с generic-типом от локального класса типизируются как Object; нужен явный каст ((Hit) list.get(i))

Ошибки компиляции для неподдерживаемого синтаксиса — это обычные ошибки компилятора, с точной привязкой к строке скрипта и без вреда для работы сервера. Они просто никогда не скомпилируются, пока Janino не добавит соответствующую поддержку.