License4J is a pure Java library for creating and validating licenses. The key concept is features of a license. You can easily add any feature to your license file, i.e. name of the product, version, expiry date, number of executable instances, customer s name, company, IP address, etc. The feature s value can be string or any serializable Java object. You can have unsigned features - features that are not used in the signature generation/verification and therefore can change their values leaving the license valid. Also the library provides methods for signing arbitrary content that should not be changed by the user.