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?