A module name is a dot-separated string which is used along with a version slot identifier to uniquely identify a module within a module loader. Names are typically organized along the same lines as package names, however there is no specific relationship between a module name and the packages it contains. These are all examples of typical module names:
Most module loaders support loading a special module called "system". This module refers to the class loader which loaded the jboss-modules.jar itself. Due to the fact that this class loader may include just about anything, rather than using this module directly, one should make use of [import and export filtering] to present a "reduced" version of this module.
Version slot identifiers are used when you wish to have more than one instance of a module in a module loader under the same name. This may occur when introducing a new major version of a module which is not API-compatible with the old version but is used by newer applications. A version slot identifier is an arbitrary string; thus one can use just about any system they wish for organization. If not otherwise specified, the version slot identifier defaults to "main".
When identifying a module in a string, the version slot identifier can be appended to the module name, separated by a colon ":". For example, the following two module identifier strings refer to the same module:
The following three module identifier strings refer to different modules:
Within the Modules API, a module identifier is represented by the org.jboss.modules.ModuleIdentifier class, which has the ability to parse identifier strings as well as assemble a name or a name plus a version slot identifier into a module identifier.