On 10/09/2015 23:40, Jochen Theodorou wrote:
:

As far as I understood a classloader can have a N modules plus the unnamed module. I assume a the children of a classloader do not automatically share modules (or not at all?) with their children.
The "Class loaders" section in the SOTMS document provides a good summary of the proposed design. The current builds implement this so that a module is defined to a class loader. You can't some types in a module defined by one class loader and other types in the same module defined by a different class loader (how would package private access work for example).

I'm sure there will be lots of discussion about class loaders in the JSR.


Do assume right in that there is no way to create a module at runtime?

Next question is about runtime generated classes. And I mean here classes generated by user code at runtime, as well as proxies, code for reflection and invokedynamic and all the other bytecode generating facilities. Will they all go into the unnamed module?
In the proposed design there is a concept of layers of modules. The EA/prototype builds have API support for this and you'll find tests in the jdk repo that exercise this API to create configurations and instantiate them as modules in the run-time.

Supporting dynamic languages and creating dynamic modules is very much an advanced topic at this time and there isn't support in the exported API for this. There is of course low-level support in the implementation and you'll find that Proxy and a few other areas that spin classes at run-time are using it in the current builds.

At this time, if you are spinning classes the same package/loader of existing modules then those generated classes will be members of the module. If you are spinning classes into new packages or different class loaders that don't have any modules defined to them then they will be in that loader's unnamed module.


Assuming they go there (how else can you choose from those N modules), what access rights to the modules will they have? I assume to everything that is exported, and for that it does not matter if it is the same class loader or a parent or any other loader.
Assuming they created in an unnamed module then it's as per the "Unnamed modules" section of the document.

I see you have other questions about Groovy being a man-in-the-middle. I don't have time to reply to that now, others have have cycles to engage on that topic.

-Alan.

Reply via email to