# Oracle JInitiator 1.1.8.16 HTML Specification

> ### Introduction

> Oracle JInitiator is a product from Oracle Corporation, based on the Java Plug-in from Sun Microsystem's JavaSoft Division, that runs Java applets or JavaBeans in a HTML page using Oracle's Java Virtual Machine (JVM) inside Microsoft Internet Explorer (IE) on Win32 platforms, or Netscape Navigator on Win32 platforms. The Oracle JInitiator is bundled with the Oracle JRE, Oracle's version of the JRE from Sun. The Oracle JRE is fully compatible with Sun's JRE, and further includes bug fixes and features designed to increase the stability and performance of Java-based Oracle enterprise applications. To launch Oracle JInitiator when IE or Navigator browses a HTML page, use the the OBJECT tag and the EMBED tag in the HTML specification.

> This document explains the OBJECT tag and EMBED tag styles required in Oracle JInitiator. It is intended for those who want to manually insert Oracle JInitiator tags in their HTML pages. There is also a Java Plug-in HTML Converter available free-of-charge from JavaSoft that automatically does this for you. To use the Java Plug-in HTML Converter alongside Oracle JInitiator, users merely need to change the template files that come with the HTML Converter, so that it uses the Oracle-specific MIME types and ActiveX class IDs. These Oracle-specific values can be found below in this document.

> The tag style described in this document has been designed to work in the future when new browsers are released on Windows 98 and Windows NT 5.0.

> The information in this specification has been tested on various platforms. However, this is an early draft of the specification and information presented here may change in the near future.

> Please note that the URLs used in this document are merely examples. They may need to be modified to reflect your intranet configuration, particularly with respect to where you place the Oracle JInitiator installer for downloading.

> ### Details

> Applets are in wide use today in the Internet. They are normally specified in a HTML file as follows:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>

> Normally, an APPLET tag specifies the information about the applet and the <PARAM> tags between the <APPLET> and </APPLET> tag store the per-instance applet information.

> Because an APPLET tag is rendered by the browser, there is no easy way to interrupt the browser and use Oracle's JVM to run the applet. Instead, to use Oracle JInitiator, you must use the Oracle JInitiator tag in place of the APPLET tag in a HTML page.

> #### Oracle JInitiator in IE on Windows 95 or Windows NT 4.0

> To use Oracle JInitiator in IE on Windows 95 or Windows NT 4.0, use the OBJECT tag. The following is an example of mapping an APPLET tag to an Oracle JInitiator tag:

> Original APPLET tag:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>

> New style tag:

> <OBJECT classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <PARAM NAME="code" VALUE="XYZApp.class">
> <PARAM NAME="codebase" VALUE="html/">
> <PARAM NAME="type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </OBJECT>

> Notice that the OBJECT tag contains similar information to the APPLET tag, and it is sufficient to launch Oracle JInitiator in IE. The classid in the OBJECT tag is the class identifier for Oracle JInitiator itself. This class identifier should be the same in every HTML page. When IE renders this class identifier in the OBJECT tag, it will try to load Oracle JInitiator into the browser. There are several attributes in the OBJECT tag, such as width, height and align, that are mapped directly from the corresponding attributes in the APPLET tag. These contain formatting information that IE will use to position Oracle JInitiator. Since this information is mapped directly without changes, the position and appearance of the applets using Oracle JInitiator should be the same as those applets using the APPLET tag.

> Not all attributes in the APPLET tag can be mapped to the OBJECT tag attributes. For example, the attributes code and codebase in the APPLET tag are not mapped into the OBJECT tag attribute. Instead, the attribute code is mapped into the PARAM code because, according to the HTML specification, the attribute code does not exist in the OBJECT tag. There are other attributes that do not have a correspondence in the OBJECT tag attributes. These attributes, with one exception, should be mapped to the PARAM tag. The one exception is the codebase attribute. In the APPLET tag, the codebase attribute represents the location from which to download additional class and jar files. However, in the OBJECT tag, the codebase attribute represents the location from which to download Oracle JInitiator when it is not found in the local machine. Because the codebase attribute has two different meanings in the APPLET and OBJECT tags, you must resolve this conflict by mapping this attribute into a PARAMcodebase in the OBJECT tag.

