Modules
Что это
Модульность - как абстракция, но над пакетами.
Как работает
Все модули ссылаются на java.base(как все классы на класс Object).
Ограничение
- Нельзя использовать одинаковые имена пакетов в нескольких модулях одного приложения.
- Нельзя создавать циклические зависимости. Но это не относиться в unnamed модулей(которые создаются
автоматически из приложений и библиотек которые не являются модулями).
Что включает модуль
- the module's name(обязательно)
- the module's dependencies(только если необходимы зависимости)
- the packages it explicitly makes available to other modules(только если модуль будет использоваться
другими модулями)
- the services it offers(не обязательно)
- the services it consumes(не обязательно)
- to what other modules it allows reflection(не обязательно)
Какие проблемы решает
- Избыточность подключаемых библиотек для работы приложения. Что приводит к увеличению итогового jar и jre.
- Невозможность скрыть(инкапсулировать) все желаемые части пакета, особенно с учетом рефлексии.