In Java 9's module declaration there are 2 constructs:
exports com.foo;
And
opens com.foo;
Where exports
grants compile-time access, while opens
allows runtime access, as reflection and resources.
opens
has one leniency over exports
that you can define the whole module as open, resulting the same as explicitly opening every package:
open module com.mod {
But there's no similar construct
exported module com.mod {
My Question: Why is it so; what decisions has been made to allow opening the whole module at once but not with exporting?