uses is useless ?
Alan Bateman
Alan.Bateman at oracle.com
Wed Nov 16 10:44:21 UTC 2016
On 16/11/2016 10:25, forax at univ-mlv.fr wrote:
> :
> The whole point of uses is to enable a kind of static analysis on the service dependencies,
> if 'uses' is not required, if you can easily bypass it or it doesn't provide useful information,
> then it should be removed from the spec.
`uses` is used to link the consumers of services to the providers of
services. If nobody `uses S` then the modules that `provides S with ...`
will not be resolved (assuming nobody directly depends on these service
provider modules).
The scenario where a framework uses ServiceLoader on behalf of a
consumer really needs the consumer to declare that it uses the service
type, otherwise there is no guarantee that the modules that provide
implementation of the service will be resolved.
> :
> Yes, jlink doesn't do that, but my tool on top of jlink does it :)
> But as i said above, if the information given by 'uses' do not allow to do static analysis like finding the root modules (services included), it perhaps means that 'uses' doesn't worth its own weight.
jlink could do service binding
(s/resolveRequires/resolveRequiresAndUses) but all the initial feedback
was that people wanted the minimum number of modules in the image. It's
not hard to have jlink make some suggestions, it just hasn't been
implemented (this is what the open issue in JEP 282 is about).
-Alan
More information about the jigsaw-dev
mailing list