[External] : Re: Inconsistency with service loading by layer or by class loader
Alan Bateman
alan.bateman at oracle.com
Thu Dec 19 13:57:48 UTC 2024
On 18/12/2024 15:09, David Lloyd wrote:
> :
>
> No. Since we are late-binding all modules, every module we would load
> would start with no `requires`, and we use `addReads` on the
> controller to wire in the dependencies when the module is lazily linked.
I'm going to stop here as I think there is enough in this sentence to
put context on where you are coming from and why some of the previous
mails were a bit baffling.
If I've compiled my code as a module then it will have declared its
dependencs, it may use or provide services, and it might export some
internal packages to other modules in the project. I think your mail is
suggesting that the module-info.class is modified, or substituted, in
your system to not have any references to other modules. Once the module
is reified by creating a single-module module-layer then read edges will
be added dynamically. I assume that anything that uses APIs to examine
the Module or ModuleDescriptor will see a module that only requires
java.base.
My view is that this direction is in a completely different design space
to that of configurations and module layers. We did build an internal
API to support very specific "dynamic module" use-cases in the JDK, e.g.
some Proxy scenarios required do code gen into a dynamic code, same
thing with code generation for RMI remove refs. We decided to not expose
anything at this level as it's essentially the all powerful Unsafe API
for modules.
So within the current design, I don't think adding addUses/addProvides
methods to ML.Controller make sense.
-Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jigsaw-dev/attachments/20241219/4b13f0db/attachment-0001.htm>
More information about the jigsaw-dev
mailing list