On Feb 17, 2016, at 12:15 PM, Peter Levart <[email protected]> wrote: > > Suppose javac generates a random nest id for each nest (say 128 bit UUID). > Two classes are nest-mates if they belong to the same module *and* share the > same nest id.
There are two parts to this proposal: 1. New naming convention for nests, based on UUIDs. This is a new concept in the JVM, and would require new infrastructure to manage (generate, transcode, verify, reflect, debug). That means new bugs and new attack surfaces. In the absence of a decisive benefit, it's better to reuse existing name spaces, and (in particular) the JVM's type name dictionary. 2. Unidirectional links. The UUID, being a pure identity with no content, does not contain a list of its nestlings. The nestlings point to the nest (via the UUID). Any class can inject itself into a nest (in the same package) simply by mentioning the appropriate UUID. Unidirectional linkage means that there is no way to enumerate a nest. This complicates some optimizations (based on sealed types). Security and seal-ability of nests is reduced to that of packages. PRIVATE becomes just an alias for default-scope access control. Sorry, but neither part of this is appealing to me, compared with the current proposal. — John
