Я нахожу заявления обеих сторон о «чистой Java» очень забавными.
Конечно, для проекта нереально использовать абсолютно ничего, кроме java. Тем не менее, ярлык «чистая Java» должен иметь некоторые стандарты, я не думаю, что какая-либо структура подходит.
Игра фактически изменяет семантику языка Java. Это нормально, если это четко указано. Если вы делаете какие-то манипуляции с байт-кодом, просто будьте честны. Обычно это делается с помощью АОП-приема, методы экземпляра украшаются дополнительным поведением, их поведение манифеста - это написано в коде, обычно сохраняется. Это не так сложно принять, мы можем представить, что наш код является подклассом фреймворка, а наши методы переопределены дополнительным поведением.
В Play один статический метод, вызывающий другой статический метод в том же классе, может иметь магические эффекты, а поведение совсем не похоже на вызов метода. Это огромная проблема, если программист Java больше не может быть уверен, что такое вызов статического метода.
Spring — ну, их Java-часть по-прежнему остается чистой Java. Но это так волшебно (от точки зрения java) и так сильно зависит от тяжелого фреймворка, что называть Spring «чистой Java» — это все равно, что называть гамбургер «чистой зеленью», если мы упускаем из виду мясо. Мясо - лучшая часть!