Есть ли планы на Java 9 Jigsaw (модуль) проектов Spring?
Java 9 планируется выпустить в ближайшее время (27 июля). Есть ли планы выпустить совместимую с Java 9 версию проектов Spring, которая будет модульной (Jigsaw для проекта Java 9)?
3 ответа
Spring 5, следующая основная версия Spring, не будет модульной. Однако вы можете использовать JAR / артефакты Spring 5 в качестве автоматических модулей в вашем module-info
файлы. Смотрите официальный пост и Что нового.
Conserning module-info.java
см. Объявление модулей Spring с метаданными модуля JDK 9 при последней фиксации:
Эта проблема помечена как "Общее отставание", что означает, что мы не будем иметь дело с ней для 5.1 (в противном случае она все еще будет отмечена для 5.1 GA) и, вероятно, также не будет в последующих выпусках 5.x (в противном случае она будет отмечена как "5.x Backlog").
В частности, мы пока не можем отправлять файлы информации о модуле, так как нам нужны стабильные имена модулей для всех наших необязательных зависимостей... и многие из них не объявляют стабильные имена модулей в данный момент (то есть они не даже не включите запись манифеста Automatic-Module-Name в их банку). Кроме того, нам нужно было бы собрать весь фреймворк на JDK 9+, чтобы компилятор понимал формат module-info.java, который тоже не совсем тривиален, даже если известно, что сам фреймворк хорошо работает с JDK 9/10/11 во время выполнения.
В общем, мой прогноз о файлах module-info для 5.1 оказался слишком амбициозным. В настоящее время мы сосредоточены на общей совместимости JDK 11 (SPR-16391) на пути к классам и в качестве автоматических модулей на пути модулей, а также на совместимости с GraalVM (SPR-16991). Использование jlink требует ручного добавления файлов module-info.class в фреймворки фреймворка... пока что это может продолжаться в течение нескольких лет, пока мы не выпустим базовую версию JDK 11 Spring Framework 6.0 против нового поколения зависимостей,
Обновление от 03.11.2022
от Юргена Хеллера в № 18079
Наше стратегическое выравнивание с модульной системой конкурирует с нашими усилиями по созданию собственных образов AOT и GraalVM в версии 6.0, поэтому у нас, к сожалению, пока не было возможности поэкспериментировать с миграцией сборки на полные дескрипторы модулей. Было очень мало запросов на это даже в течение этого года, поэтому мы задаемся вопросом, есть ли какая-либо практическая ценность, которую можно обнаружить здесь на данный момент. В будущем использование подхода jlink, ограниченного модулями, для модулей уровня приложения/фреймворка может быть заменено образами среды выполнения, основанными на анализе индивидуальной достижимости в стиле GraalVM в долгосрочной перспективе.
Тем не менее, проект OpenJDK Project Leyden направлен на повторное использование концепций и инструментов модульной системы для своего стандартизированного подхода к статическим изображениям, поэтому более глубокое согласование модульной системы остается частью нашей долгосрочной технологической стратегии для поколения Spring Framework 6.x.