[External] : Re: Inconsistency with service loading by layer or by class loader

Alan Bateman alan.bateman at oracle.com
Tue Dec 17 16:57:03 UTC 2024


On 17/12/2024 14:21, David Lloyd wrote:
> :
>
>
> However, to give a counter-example, `Module` has `addUses` as well. 
> But if I want to call `addUses` on behalf of a module I've defined, 
> there is no corresponding `ModuleLayer.Controller` method so I do have 
> to define the extra class, and that's a bit silly. This is an example 
> of an easy enhancement that would not affect the integrity of the 
> platform, would not significantly increase maintenance burden (since 
> the logic would be nearly identical to its sibling methods), and would 
> be easy to achieve.
>

Module::addUses is for cases where code may need to create a SL that 
loads a service that wasn't known to this module at compile time.

ML.Controller is the equivalent of the --add-exports, --add-opens, 
--add-reads command line options for the boot layer. There was little 
motive to work through the implications of --add-uses and --add-provides 
and the ML.Controller equivalents at the time. The exception is the 
agent case where instrumentation may augment the services used (or 
provided).

Time has passed and I can only think of one request for --add-uses has 
come up. That request didn't go very far because service binding 
augments the module graph during resolution. A CLI option (or 
ML.Controller equivalent) can only work reflectively, which is 
post-resolution. This is of course too late for what the group 
requesting this wanted. It hasn't been re-examined since then at least 
not to my knowledge.

-Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jigsaw-dev/attachments/20241217/efb6d566/attachment.htm>


More information about the jigsaw-dev mailing list