Что такое Java-модули?
Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.
Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна:
Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.
Модуль определяется файлом объявления
JVM может работать относительно модулей в трех режимах:
• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.
• Single module mode – когда не используется флаг
• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в
#Модули
Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.
Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна:
Class.forName()
выбросит ClassNotFoundException
.Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.
Модуль определяется файлом объявления
module-info.java
. Поговорим о его содержимом и о применении модулей вообще в будущих постах постах.JVM может работать относительно модулей в трех режимах:
• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.
• Single module mode – когда не используется флаг
--module-source-path
. Структура проекта остается старой, файл module-info.java
лежит в директории /src
. Поэтому иметь несколько модулей в одном проекте не получится.• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в
--module-source-path
. Полноценное использование JPMS.#Модули