Java SE platform has adopted time-based release model with the JDK being released every six months.
As of JDK 10 and later, the format of the version string, which reflects the Java SE platform's time-based release model, is
$FEATUREis the version number that is incremented for every feature release. The feature release contains new features and changes to the existing features as specified by the Java SE platform specification. The version number is incremented every six months. For example, the version number for the March 2018 release is 10, the version number for the September 2018 release is 11, and so on.
$INTERIMis the version number that is incremented for every interim release, which contains bug fixes and enhancements. An interim release does not contain incompatible changes, feature removals, nor any changes to the standard APIs. The version number for the interim release is always zero (0) as the six-month release model does not include interim releases. However, this version number is reserved for future interim releases, if any.
$UPDATEis the version number that is incremented for an update release, which includes fixes for security issues, regressions, and bugs in new features. The version number is incremented one month after the
$FEATURErelease and every three months thereafter. For example, the full version string for the October update release is 12.0.1, the full version string for the January update release is 12.0.2, and so on.
$PATCHis the version number that is incremented for an emergency patch release to fix a critical issue.
The version string doesn't have trailing zero elements. For example, if the value of
$FEATURE is 12, the value of
$INTERIM is 0, the value of
$UPDATE is 1, and the value of
$PATCH is 0, then the full version string is 12.0.1.