Need help implementing Java modules

Alex Buckley alex.buckley at oracle.com
Tue May 9 22:39:14 UTC 2017


On 5/9/2017 3:04 PM, Ralph Goers wrote:
> Pardon me for being dense, but my reading said that Java modules
> disallowed runtime cycles as well as compile time. Once LoggerFinder
> binds with the module that provides that service does that not create
> a runtime dependency?  I don’t recall seeing anything describing what
> the behavior of that is.

The module system disallows cycles in the 'requires' directives of 
module declarations. The module system allows cycles in the "reads" 
relation of run-time modules.

When java.base 'uses LoggerFinder;' and invokes ServiceLoader to find 
providers, there is indeed a "reads" cycle created between the provider 
module and java.base. ServiceLoader is not special in creating this 
cycle -- you can create them yourself with the two addReads methods in 
the API, and all automatic modules have cyclic readability. But there is 
no 'requires' cycle.

Alex


More information about the jigsaw-dev mailing list