Beta Draft: 2017-03-28

2 Version-String Format

The version-string scheme helps to easily distinguish major, minor, security, and patch update releases.

The format of the version-string is $MAJOR.$MINOR.$SECURITY.$PATCH.

  • $MAJOR is the version number that is incremented for a major release, for example JDK 9, which contains significant new features as specified by the Java SE platform specification. A major release contains new features and changes to existing features, which are planned and notified well in advance.

  • $MINOR is the version number that is incremented for each minor update, such as bug fixes, revisions to standard APIs, or implementation of features outside the scope of the relevant platform specifications. These specifications might be new JDK-specific APIs, additional service providers, new garbage collectors, and ports to new hardware architectures. For example, if an update is released for JDK 9, then the version string (containing major and minor release numbers) is 9.1.

  • $SECURITY is the version number that is incremented for a security-update release, which contains critical fixes, including those necessary to improve security. For example, for a JDK 9 security-update release, the version format can be 9.1.2, where 2 is the value of security update.

  • $PATCH is the version number that is incremented for a release containing security and high-priority customer fixes, which have been tested together. For example, if JDK 9 has minor version 1, security release 1, and patch update 1, then the version string format will be

    The $PATCH version number is reset to zero when $SECURITY, $MINOR, or $MAJOR version numbers are incremented.

When the $MAJOR version number is incremented, the subsequent version numbers of $MINOR and $SECURITY elements are set to zero. However, when $MINOR version number is incremented, the subsequent $SECURITY version number need not be set to zero. Regardless of the $MINOR version number, the higher security release value indicates a more secure release.


If there are two versions of JDK/JRE installed, one with the new version string format and other with the older version number, you need to store the data in two different Windows registry keys to enable compatibility among the two versions. For example, if there are JDK 1.8.0 and JDK 9 installed, then use the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit" for JDK 1.8.0 and "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK" for JDK 9. The registry layout must be set as follows:
"HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8"
"HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8.0"
"HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\CurrentVersion" = 1.8