Libraries
It is often the case that it isn't practical to produce a program using only the modules that come with Java.
To cope with this reality you can use code written by others as "libraries" of functionality.1
When running a Java program from source you can provide the libraries
using --module-path <path to library jar> --add-modules ALL-MODULE-PATH
.
So if you had a library named tangerine.jar
you could run something like the following
command.
java \
--module-path tangerine.jar \
--add-modules ALL-MODULE-PATH \
src/Main.java
You do not need the --add-modules ALL-MODULE-PATH
if your code is itself inside of a named
module. The requires
in the module take care of telling Java what to include.
java \
--module-path tangerine.jar \
ex.mod/src/Main.java
If you use libraries you need to provide the same flags to javac
when compiling
your own code to share.
java \
-g \
-d output \
--module-path tangerine.jar \
--module-source-path "./*/src" \
--module example.module
Now that you can package your own code into JARs you can share code with others for this purpose.
-
Libraries can depend on libraries which depend on other libraries in sprawling nightmare graphs. For now let us assume that the libraries you want to use are relatively self-contained and reasonable to download manually. Dependency resolution and procurement can be a topic for a later day. ↩