> In the above example, the code and codebase attributes in the APPLET tag are mapped into the OBJECT tag params. PARAM code identifies the applet, and its value should be the same as the code attribute in the APPLET tag. PARAM codebase identifies the codebase of the applet. Oracle JInitiator knows where to download the applet or Beans because it can read this information from the parameters. The param type is not mapped from the APPLET tag, but it is required in the OBJECT tag. It identifies the type of the Java executable, such as an applet or a Bean, so Oracle JInitiator knows how to initialize the Java executable. These three PARAM tags (code, codebase, and type) in the above example are specified by Oracle JInitiator, and they do not exist in the PARAM of the original APPLET tag. Notice that the model param within the OBJECT tag is identical to the model param inside the APPLET tag. Except for these first three params specified for Oracle JInitiator, the remainder of the params are the same as those inside the APPLET tag. The text "No JDK 1.1 support for APPLET!!" in the APPLET tag is mapped inside the <OBJECT> and </OBJECT> tags. Originally, this text is displayed only if the browser does not have Java support. By mapping it inside the OBJECT tag, this text will displayed if the browser does not support the OBJECT tag.

> The APPLET-OBJECT tag attributes mapping is as follows:

> Attributes | APPLET tag support | OBJECT tag support | Attribute map in OBJECT tag
> ALIGN | X | X | Attribute ALIGN
> ALT | X |  |
> ARCHIVE | X |  | Param archive
> CODE | X | X | Param code
> CODEBASE | X | X | Param codebase
> DOWNLOAD | X |  | Param download
> HEIGHT | X | X | Attribute HEIGHT
> HSPACE | X | X | Attribute HSPACE
> NAME | X | X | Attribute NAME, Param NAME
> OBJECT | X |  | Param object
> TITLE | X | X | Attribute TITLE
> VSPACE | X | X | Attribute VSPACE
> WIDTH | X | X | Attribute WIDTH

> Some attributes are special to the OBJECT tag. These attributes are:

> | Meaning in OBJECT tag
> Attribute CLSID | It should always have the same value. i.e. "clsid:9b935470-ad4a-11d5-b63e-00c04faedb18".
> Attribute CODEBASE | It should be a full URL point to a .exe file somewhere on the network.
> Param type | If it is a Java applet, the value should be "application/x-jinit-applet;version=1.1.8.16" or "application/x-jinit-applet". If it is a JavaBeans, the value should be "application/x-jinit-bean;version=1.1.8.16" or "application/x-jinit-bean".
> Param codebase | Specifies the base URL of the applet. Relative URL to the document should be used. This attribute is optional.
> Param code | Specifies the name of the Java applet or JavaBeans. It cannot be used with param object inside the same OBJECT tag.
> Param object | Specifies the name of the serialized Java applet or JavaBeans. It cannot be used with param code inside the same OBJECT tag. This attribute is optional.
> Param archive | Specifies the name of the Java archive. This attribute is optional.

> Note that if the original APPLET tag has PARAM type, codebase, code, object or archive, mapping it to the OBJECT tag will cause a problem because duplicate param names will occur. Thus, Oracle JInitiator also supports another set of param names, as follows:

> Original Param Names | New Param Names
> code | java_code
> codebase | java_codebase
> archive | java_archive
> object | java_object
> type | java_type

> You should use these new param names only when necessary. In general, try to use the original param names. If both the new and original param names exist in the same OBJECT tag, the value associated with the new param name is always used by Oracle JInitiator to load the applet or Bean.

> #### Oracle JInitiator in Navigator on Windows 95 or Windows NT 4.0

> To use Oracle JInitiator in Navigator 3/4 on Windows 95 or Windows NT 4.0, use the EMBED tag. The following example maps an APPLET tag to a Oracle JInitiator EMBED tag:

> Original APPLET tag:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>

> New style tag:

> <EMBED type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED>
> No JDK 1.1 support for APPLET!!
> </NOEMBED>
> </EMBED>

> Notice that the EMBED tag contains similar information to the APPLET tag, and it is sufficient to launch Oracle JInitiator in Navigator. The attribute type in the EMBED tag is used for identifying the type of the Java executable, such as an applet or a Bean. When Navigator renders this attribute in the EMBED tag, it will try to load Oracle JInitiator into the browser. By specifying the type attribute, Oracle JInitiator will know how to initialize the Java executable. In the above example, there are several attributes in the EMBED tag, such as width, height and align, that map directly from the corresponding attributes in the APPLET tag. These contain formatting information that Navigator uses to position Oracle JInitiator. Since this information is mapped directly without changes, the position and appearance of the applets using Oracle JInitiator should be the same as those applets using the APPLET tag.

