requires public for automatic modules

Remi Forax forax at univ-mlv.fr
Fri Apr 22 09:12:58 UTC 2016


Hi Paul,

----- Mail original -----
> De: "Paul Bakker" <paul.bakker.nl at gmail.com>
> À: jigsaw-dev at openjdk.java.net
> Envoyé: Vendredi 22 Avril 2016 10:52:23
> Objet: requires public for automatic modules
> 
> Hello,
> 
> I'm experimenting with automatic modules again. I have a module
> "demonstrator" that uses Jackson Databind.
> 
> 	import com.fasterxml.jackson.databind.ObjectMapper;
> 	....
> 	ObjectMapper mapper = new ObjectMapper();
> 	String json = mapper.writeValueAsString(modularityBook);
> 
> In module-info.java I have the following:
> 
> 	requires jackson.databind;
> 
> On the modulepath I have jackson.core, jackson.databind and
> jackson.annotations.
> Building results in an error:
> 	
> 	 class file for com.fasterxml.jackson.core.Versioned not found
> 
> This makes sense because the ObjectMapper class that I'm using implements the
> Versioned interface (from jackson.core).
> When generating a module-info.java using jdeps for the jackson.databind JAR
> however, it generates the following:
> 
> 	requires public jackson.annotations;
> 	requires public jackson.core;
> 
> This is much closer to what I would expect when using the jackson.databind
> module.
> When using jackson.databind as an automatic module, I will end up with a list
> of requires for transitive dependencies that I shouldn't have to care about.
> Why don't automatic modules take better care of transitive dependencies, so
> that the application's module-info looks similar to what it would after
> transforming the dependencies to named modules?
> 

because it will require the runtime to parse the bytecode of an automatic module, which is a slow operation.

> Also, jdeps doesn't actually show this problem when looking at the code when
> still on the classpath:
> 
> 	jdeps -cp lib/jackson-databind-2.7.3.jar
> 	out/com/javamodularity/demonstrator/Demo.class
> 	
> 	Demo.class -> lib/jackson-databind-2.7.3.jar
> 	Demo.class -> java.base
> 	   com.javamodularity.demonstrator (Demo.class)
> 	      -> com.fasterxml.jackson.databind
> 	      jackson-databind-2.7.3.jar
> 	      -> java.io
> 	      -> java.lang
> 
> Best regards,
> 
> Paul Bakker
> 
> 
> 

regards,

Rémi


More information about the jigsaw-dev mailing list