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.