> Unlike the OBJECT tag, all information must be stored inside the <EMBED> tag instead of using PARAM. Therefore, all attributes and params in the APPLET tag must be mapped as attribute-value pairs inside the EMBED tag. In the above example, the code and codebase attributes in the APPLET tag are mapped into the EMBED tag attributes. Attribute code identifies the applet, and its value should be the same as the code attribute in the APPLET tag. Attribute codebase identifies the codebase of the applet. Oracle JInitiator knows where to download the applet or Beans because it can read this information from the attributes. Also notice that the model attribute within the EMBED tag is mapped from the model param inside the APPLET tag.

> Like the codebase attribute in the OBJECT tag, attribute pluginspage in the EMBED tag is used by the Navigator if Oracle JInitiator is not installed. It should always point to the Oracle JInitiator Download Page on Oracle's web site.

> The text "No JDK 1.1 support for APPLET!!" in the APPLET tag is mapped inside the <NOEMBED> and </NOEMBED> tags. Originally, this text is displayed only if the browser does not have Java support. By mapping it inside the NOEMBED tag, this text will displayed if the browser does not support the EMBED tag, or if Navigator fails to start the Oracle JInitiator.

> The APPLET-EMBED tag attributes mapping is as follows:

> Attributes | APPLET tag support | EMBED tag support | Attribute map in EMBED tag
> ALIGN | X | X | Attribute ALIGN
> ALT | X | X | Attribute ALT
> ARCHIVE | X |  | Attribute archive
> CODE | X |  | Attribute code
> CODEBASE | X |  | Attribute codebase
> DOWNLOAD | X |  | Attribute download
> HEIGHT | X | X | Attribute HEIGHT
> HSPACE | X | X | Attribute HSPACE
> NAME | X | X | Attribute NAME
> OBJECT | X |  | Attribute object
> TITLE | X | X | Attribute TITLE
> VSPACE | X | X | Attribute VSPACE
> WIDTH | X | X | Attribute WIDTH

> Some attributes are special to the EMBED tag. These attributes are:

> | Meaning in EMBED tag
> Attribute type | If it is a Java applet, the value should be "application/x-jinit-applet;version=1.1.8.16" or "application/x-jinit-applet". If it is a JavaBeans, the value should be "application/x-jinit-bean;version=1.1.8.16" or "application/x-jinit-bean"..
> Attribute codebase | Specifies the base URL of the applet. This attribute is optional.
> Attribute code | Specifies the name of the Java applet or JavaBeans. It cannot be used with param object inside the same EMBED tag.
> Attribute object | Specifies the name of the serialized Java applet or JavaBeans. It cannot be used with param code inside the same EMBED tag. This attribute is optional.
> Attribute archive | Specifies the name of the Java archive. This attribute is optional.
> Attribute pluginspage | It should be a full URL point to a HTML page somewhere on the network.

> Similar to the OBJECT tag case, if the original APPLET tag has PARAM type, codebase, code, object or archive, mapping it to the EMBED tag attribute will cause a problem. Thus, Oracle JInitiator also supports the same new set of attribute names, as follows:

> Original Attribute Names | New Attribute Names
> code | java_code
> codebase | java_codebase
> archive | java_archive
> object | java_object
> type | java_type

> You should use these new attribute names only when necessary. In general, try to use the original attribute names. If both new and original attribute names exist in the same EMBED tag, the value associated with the new attribute name is always used by Oracle JInitiator to load the applet or Bean.

> Oracle JInitiator in IE and Navigator

> The OBJECT tag in IE and the EMBED tag in Navigator allows your HTML page to use Oracle JInitiator if the HTML page is browsed on Windows 95 or Windows NT 4.0. Note, however, that if the HTML page is on the Internet/Intranet, the page is likely to be browsed by both IE and Navigator. You should activate the Oracle JInitiator if both Navigator and IE will browse the same HTML page. You can achieve this using the Oracle JInitiator OBJECT tag, as follows:

> Original APPLET tag:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>

> New style tag:

