Using modules in open source libraries

Alan Bateman Alan.Bateman at oracle.com
Tue Jul 26 11:08:58 UTC 2016


On 26/07/2016 11:10, Stephen Colebourne wrote:

> Please use this thread to add summaries of other open source
> projects.
>
Many general libraries are going to export most or all packages as that 
is the way that they are structured. No surprise there. Exporting all 
packages is also the starting point for migration when using automatic 
modules. When you move to creating explicit modules then you are forced 
to think about which packages are part of the API, that seems like a 
good thing!

In any case, here's some data from a recent OpenJDK build. The JDK puts 
a lot of implementation into non-exported packages so the profile will 
be different.

java.activation                   1 exported,   1 internal
java.annotations.common           1 exported,   0 internal
java.base                        51 exported, 106 internal
java.compact1                     0 exported,   0 internal
java.compact2                     0 exported,   0 internal
java.compact3                     0 exported,   0 internal
java.compiler                     6 exported,   0 internal
java.corba                       31 exported,  83 internal
java.datatransfer                 1 exported,   1 internal
java.desktop                     50 exported,  75 internal
java.httpclient                   1 exported,   1 internal
java.instrument                   1 exported,   1 internal
java.logging                      1 exported,   3 internal
java.management                  10 exported,  14 internal
java.naming                       5 exported,  11 internal
java.prefs                        1 exported,   0 internal
java.rmi                          6 exported,   7 internal
java.scripting                    1 exported,   1 internal
java.se                           0 exported,   0 internal
java.se.ee                        0 exported,   0 internal
java.security.jgss                2 exported,  15 internal
java.security.sasl                1 exported,   4 internal
java.smartcardio                  1 exported,   1 internal
java.sql                          3 exported,   0 internal
java.sql.rowset                   3 exported,   3 internal
java.transaction                  1 exported,   0 internal
java.xml                         25 exported,  83 internal
java.xml.bind                     6 exported,  51 internal
java.xml.crypto                   6 exported,  26 internal
java.xml.ws                      11 exported, 128 internal
jdk.accessibility                 1 exported,   1 internal
jdk.attach                        2 exported,   1 internal
jdk.charsets                      0 exported,   1 internal
jdk.compiler                      4 exported,  26 internal
jdk.crypto.ec                     0 exported,   1 internal
jdk.crypto.pkcs11                 0 exported,   2 internal
jdk.dynalink                      5 exported,   1 internal
jdk.hotspot.agent                 0 exported,  97 internal
jdk.httpserver                    2 exported,   1 internal
jdk.internal.le                   0 exported,   7 internal
jdk.internal.opt                  0 exported,   3 internal
jdk.jartool                       2 exported,   3 internal
jdk.javadoc                       7 exported,  23 internal
jdk.jcmd                          0 exported,   7 internal
jdk.jconsole                      1 exported,   2 internal
jdk.jdeps                         0 exported,   5 internal
jdk.jdi                           5 exported,   4 internal
jdk.jdwp.agent                    0 exported,   0 internal
jdk.jlink                         1 exported,  10 internal
jdk.jshell                        3 exported,   6 internal
jdk.jsobject                      1 exported,   1 internal
jdk.jstatd                        0 exported,   3 internal
jdk.jvmstat                       0 exported,   7 internal
jdk.localedata                    0 exported,   6 internal
jdk.management                    1 exported,   1 internal
jdk.naming.dns                    0 exported,   2 internal
jdk.naming.rmi                    0 exported,   2 internal
jdk.net                           1 exported,   0 internal
jdk.pack200                       0 exported,   0 internal
jdk.policytool                    0 exported,   1 internal
jdk.rmic                          0 exported,   9 internal
jdk.scripting.nashorn             2 exported,  27 internal
jdk.scripting.nashorn.shell       0 exported,   1 internal
jdk.sctp                          1 exported,   1 internal
jdk.security.auth                 4 exported,   0 internal
jdk.security.jgss                 1 exported,   1 internal
jdk.unsupported                   3 exported,   0 internal
jdk.vm.ci                         3 exported,  13 internal
jdk.xml.bind                      0 exported,  68 internal
jdk.xml.dom                       4 exported,   0 internal
jdk.xml.ws                        0 exported,  27 internal
jdk.zipfs                         0 exported,   1 internal

Total exported: 280
Total internal: 987

The "0 exported" is the norm for service provider module,  also API-less 
tool modules. Also in the above then aggregator modules report "0 
exported" because they don't have any content.


More information about the jigsaw-dev mailing list