В декларации модуля Java 9 есть 2 конструкции:
exports com.foo;
И
opens com.foo;
Где exports
предоставляет доступ во время компиляции, а opens
обеспечивает доступ во время выполнения, как отражение и ресурсы.
opens
имеет одну снисходительность над exports
, что вы можете определить весь модуль как открытый, в результате получится так же, как явное открытие каждого пакета:
open module com.mod {
Но нет такой же конструкции
exported module com.mod {
Мой вопрос. Почему это так; какие решения были приняты, чтобы сразу открыть весь модуль, но не экспортировать?