> <OBJECT classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <PARAM NAME="code" VALUE="XYZApp.class">
> <PARAM NAME="codebase" VALUE="html/">
> <PARAM NAME="type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> <COMMENT>
> <EMBED type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED>
> </COMMENT>
> No JDK 1.1 support for APPLET!!
> </NOEMBED></EMBED>
> </OBJECT>

> Because IE understands the <OBJECT> tag, it will try to launch Oracle JInitiator. Notice that the <COMMENT> tag is a special HTML tag understood only by IE. IE ignores text between the <COMMENT> and </COMMENT> tags. Thus, in effect, the above tags actually become:

> <OBJECT classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <PARAM NAME="code" VALUE="XYZApp.class">
> <PARAM NAME="codebase" VALUE="html/">
> <PARAM NAME="type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </NOEMBED></EMBED>
> </OBJECT>

> This is identical to the OBJECT tag example outlined above. The </NOEMBED> and </EMBED> tags are ignored by the OBJECT tag because there are no corresponding <NOEMBED> and <EMBED> tags.

> Because Navigator does not understand the OBJECT and COMMENT tags, Navigator 3/4 on Windows 95 or Windows NT 4.0 reads the above tags as follows:

> <EMBED type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED>
> No JDK 1.1 support for APPLET!!
> </NOEMBED>
> </EMBED>

> This is identical to the EMBED tag example outlined above. Navigator 3/4 ignores <COMMENT> and </COMMENT> tags because they are an HTML extension in IE only.

> This example illustrates that you can use the combined OBJECT-EMBED tag to activate Oracle JInitiator in the browser if either IE or Navigator is used. This combined tag is strongly recommended unless your HTML page is browsed by users in a heterogenous environment. The Java Plug-in HTML Converter from JavaSoft also automatically converts HTML pages into this tag style for you.

> #### Oracle JInitiator Anywhere

> In an Internet/Intranet environment, an HTML page is likely to browsed by browsers on different platforms. You should activate Oracle JInitiator only on the right browser and platform combination. Otherwise, you should use the browser's default JVM. You can achieve this using the following Oracle JInitiator tag:

> Original APPLET tag:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>

> New style tag:

> The following is an example of an equivalent Oracle JInitiator tag. (This example includes comments.)

> <!-- The following code is specified at the beginning of the <BODY> tag. -->
> <SCRIPT LANGUAGE="JavaScript"><!--
> var _info = navigator.userAgent; var _ns = false;
> var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0
> && _info.indexOf("Windows 3.1") < 0);
> //--></SCRIPT>
> <COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
> var _ns = (navigator.appName.indexOf("Netscape") >= 0
> && ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0
> && java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
> || _info.indexOf("Sun") > 0));
> //--></SCRIPT></COMMENT>

