On 05/16/2017 06:02 AM, Alan Bateman wrote:
On 12/05/2017 14:31, David M. Lloyd wrote:

:

There is a lot more to #5, something that will become clear when you work through all the scenarios. The JSR and spec part are minor though but I'd prefer to hold off until there is more discussion on this topic in the JSR.

I'd rather not hold off as the JSR essentially only has a couple of weeks left to live if there is not a revised PR. Could you please explain what you mean? Are you referring to jlink, jaotc, or something else?

For the most part, this is not a JSR issue. In any case, some of the issues from other exploration and prototypes in this area:

1. Interaction with code on class path, esp. when you have two or more modules in the configuration for the boot layer that export the same package.

I would say that isolated modules should be inaccessible from the class path, and can be specified accordingly. I don't think this would cause any particular usability concern or surprise; isolated modules are specifically intended to solve problems like package duplication that already means that the class path can't sensibly interact with them in an direct way.

Also, if a user is going so far as to isolate modules from one another, I think it's a relatively small step to modularize whatever class path code they have.

2. Split delegation issues that can arise when explicit modules on the module path do qualified exports to upgraded modules or even tool or automatic modules defined to the application class loader.

I'll have a look at the upgraded modules code; I didn't realize that they would work differently from a normal module path module.

Automatic modules should be subject to the same behavior as regular modules, but I'll double-check that as well.

By tool modules, are you referring to jdk.compiler etc.?

3. Visibility of types in non-exported packages, say where you have jdk.compiler defined to its own class loader but have code on the class path that makes use of types in conjunction with encapsulation busting options.

The current patch only allows application modules to be isolated. Otherwise this seems to be related to #1: I think it's reasonable to prevent class path code from accessing isolated modules.

I think it's important to note that the class path does not need to have direct access to the full set of modular features - especially if such access would come at the cost of truncating that feature set.

4. TCCL.

For this one I was thinking that TCCL should be set to the class loader of the module that was executed. In the non-isolated case, this would be the application class loader, but in the isolated case it would depend on whether or not the main module was isolated.

There are other issues that arise from changing visibility but these are no different to issues that arise when using graphs of class loaders.

-Alan.



--
- DML

Reply via email to