# Using `applet`, `object` and `embed` Tags

This chapter includes the following topics:

- Introduction

- General Considerations

- Using the `applet` tag

- Using the `object` tag

- Using the `embed` tag

- Deploying Applets in a Mixed-Browser Environment

## Introduction

This chapter explains to HTML authors how and when to use the `applet`, `object`, and `embed` tags to add Java applets to Web pages. In addition, this chapter provides guidelines for deploying applets on the Internet and Intranets, and for use with different browsers.

## General Considerations

How you deploy an applet depends on whether users access the Web page through the Internet or an Intranet, and the type of browser they use. Note this information about your users, then follow the general guidelines below.

### Deploying Applets on the Internet Versus an Intranet

When deploying applets:

- Use the `applet` tag if the Web page is accessed through the Internet.

- Use the `object` or `embed` tag if the Web page is accessed through an Intranet.

### Deploying Applets for Specific Browsers

When deploying applets:

- For Internet Explorer only, use the `object` tag.

- For the Mozilla family of browsers only, use the `embed` tag.

If you must deploy an applet in a mixed-browser environment, follow the guidelines in the section Deploying Applets in a Mixed-Browser Environment.

## Using the `applet` tag

You use the applet tag to deploy applets to a multi-browser environment.

For complete details on the `applet` tag, read the W3 HTML specification.

Note: The HTML specification states that the `applet` tag is deprecated, and that you should use the `object` tag instead. However, the specification is vague about how browsers should implement the `object` tag to support Java applets, and browser support is currently inconsistent. Sun therefore recommends that you continue to use the `applet` tag as a consistent way to deploy Java applets across browsers on all platforms.

Following is an example of the `applet` tag:

        <applet code=Applet1.class width="200" height="200">
        Your browser does not support the <code>applet</code> tag.
        </applet>

For both Internet Explorer and the Mozilla family of browsers, if Java Plug-in is installed (version 1.3.1_01a or later) then the highest installed version of Java Plug-in is invoked to run the applet.

## Note You cannot use the `applet` tag to automatically download a JRE if one is not installed locally.

## Using the `object` tag

You use the `object` tag to deploy applets that are to be used only with Internet Explorer. For complete details on the `object` tag, read the W3 HTML specification. Following is an example of the `object` tag:

    <OBJECT
      classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
      width="200" height="200">
      <PARAM name="code" value="Applet1.class">
    </OBJECT>

### The classid Attribute

The `classid` attribute identifies which minimum version of Java Plug-in to use.

The example shown below is the most commonly used form of the `classid` attribute. This example instructs Internet Explorer to use the highest installed version of Java Plug-in.

> `classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"`

Following is an alternative form of the `classid` attribute:

> `classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA"`

In this form, "xxxx", "yyyy", and "zzzz" are four-digit numbers that identify the minimum version of Java Plug-in to be used. For example, to use Java Plug-in version `1.6,` you specify:

> `classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA"`

### The codebase Attribute

You use the optional `codebase` attribute to specify if and how to download the JRE.

The `codebase` attribute has two forms:

- `codebase=<URL>`
  With this form, if the JRE specified by the `classid` attribute is not installed locally, then the user is prompted to download the JRE from the URL specified.

- `codebase=<URL>#Version=major,minor,micro,update`
  With this form, if the version of the JRE specified in the codebase attribute is greater than the version of the JRE specified by the `classid` attribute, then the user is prompted to download the JRE from the URL specified.

Following is an example of how to use the `codebase` attribute to set up automatic downloads from the Sun Java Web site:

    <object
      classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
      width="200" height="200"
      codebase="http://java.sun.com/products/plugin/autodl/
    jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0">
      <param name="code" value="Applet1.class">
    </object>

Note: In this example the `codebase=http://java.sun.com ...` line is broken for readability. In the actual HTML file it would be one long line.

Sun has packaged each version of the JRE installer in Microsoft cabinet (`.cab`) file format. You can view a list of these releases and the corresponding `.cab` file names.

## Using the embed tag

You use the `embed` tag to deploy applets that are to be used only with the Mozilla family of browsers.

Following is an example of the `embed` tag:

    <embed code="Applet1.class"
      width="200" height="200"
      type="application/x-java-applet;version=1.6"
      pluginspage="http://java.sun.com/javase/downloads/ea.jsp"/>

The type attribute can have one of two forms:

- `type="application/x-java-applet;version=1.6"`
  With this form, the highest installed JRE that supports the MIME type i.e. `application/x-java-applet;version=1.6` is invoked to run the applet. If a JRE with a version number equal to or greater than the version number specified is installed locally, then that JRE is invoked. Otherwise the user is directed to the URL specified as the value of the `pluginspage` attribute.

- `type="application/x-java-applet;jpi-version=1.5.0_07`
  With this form, a JRE with at least the specified update version given by the the value of `jpi-version` (in this example, 1.5.0_07) is invoked to run the applet. Otherwise the user is directed to the URL specified as the value of the `pluginspage` attribute.

## Deploying Applets in a Mixed-Browser Environment

You can deploy applets for users of both Internet Explorer and the Mozilla family of browsers in one of two ways:

- Using pure HTML

- Using JavaScript

### Deploying Applets Using Pure HTML

When using a pure HTML approach to deploy applets in a mixed-browser environment, note the following:

- Internet Explorer

  - Recognizes the `object` tag

  - Ignores the contents of the `comment` tag

- Mozilla browsers

  - Ignore an `object` tag with the `classid` attribute

  - Interpret the contents of the `comment` tag

Consider the following example code from an HTML page:

    <object
      classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA"
      <param name="code" value="Applet1.class">
        <comment>
          <embed code="Applet1.class"
            type="application/x-java-applet;jpi-version=1.6">
            <noembed>
              No Java Support.
            </noembed>
          </embed>
        </comment>
      </object>

### Deploying Applets Using JavaScript

Instead of using the pure HTML approach described above, you can use JavaScript to deploy applets in a mixed-browser environment.

Through JavaScript, you:

1. Detect the user's browser through the ``appName`` variable.

2. Use the `document.write()` method to write a tag based on the value of the `appName` variable:

1. If the browser name equals "Mozilla", write the `embed` tag.

2. If the browser name equals "Microsoft Internet Explorer", write the `object` tag.

In the following example, the `document.write()` method outputs either an `embed` or `object` tag for each user “on the fly”:

    <html>
    <script language="Javascript">

      var _app = navigator.appName;

      if (_app == 'Mozilla') {
        document.write('<embed code="Applet1.class"',
                       'width="200"',
                       'height="200"',
                       'type="application/x-java-applet;version=1.6">');
        }
      else if (_app == 'Microsoft Internet Explorer') {
        document.write('<OBJECT ',
                       'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"',
                       'width="200"',
                       'height="200">',
                       '<PARAM name="code" value="Applet1.class">',
                       '</OBJECT>');
        }
      else {
        document.write('<p>Sorry, unsupported browser.</p>');
        }

    </script>
    </html>