> <!-- The following code is repeated for each APPLET tag -->
> <SCRIPT LANGUAGE="JavaScript"><!--
> if (_ie == true) document.writeln('<OBJECT
> classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <NOEMBED><XMP>');
> else if (_ns == true) document.writeln('<EMBED
> type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED><XMP>');
> //--></SCRIPT>
> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200"></XMP>
> <PARAM NAME="java_code" VALUE="XYZApp.class">
> <PARAM NAME="java_codebase" VALUE="html/">
> <PARAM NAME="java_type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET></NOEMBED></EMBED></OBJECT>

> <!--
> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>
> -->

> Although this tag seems complicated compared to the old APPLET tag, it is not. Most of the Oracle JInitiator tag is the same regardless of the applet used. Thus, for the majority of cases, a webmaster can just copy-and-paste the Oracle JInitiator tag.

> The first block of the script extracts the browser and platform. You must determine the browser and platform on which the applet is running. You do this by using JavaScript to extract first the browser name, then the platform. This is done once per HTML document. The second block of the script replaces the APPLET tag. You must replace each APPLET tag with a similar block of code. The script replaces the APPLET tag with either an EMBED tag or OBJECT tag, depending on the browser. You use the OBJECT tag for IE and the EMBED tag for Netscape Navigator. Finally, the original APPLET tag is included as a comment at the end. It is always a good idea to keep the original APPLET tag in case you want to remove the Oracle JInitiator invocation.

> The first JavaScript establishes the browser and the platform on which the browser is running. You must do this because, currently, Oracle JInitiator supports only Windows 95 or later, and Windows NT 4.0 or later. Note that Windows NT 3.51 is the only Win32 platform that Oracle JInitiator does not support. Oracle JInitiator should be invoked only on the supported browser and platform. The script sets the variable `_ie` to true if the browser is Internet Explorer. It sets the variable `_ns` to true if the browser is Navigator. (Note that all variable names in the JavaScript start with "_". This is done to avoid conflicting with other JavaScript variables in the same page.)

> To detect the right browser, the JavaScript evaluates three strings that are within the JavaScript's Navigator object: userAgent, appVersion and appName. These strings contain information about the browser and the platform. By looking at some examples of the string userAgent, you can easily see how to evaluate userAgent and use it to determine the browser. The following are some examples of the userAgent string for different platforms as it appears in Internet Explorer.

> Platform and Browser | JavaScript's Navigator.userAgent string
> Windows NT 4.0 w/IE 4.0 | "Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)"
> Windows NT 4.0 w/IE 3.02 | "Mozilla/2.0 (compatible; MSIE 3.02; Windows NT)"
> Windows 95 w/IE 4.0 | "Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)"
> Windows 95 w/IE 3.02 | "Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)"
> Windows NT 3.51 w/IE 4.0 | "Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)"
> Windows 3.1 w/IE 4.0 | "Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)"
> Windows NT 4.0 w/Navigator 4.04 | "Mozilla/4.04 [en] (WinNT; I)"
> Windows NT 4.0 w/Navigator 3.04 | "Mozilla/3.04 (WinNT; I)"
> Windows NT 3.51 w/Navigator 4.04 | "Mozilla/4.04 [en] (WinNT; I)"
> Windows NT 3.51 w/Navigator 3.04 | "Mozilla/3.04 (WinNT; I)"
> Windows 95 w/Navigator 4.03 | "Mozilla/4.03 [en] (Win95; I)"
> Windows 95 w/Navigator 3.03 | "Mozilla/3.03 (Win95; I)"

> Notice that, in each case, the substring "MSIE" is always in the userAgent string in Internet Explorer. Also, userAgent string in IE under Windows 3.1 and Windows 3.51 would contain the substring "Windows 3.1" because IE in these platforms is 16-bit. While IE 4 is also available on Solaris and Mac, in these versions the userAgent string does not contain the substring "Win". In addition, IE on Windows CE does not support JavaScript. The above can be summarized as follows:

> userAgent string / Browsers | Windows 3.1 w/ IE 3/4 | Windows NT 3.51 w/ IE 3/4 | Windows 95 w/ IE 3/4 | Windows NT 4.0 w/ IE 3/4 | Windows CE w/ IE | Mac w/ IE | UNIX w/ IE | Other browsers on any platform
> contains "MSIE" | X | X | X | X |  | X | X |
> contains "Win" | X | X | X | X |  |  |  |
> does not contain "Windows 3.1" |  |  | X | X |  | X | X | X

> The above table shows that only Windows 95 and Windows NT 4.0 with IE can pass the Oracle JInitiator browser and platform requirements. However, this logic makes no assumptions about future releases of IE or future releases of Windows with IE. As long as the userAgent string contains "MSIE" and "Win", the above code should work in future releases of IE on Win32.

> Thus, the above logic summarizes into the following:

> <SCRIPT LANGUAGE="JavaScript"><!--
> var _info = navigator.userAgent;
> var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0
> && _info.indexOf("Windows 3.1") < 0);
> //--></SCRIPT>

> It is harder to detect Navigator on the right platform. Using just JavaScript, there is no way to determine if the browser is running in NT 3.51 or NT 4.0. (Refer to the above table and examine the userAgent string. Notice that the userAgent strings in NT 3.51 and NT 4.0 are the same in Navigator.) However, it is important to make this distinction because Oracle JInitiator supports only NT 4.0. To run Oracle JInitiator in the right platform, you must use LiveConnect in Navigator to determine the OS version number. This can be summarized as follows:

> Testing logic / Browsers | Windows 3.1 w/ NS 3/4 | Windows NT 3.51 w/ NS 3/4 | Windows 95 w/ NS 3/4 | Windows NT 4.0 w/ NS 3/4 | NS on other platform | IE on other platform | Other browsers on any platform
> appName contains "Netscape" | X | X | X | X | X |  |
> userAgent contains "Win" | X | X | X | X |  | X |
> userAgent does not contain "Win16" |  | X | X | X | X | X |
> os.version does not contain 3.5 | X |  | X | X | Depends on OS |  |
> userAgent contains "Sun" |  |  |  |  |  |  |

> The above logic translates into the following code:

> <SCRIPT LANGUAGE="JavaScript"><!--
> var _info = navigator.userAgent; var _ns = false;
> //--></SCRIPT>
> <COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
> var _ns = (navigator.appName.indexOf("Netscape") >= 0
> && ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0
> && java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
> || _info.indexOf("Sun") > 0));
> //--></SCRIPT></COMMENT>

