Why is exporting the entire module not allowed?

Viewed 2008

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?

1 Answers
Related