# Multi-Version Support

This chapter includes the following topics:

- Unique `CLSID`
- Unique MIME Type and dll
- Unique Java Plug-in Registry Key
- Unique Java Plug-in Property File
- Unique Java Plug-in Trace and Log Files
- Unique Java Plug-in Control Panel
- Unique Registry Keys for JRE/JDK
- Multi-version Support in Browser Sessions

So that multiple JRE versions may be deployed in the same environment, every new or patch release of Java Plug-in uniquely identifies registry keys, `CLSID`, MIME type and other resources.

Notes: (1) For an explanation of product version numbers, see the note in the section called "Using `OBJECT`, `EMBED` and `APPLET` Tags in Java Plug-in." The examples in this section are for version 1.5.0. (2) While the examples below are for Windows, multi-version support also applies to Solaris and Linux.

### Unique `CLSID`

There is a unique CLSID for every new/patch version of Java Plug-in. (`CLSID` is used in the `OBJECT` tag with Internet Explorer running on Windows.) If you want a particular version of Java Plug-in to be used, then specify this unique `CLSID` in the `OBJECT` tag. The `CLSID` is stored in the registry in:

> `HKEY_CLASSES_ROOT\CLSID\`

In general the CLSID looks as follows:

`CAFEEFAC-<major version>-<minor version>-<patch version>-ABCDEFFEDCBA`

where `major version`, `minor version` and `patch version` are all 4-digit hexadecimal numbers.

#### Examples:

For example, the CLSID for Java Plug-in 1.5.0 is:

> `CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA`

and you would find this in the registry:

> `HKEY_CLASSES_ROOT\CLSID\CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA`

Note that CLSID is also stored in:

> `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Code Store Database\Distribution Units\`

### Unique MIME Type and dll

There is a unique MIME type and `NP*.dll` for every new/patch version of Java Plug-in. (MIME type is used in the `EMBED` tag with Netscape and as a `PARM` in the `OBJECT` tag for Internet Explorer. `NP*.dll` is unique to Netscape.) If you want to use a particular version of Java Plug-in with Netscape, specify the unique MIME type in the `EMBED` tag.

Note that this MIME type will be supported by an `NP*.dll` with a unique name for every new/patch version. Thus, installing different version of Java Plug-in does not overwrite other `.dll` files in Navigator's `Plugins` directory.

In general MIME types look like this:

> `application/x-java-applet;jpi-version=<version>`

where `version` includes the major, minor and patch version numbers.

MIME types are supported in the file
`NPJPI<modified version number>.dll```

#### Example:

For Java Plug-in 1.5.0, the unique MIME type would be:

> `application/x-java-applet;jpi-version=1.5.0`

and it would be supported in the file:

> `NPJPI150.dll`

in Navigator's `Plugins` directory.

### Unique Java Plug-in Registry Key

There is a unique Java Plug-in registry key for every new/patch version of Java Plug-in. The main Java Plug-in registry key is:

> `HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Plug-in\<version number>`

where the <version number> will include the major, minor and the patch version numbers.

#### `Example:`

For Java Plug-in 1.5.0 you will find the following in your registry:

> `HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Plug-in\1.5.0`

### Unique Java Plug-in Property File

The property file is now named `deployment.properties`. It is located in the directory

> `<User Application Data Folder>\Sun\Java\Deployment`

where `<User Application Data Folder>` is an application data folder specific to the user. As an example, for a user `stanleyh` on a Windows XP system, the value of `<User Application Data Folder>` would be

> `C:\Documents and Settings\stanleyh\Application Data`

This property file is used by version 1.4.2, as well as all later versions.

The value of `<User Application Data Folder>` is obtained from the Win32 API function call `SHGetFolderPath()` with `CSIDL_APPDATA`.

### Unique Java Plug-in Trace and Log Files

The default location for trace and log files is

`<User Application Data Folder>\Sun\Java\Deployment\log`

where `<User Application Data Folder>` is as defined above.

The names of the trace and log files are

> `plugin<modified version number>.trace`
> `plugin<modified version number>.log`

where the `<modified version number>` includes the major, minor and patch version numbers; e.g., `plugin150.trace`

The property `javaplugin.outputfiles.path` can be used to override the default location for the trace and log files.

### Unique Java Plug-in Control Panel

There is a unique Java Plug-in Control Panel for every new or patch release. In 1.5.0, the filename for the Control Panel is `javacpl.exe`.

Only the latest installed version of the Java Plug-in Control Panel is available from the Windows Control Panel.

### Unique Registry Keys for JRE/JDK

There are unique registry keys for every new or patch release of the JRE/JDK. These registry keys are located as follows:

> `HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\<version number>
> ` `HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Development Kit\<version number>`

where the `<version number>` includes the major, minor and the patch version numbers; e.g., `1.5.0`

These keys allow Java Plug-in to locate the proper version of the JRE.

### Multi-version Support in Browser Sessions

It is very important to note the following:

Multiple versions of the JRE can be run in different browser sessions. However, multiple versions can not be run in the same browser session. Should this be attempted, the user is warned and the attempt will fail.