> Referring to the previous table, notice that only Windows 95 and Windows NT 4.0 with Navigator pass all the tests. Because LiveConnect is used to get the OS version number and only Navigator supports LiveConnect, a JavaScript that accesses LiveConnect will not be understood by IE. To prevent this from causing a problem, you block out this piece of the script using the COMMENT tag. COMMENT is an IE-specified comment tag. The text between the COMMENT tag is ignored by IE but not by Navigator. In addition, you must specify the script language as JavaScript1.1 to block this out if the browser is Navigator 2.

> At this point, the above logic for IE and Navigator summarizes to a script that should look as follows:

> <!-- The following code is specified at the beginning of the <BODY> tag. -->
> <SCRIPT LANGUAGE="JavaScript"><!--
> var _info = navigator.userAgent; var _ns = false;
> var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0
> && _info.indexOf("Windows 3.1") < 0);
> //--></SCRIPT>
> <COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
> var _ns = (navigator.appName.indexOf("Netscape") >= 0
> && ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0
> && java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
> || _info.indexOf("Sun") > 0));
> //--></SCRIPT></COMMENT>

> Remember that this block of JavaScript should be put at the top of the <BODY> of the HTML file. It is put at the top so that other JavaScripts can reference the variables _ie and _ns. This JavaScript is the same in all HTML files, and it is only needed once for each HTML body.

> The second block of HTML tags are actually the corresponding OBJECT and EMBED tags that are mapped from the data in the APPLET tag. Note that JavaScript outputs the OBJECT tag when the browser is IE running on Windows 95 or Windows NT 4.0. If the browser is Navigator 3/4 on Windows 95 or Windows NT 4.0, then JavaScript also outputs the EMBED tag, though with a slightly different syntax. Recall that the mechanism for detecting the browser and the platform has been described in the above section. (Tags <!-- and --> are used for comments in HTML.)

> Original APPLET tag:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline" width="200"
> height="200">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET>

> New style tag:

