Tuesday, December 3, 2013

When multiple versions of Java are installed, what version wins?

The flow is, latest version > 64-bit > 32-bitWhile the flow is understandable, different flows are used and present the following experiences.

Java Web Start


The installer registers the JNLP file association. This is a per-system registration and does not have corresponding 32-bit/64-bit entries.

A problem arises when both 32-bit and 64-bit of the same version are installed. The 64-bit version is registered and causes calls that require the 32-bit version to fail. For example, opening a JNLP file within the 32-bit version of Internet Explorer.

Control Panel


The installer uses the same GUID for Java 1.5, 1.6, 1.6 (x64), 1.7 and 1.7 (x64) when registering the Control Panel applet. This GUID is placed in both the 32-bit and 64-bit sections of the registry. When both 32-bit and 64-bit versions are installed, Windows uses the 64-bit registry section entry and discards the 32-bit section entry.

A problem arises when both 32-bit and 64-bit of the same version are installed. The the 64-bit version is available in the Control Panel allowing 64-bit versions to be managed. Conversely, the 32-bit version is not available in the Control Panel which does not allow 32-bit versions to be managed. For example, when using the 32-bit version of Internet Explorer users can manage which versions are available. This cannot be done if the user cannot manage the 32-bit versions.