A standard module is physically organized as a directory containing files and nested directories.
The only file that must be present is module.xml which
must be located in the root ("/") directory.
All other files may be located in the root directory or nested subdirectories.
Development
While under development a module is stored in a file system directory.
Distribution
For distribution and deployment, a module is packaged in a ZIP or JAR file.
While a module JAR file may have any name, by convention the filename
uses the module's URN identifier in dotted form.
For example, if the module's urn is
urn:org:netkernel:some:module
and has a version 1.0.0. The jarred file name will be
urn.org.netkernel.some.module-1.0.0.jar
The use of periods (".") in the filename instead of colons (":") is required as some operating systems
cannot cope with a colon in a filename.
Java Classes
Each commissioned module uses its own custom classloader.
The module's classloader locates compiled Java classes relative to the root directory of the module.
This means that the class com.mycomp.endpoint.MyEndpoint would be
contained in the file /com/mycomp/endpoint/MyEndpoint.class.