Я позволю себе Вас немного уточнить - это ограничения не AOT, а конкретно Spring AOT Bean Definitions. AppCDS и AoT Cache могут работать спокойно с любым Java приложением, не только спринговым, не говоря уже про AOT Context и AOT Bean Definitions.
А так Вы правы, эти ограничения дейстивтельно есть.
Моё мнение, такое: язык и сама платформа делает шаги в сторону enforcement-а целостности программ, не только касаемо final. Это опять же, в какой-то степени безусловно заденет фреймворки и вообще весь код, написанный на этом языке. Такие изменения в будущем сделают общее поведение системы болле понятным.
Не будет возникать вопросов по типу: "А как здесь библиотека 'X' умудрилась обновить это поле, оно же final? А может быть, там под капотом внутри передается deep copy объекта?" и тп.
Я считаю, что это, учитывая все сложности и факторы миграции и т.д. net benefit для экосистемы.
Я позволю себе Вас немного уточнить - это ограничения не AOT, а конкретно Spring AOT Bean Definitions. AppCDS и AoT Cache могут работать спокойно с любым Java приложением, не только спринговым, не говоря уже про AOT Context и AOT Bean Definitions.
А так Вы правы, эти ограничения дейстивтельно есть.
Моё мнение, такое: язык и сама платформа делает шаги в сторону enforcement-а целостности программ, не только касаемо
final. Это опять же, в какой-то степени безусловно заденет фреймворки и вообще весь код, написанный на этом языке. Такие изменения в будущем сделают общее поведение системы болле понятным.Не будет возникать вопросов по типу: "А как здесь библиотека 'X' умудрилась обновить это поле, оно же
final? А может быть, там под капотом внутри передается deep copy объекта?" и тп.Я считаю, что это, учитывая все сложности и факторы миграции и т.д. net benefit для экосистемы.