java.corba and EE modules not resolved by default

Alan Bateman Alan.Bateman at oracle.com
Tue May 17 10:46:21 UTC 2016


Just a heads-up that jdk-9+118 includes a refresh of the module system. 
There are several changes in this update, the most significant of which 
is that the default set of root modules when compiling code in the 
unnamed module, or when running code and the main class is loaded from 
the class path, is based on the `java.se` module rather than the 
`java.se.ee` module. This aligns the implementation with the policy for 
root modules that is described in JEP 261 [1].

So what does gobbledygook mean? It means that if you are compiling or 
running code on the class path then types in the following 6 modules 
will not be visible by default:

     java.activation
     java.annotations.common
     java.corba
     java.transaction
     java.xml.bind
     java.xml.ws

It will "as if" the types in these modules do not exist.

The JEP will be updated soon to describe the rational more clearly but 
it essentially comes to to eliminating conflicts between libraries that 
are deployed on the class path with types in the same package as these 
modules. It also makes it a little bit easier for EE/application servers 
that deploy with the Java EE versions of some of these modules.

Note that these modules have not been removed. The `-addmods` option can 
be used to add them to the set of root modules when compiling or running 
existing code. For example, code that uses CORBA will compile and run as 
before with `-addmods java.corba`. New code that is developed as modules 
will use the `requires` clause to declare the dependency, no special 
command line option needed.

In summary, this is a case where one policy doesn't suit all. The 
proposal is to run with this policy for a period and then re-evaluate 
once we have a better idea as to how many applications rely on JDK 
versions of these modules.

-Alan

[1] http://openjdk.java.net/jeps/261


More information about the jdk9-dev mailing list