The basic concept of licensing involves generating a unique license key. This key, along with additional
information about the client's device, is sent to a license server. The server then returns encrypted and
signed license data to the client, which can be saved either on the disk or in the Windows registry. This
saved license data is used for validation each time the software is started.
The licensing landscape comprises a variety of models and terminology; however, it remains relatively
straightforward. Primarily, there exist two fundamental types of licenses: node-locked and floating. A
node-locked license is restricted to a specific device, whereas a floating license allows access across
multiple devices, contingent upon availability.
Additional features applied to these primary categories give rise to various licensing models. For instance,
a perpetual license is characterized by its indefinite validity and may either be node-locked or floating.
In contrast, a subscription license is limited to a predetermined time frame and will ultimately expire;
this type can also be structured as either node-locked or floating.
For floating license types, an internet connection is essential, as validation is consistently conducted on
the server, and no license data is retained on the client’s device. In contrast, node-locked license types
do not necessitate an internet connection, as the license data is stored on the client’s device following
the initial validation. If the client device possesses an internet connection, the validation of the
node-locked license is concurrently verified with the server to ensure online validity or to facilitate
updates to the license.
The licensing library is readily available on Maven Central, making it simple to integrate with a variety of
build tools. This centralized repository ensures that developers can quickly access the library and
incorporate it into their projects without hassle. By leveraging the Maven Central infrastructure, users can
take advantage of automated dependency resolution and updates, streamlining their development process while
ensuring they are using the latest version of the library. Java version 8 and all later versions are fully supported.