> <SCRIPT LANGUAGE="JavaScript"><!--
> if (_ie == true) document.writeln('<OBJECT
> classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <NOEMBED><XMP>');
> else if (_ns == true) document.writeln('<EMBED
> type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED><XMP>');
> //--></SCRIPT>
> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200"></XMP>
> <PARAM NAME="java_code" VALUE="XYZApp.class">
> <PARAM NAME="java_codebase" VALUE="html/">
> <PARAM NAME="java_type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET></NOEMBED></EMBED></OBJECT>

> Notice that the original APPLET tag is also mapped in the new Oracle JInitiator tag. This is done because Oracle JInitiator is intended to be used only on supported platforms. Leaving the APPLET tag in the script ensures that browsers that do not support Oracle JInitiator, or browsers that do not support JavaScript, gracefully handle the applet using the default JVM. Thus, HotJava, IE, and Navigator on non-Oracle JInitiator supported platforms, or browsers without JavaScript support, read the above tags as follows:

> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200"></XMP>
> <PARAM NAME="java_code" VALUE="XYZApp.class">
> <PARAM NAME="java_codebase" VALUE="html/">
> <PARAM NAME="java_type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET></NOEMBED></EMBED></OBJECT>

> These browsers ignore the tags </XMP>, </OBJECT>, </EMBED> and </NOEMBED> as well because there is no corresponding <XMP>, <OBJECT>, <EMBED> and <NOEMBED> tags. Because Oracle JInitiator is targeted for features in the JDK 1.1 or later releases, those browsers without full JDK 1.1 support and who do not support Oracle JInitiator will display the message "No JDK 1.1 support for APPLET".

> Unlike the previous examples, the mapped PARAM names contain java_code, java_codebase and java_type instead of code, codebase and type. This is necessary because specifying code and codebase in the <PARAM> inside the <APPLET> and </APPLET> tag causes problems in some browsers.

> IE on Windows 95 or Windows NT 4.0 reads the tags as follows:

> <OBJECT classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <NOEMBED><XMP>
> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200"></XMP>
> <PARAM NAME="java_code" VALUE="XYZApp.class">
> <PARAM NAME="java_codebase" VALUE="html/">
> <PARAM NAME="java_type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET></NOEMBED></EMBED></OBJECT>

> Be careful regarding the usage of the <XMP> tag. Because IE renders the <OBJECT> tag, you must disable the <APPLET> tag. If not disabled, two applets will simultaneously show up in the browser--one applet will be running in Microsoft's JVM, and the other will be running in Oracle's JVM using Oracle JInitiator. The <XMP> tag provides a solution. The <XMP> and </XMP> tags basically transform any HTML tag that occurs between them into a stream of static text. In the above example, the <XMP> and </XMP> tags cause the browser to treat the <APPLET> tag as static text instead of an HTML tag. Because the browser ignores any static text between the <OBJECT> tag and the <PARAM> tag, the above tags actually become:

> <OBJECT classid="clsid:9b935470-ad4a-11d5-b63e-00c04faedb18"
> width="200" height="200" align="baseline"
> codebase="http://www.acme.com/jinit11816.exe#Version=1.1.8.16">
> <PARAM NAME="java_code" VALUE="XYZApp.class">
> <PARAM NAME="java_codebase" VALUE="html/">
> <PARAM NAME="java_type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </OBJECT>

> This is identical to the OBJECT tag example outlined above. Note that the <OBJECT> tag ignores the <NOEMBED>, </NOEMBED> and </EMBED> tags.

> Navigator 3/4 on Windows 95 or Windows NT 4.0 reads tags as follows::

> <EMBED type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED><XMP>
> <APPLET code="XYZApp.class" codebase="html/" align="baseline"
> width="200" height="200"></XMP>
> <PARAM NAME="java_code" VALUE="XYZApp.class">
> <PARAM NAME="java_codebase" VALUE="html/">
> <PARAM NAME="java_type" VALUE="application/x-jinit-applet;version=1.1.8.16">
> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
> No JDK 1.1 support for APPLET!!
> </APPLET></NOEMBED></EMBED></OBJECT>

> Note that the <XMP> tag is used again in the <EMBED> tag to also disable the <APPLET> tag. The <EMBED> tag ignores the <PARAM> and </OBJECT> tags as well. Thus, in effect, the above tags actually become:

> <EMBED type="application/x-jinit-applet;version=1.1.8.16" width="200" height="200"
> align="baseline" code="XYZApp.class" codebase="html/"
> model="models/HyaluronicAcid.xyz"
> pluginspage="http://www.acme.com/jinit_download.htm">
> <NOEMBED>
> No JDK 1.1 support for APPLET!!
> </NOEMBED>
> </EMBED>

> This is identical to the EMBED tag example outlined above.

> Thus, you can use the combined OBJECT-EMBED-JavaScript tag to activate Oracle JInitiator in the right browser on the right platform. This combined tag is complicated and it should be used only if your HTML page is browsed by users in a heterogenous environment.

> ### Summary

> This document describes the OBJECT tag and EMBED tag styles used by Oracle JInitiator. It focuses on the conversion from an APPLET tag to the OBJECT and EMBED tags. Currently, HTML 4.0 suggests that the OBJECT tag is the best way to insert Java applet and JavaBeans in a HTML page. This document will be updated in the near future should there be a need to convert the OBJECT tag to the Oracle JInitiator tag style. Information disclosed in this document is intended to assist ISV for writing HTML migration tool and to assist webmasters for Oracle JInitiator migration. The tag style described in this document is subject to change in the future.

> Note that the use of Oracle JInitiator is not limited to the tag styles described in this document. In fact, webmasters are encouraged to modify the tag style or mix the tag with JavaScript to fit their needs. As long as the described OBJECT tag is used in IE and EMBED tag is used in Navigator, there should be no problems running Oracle JInitiator. Currently, there are several conversion templates shipped with the Java Plug-in HTML Converter. Webmasters are encouraged to modify these templates to use Oracle-specific values for the MIME types and ActiveX class IDs, so that they convert their HTML files to use Oracle JInitiator.

Copyright ©2001 Oracle Corporation All Rights Reserved. Last update: 09/19/2001. Questions, comments, etc: Please contact your local Oracle support representative.