Exporting - the wrong default?

Paul Benedict pbenedict at apache.org
Mon Aug 1 16:04:13 UTC 2016

Stephane, please take my words within context. I wasn't being too
technical; just merely using "public to the world" with regards to
exporting packages. However, I appreciate your technical eye to get the
details right. Thanks for the broader explanation.


On Mon, Aug 1, 2016 at 10:58 AM, Stephane Epardaud <stef at epardaud.fr> wrote:

> I don't think public ever meant "public to the world". In Java 1->8 it
> means "visible to those who can see the containing scope". If you declare a
> public inner class in a private (or package-private) class, then those who
> cannot access the outer type also cannot access the public inner class.
> So no, "public" never meant "visible to everyone", it was always about
> scope.
> On the other hand, for toplevel types, the scope had always been the
> package, and packages were public by default. Now that default changes to
> private, but notice that even here, a package is only private outside its
> scope (the module). Other packages in the same scope (module) will be able
> to access it.
> So for me it's always been about exporting from the current scope.
> On 01/08/16 17:38, Paul Benedict wrote:
>> To echo David, there is a complaint by me in these archives how I still
>> find it difficult to remember that "public" is no longer being public. I
>> feel the same way today still. The word "public" means "for everyone" so
>> it's always jarring to have it no longer mean what it should mean in
>> normal
>> English. Also, I find it less than appealing to do double-duty to make my
>> classes public. I now have to remind myself to export my package but it's
>> still something I forget. I find this step to be a nuisance. That's my
>> real
>> world feedback.

More information about the jigsaw-dev mailing list