Hardmodulesjava9
Что такое модульность (Java Platform Module System, JPMS)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
JPMS (Project Jigsaw, Java 9) — система модулей на уровне платформы. Модуль — набор пакетов с явными зависимостями и экспортом в module-info.java.
// module-info.java
module com.example.app {
requires java.sql; // зависит от модуля
requires transitive com.lib; // транзитивная зависимость
exports com.example.api; // открывает пакет
opens com.example.entity; // для reflection (Jackson/Hibernate)
uses com.example.spi.Service; // сервис
provides Service with Impl; // реализация сервиса
}Цели:
- reliable configuration — явные зависимости;
- strong encapsulation — пакет без
exportsнедоступен снаружи (даже через reflection); - smaller JRE —
jlinkсобирает custom runtime только с нужными модулями.
JDK разбит на ~100 модулей (java.base, java.sql, java.desktop, ...). Jar с module-info работает и без module system (automatic/unnamed module). Migration сложный — многие библиотеки используют reflection на internals.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.