Provides clauses in binary module descriptor but not in source
doug.simon at oracle.com
Fri Apr 13 12:45:03 UTC 2018
> On 13 Apr 2018, at 14:33, Alan Bateman <Alan.Bateman at oracle.com> wrote:
> On 13/04/2018 13:16, Doug Simon wrote:
>> I just noticed that in the jdk.internal.vm.compiler module descriptor source there is a `uses` clause for CompilerConfigurationFactory but no `provides` clause for the CoreCompilerConfigurationFactory provider which is in the same module. However, `java -d jdk.internal.vm.compiler | grep Core` shows me the provider clause exists in the binary module descriptor. Is this done auto-magically by javac when building the module? If not, is it in the make files somewhere? I'm asking because there are new service providers being added in Graal.
> The build for that module is complex as it runs an annotation processor and generates a module-info.java.extra (see support/gensrc/jdk.internal.vm.compiler/ in the build output) that is merged with the module-info.java before it is compiled. So no javac magic.
Ah yes, I'd forgotten that the @ServiceProvider annotation was run my the JDK make system. Thanks for the helpful reminder; it means we can simply use this annotation for the new service providers we're adding and everything should Just Work.
More information about the jigsaw-dev