We're using some scripts to query a user's system registry for specific Java runtime versions. We've noticed there are several CSLIDs for any give version. For example, version 1.7 release 9 has two CSLIDs
Your first entry, CAFEEFAC-0017-0000-0009-ABCDEFFEDCBA is a static ID and specifies a specific version. If this version is installed, it would be used. If this version is not installed, the app will fail to run. If the app is configured to point to a download location, it will be used to attempt downloading of this version. That said, the exact behavior may differ depending on exactly which versions you are working with. The behavior has been changed numerous times in order to ensure that end-users are running the latest releases.
The second entry, +8AD9C840-044E-11D1-B3E9-00805F499D93+ is the dynamic classid. If an application is configured with this entry is run, the plug-in of the latest version will be used. So, for example, if you have 1.7.0_4, 1.7.0_8, and 1.7.0_13 installed and the app call the dynamic ID, U13 would be the one used. In this example, each of these installation would have needed to have been installed statically. (See below for details). All versions will include a reference to the dynamic ID
Edited by: Michael Ferrante (Oracle) on Feb 15, 2013 2:43 PM