Using modules in open source libraries

Stephen Colebourne scolebourne at joda.org
Tue Jul 26 10:10:49 UTC 2016


There has been a lot of discussion about exporting packages - at
compile time vs runtime and also the related problem of resources. I
decided to take a look at some open source projects to see whether a
list of exported packages is useful as currently defined:

These standard open source projects were designed prior to modules:

Joda-Time - 7 exported packages
Joda-Time-Hibernate - 1 exported package
Joda-Time-I18N - 1 exported package
Joda-Time-JspTags - 1 exported package
Joda-Money - 2 exported packages
Joda-Primitives - 10 exported packages
Joda-Convert - 2 exported packages
Joda-Collect - 1 exported package
Joda-Beans - 16 exported packages
Joda-Beans-Maven-Plugin - 1 exported package
Joda-Beans-UI - 5 exported packages
ThreeTen-Extra - 3 exported packages
ThreeTen-Backport - 6 exported packages
Google Guava - 18 exported packages, 1 non-exported package
SLF4J - 3 exported packages
JCommander - 4 exported packages, 1 non-exported package

Looking at the list, it is clear that non-exported packages are a
small use-case.
- 81 exported packages
- 2 non-exported packages

Strata [1] has been designed in Java 8 but with an awareness that
modules are coming:

Strata-Collect - 8 exported packages
Strata-Basics - 7 exported packages
Strata-Data - 2 exported packages
Strata-Calc - 3 exported packages
Strata-Product - 23 exported packages
Strata-Market - 13 exported packages
Strata-Loader - 3 exported packages, 1 only exported at runtime for reflection
Strata-Math - 1 exported package, 17 packages exported only to a
single friend module
Strata-Pricer - 19 exported packages, 10 non-exported packages
Strata-Measure - 15 exported packages

- 94 exported packages
- 17 exported to a single other module
- 11 non-exported packages

I'll use a different thread to express my opinion on what the data
means. Please use this thread to add summaries of other open source
projects.

Stephen

[1] https://github.com/OpenGamma/Strata


More information about the jigsaw-dev mailing list