Mutable modules

David M. Lloyd david.lloyd at redhat.com
Fri May 20 15:30:05 UTC 2016


I had one last follow-up thought, see below:

On 05/20/2016 10:20 AM, David M. Lloyd wrote:
> You can't, on one hand, define a universal namespace and syntax for
> modules and their versions in the JDK or establish hard constraints on
> layer and module graph structure, and on the other hand expect other
> module systems with differing existing constraints to unify on the JDK
> module system.  You're basically cutting these systems off at the knees
> and forcing them to reinvent everything, unless you completely
> coincidentally have a system that already conforms to this structure (if
> so, you are either very fortunate or maybe starting off in a rather
> privileged position).

To be clear, what I'm advocating for is to separate these constraints 
from *at least* the diagnostic benefits and (f we can resurrect the 
access control discussion) the security benefits of JDK modules at run time.

This might take the form of much greater autonomy for Layers as I've 
proposed in the issues.  But, it might also take the form of allowing 
non-Jigsaw-style code to (separately, independently) arbitrarily create 
and manage Modules at run time, completely separate from descriptors, 
linking behavior, etc.  In other words, if I can establish a Class or 
Package in my class loader, while at the same time defining its module 
diagnostic information (name, version string, location string, etc.) and 
security information (what packages can access the nonpublic members of 
this package, preferably a (possibly wholly or partly weak) set that can 
be added to at run time), then suddenly Jigsaw-style module artifacts 
can coexist with other module systems without any drawbacks that I can 
see, and other existing module systems will then gain access to the 
fancy stack traces I like so much and any new access checking 
capabilities that are established.  The changes I or other maintainers 
need to make become minimal because the constraints that Jigsaw imposes 
are no longer stumbling blocks.  Whether or not this means I have to 
define a real Module becomes immaterial from an implementation standpoint.

I hope these ideas are making some kind of sense.
-- 
- DML


More information about the jigsaw-dev mailing list