Introduction
Java Plug-in is a product from Sun
Microsystems, Inc. that runs beans or applets written in the Java
programming language in an HTML page using Sun's
Java virtual machine (JVM). To launch Java
Plug-in when IE or Netscape NavigatorTM browses an HTML page, use the
OBJECT tag and the EMBED tag in the HTML
specification.
This document explains the OBJECT tag
and EMBED tag styles required in Java
Plug-in. It is intended for users who want to
manually insert Java Plug-in tags in their HTML
pages. There is a Java Plug-in HTML
Converter available free-of-charge from Sun
Microsystems that automatically does this for
you.
The tag style described in this document has
been designed to work in the future when new
browsers are released on Windows 98, Windows NT
5.0 and future versions of Solaris operating
systems.
The information in this specification has been
tested on various platforms.
Details
Applets are in wide use today on the Internet.
They are normally specified in an HTML file as follows:
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.3 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 Sun's JVM to run the applet.
Instead, to use Java Plug-in, you must use the
Java Plug-in tag (OBJECT or EMBED)
in place of the APPLET tag in an HTML
page.
Java Plug-in in IE on Windows 95, Windows 98 or Windows NT 4.0
To use Java Plug-in in IE on Windows 95,
Windows 98 or Windows NT 4.0, use the OBJECT
tag. The following is an example of mapping an APPLET
tag to a Java Plug-in tag:
Original APPLET tag:
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET>
|
New OBJECT tag:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</OBJECT>
|
Note that the OBJECT tag contains
similar information to the APPLET tag.
It is sufficient to launch Java Plug-in in
IE. The classid in the OBJECT
tag is the class identifier for Java Plug-in
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 Java Plug-in 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 Java Plug-in. Since this information
is mapped directly without changes, the position
and appearance of the applets using Java Plug-in
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
correspond in the OBJECT tag
attributes. These attributes, with one exception,
should be mapped to PARAM tags.
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 Java Plug-in when it is not found on 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 PARAM
codebase in the OBJECT
tag.
In the above example, the code and codebase
attributes in the APPLET tag are mapped
into the OBJECT tag parameters. The PARAM
code identifies the applet, and its
value should be the same as the code
attribute in the APPLET tag. The PARAM
codebase identifies the codebase of the
applet. Java Plug-in knows where to download the
applet or JavaBeans component because it can read
this information from the parameters. The
parameter 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 JavaBean, so Java
Plug-in knows how to initialize the Java
executable. These three PARAM tags (code,
codebase, and type) in the
above example are specified by Java Plug-in.
They do not exist in the PARAM of the
original APPLET tag. Note that the model
parameter within the OBJECT tag is
identical to the model parameter inside
the APPLET tag. Except for these first
three parameters specified for Java Plug-in, the
remainder of the parameters are the same as those
inside the APPLET tag.
A new addition for Java Plug-in 1.3 is the PARAM scriptable tag.
This was added to improve performance of applets that do not require the use
of JavaScript or VBScript. The value should be true if the applet
requires scripting support and false if it does not. The value is
false by default.
Please note that PARAM scriptable is not the same as the
PARAM mayscript. Mayscript provides support for
communication from Java applets to JavaScript only, while scriptable
allows communication from JavaScript to Java applets in Internet Explorer only.
The text "No Java 2 SDK, Standard Edition v 1.3 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 |
| 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 |
| MAYSCRIPT |
X |
X |
Param MAYSCRIPT |
Some attributes are special to the OBJECT
tag. These attributes are:
| |
Meaning in OBJECT tag |
| Attribute classid |
It should always have the same value. i.e.
"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93".
|
| Attribute CODEBASE |
It should be a full URL pointing to a
CAB file somewhere on the network. It
should, by default, point to a page on
the Java Software web site. |
| Param type |
If it is a Java applet, the value
should be
"application/x-java-applet;version=1.3"
or "application/x-java-applet".
If it is a JavaBeans component, the value
should be
"application/x-java-bean;version=1.3"
or "application/x-java-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 component. It cannot be used
with param object inside the
same OBJECT tag. |
| Param scriptable |
Specifies whether the applet is scriptable from the HTML page using
JavaScript or VBScript. The value can be either "true" or
"false". This attribute is new in Java Plug-in 1.3. |
| Param object |
Specifies the name of the serialized
Java applet or JavaBeans component. 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. |
| Param mayscript |
Specifies whether the applet is
allowed to access
netscape.javascript.JSObject. The value
can be either "true" or
"false". 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. To avoid this,
Java Plug-in 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. 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 Java Plug-in to load the applet or
JavaBean.
Java Plug-in in Netscape Navigator on Windows 95, Windows 98,
Windows NT 4.0, or Solaris operating
environments
To use Java Plug-in in Netscape Navigator 3 or
4 on Windows 95, Windows 98, Windows NT 4.0, or
Solaris operating environments, use the EMBED tag. The
following example maps an APPLET tag to
a Java Plug-in 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 Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET>
|
New EMBED tag:
<EMBED type="application/x-java-applet;version=1.3" width="200"
height="200" align="baseline" code="XYZApp.class"
codebase="html/" model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</NOEMBED>
</EMBED>
|
Note that the EMBED tag contains
similar information to the APPLET tag,
and it is sufficient to launch Java Plug-in in
Navigator. The attribute type in the EMBED
tag is used for identifying the type of the Java programming language
executable, such as an applet or a bean. When Navigator renders this
attribute in the EMBED tag, it will try to load Java Plug-in
into the browser. By specifying the type attribute, Java
Plug-in will know how to initialize the Java programming language
executable.
In the above example, several attributes in
the EMBED tag, such as width, height
and align, map directly from the
corresponding attributes in the APPLET
tag. These contain formatting information that
Navigator uses to position Java Plug-in. Since
this information is mapped directly without
changes, the position and appearance of the
applets using Java Plug-in 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. Its
value should be the same as the code
attribute in the APPLET tag. Attribute codebase
identifies the codebase of the applet. Java
Plug-in knows where to download the applet or
JavaBeans component 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 Navigator if Java Plug-in is not
installed. It should always point to the Java
Plug-in Download Page on the Java Software web
site.
The text "No Java 2 SDK, Standard Edition v 1.3 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 technology support. By
mapping it inside the NOEMBED tag, this
text will be displayed if the browser does not
support the EMBED tag or if Navigator
fails to start the Java Plug-in.
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 |
| 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 |
| MAYSCRIPT |
X |
X |
Attribute MAYSCRIPT |
Some attributes are special to the EMBED
tag. These attributes are:
| |
Meaning in EMBED
tag |
| Attribute type |
If it is an applet, the value
should be
"application/x-java-applet;version=1.3"
or "application/x-java-applet".
If it is a bean, the value
should be
"application/x-java-bean;version=1.3"
or "application/x-java-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 component. It cannot be used
with param object inside the
same EMBED tag. |
| Attribute object |
Specifies the name of the serialized
Java applet or JavaBeans component. 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 pointing to
an HTML page somewhere on the network. |
| Attribute mayscript |
Specifies whether the applet is
allowed to access
netscape.javascript.JSObject. The
value can be either "true" or
"false". This attribute is
optional. |
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. To avoid this, Java
Plug-in 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
necessary. 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 Java Plug-in to load the
applet or bean.
Java Plug-in in IE and Navigator
The OBJECT tag in IE and the EMBED
tag in Navigator allows your HTML page to use
Java Plug-in if the HTML page is browsed on
Windows 95, Windows 98, Windows NT 4.0, or
Solaris operating
environments. However, 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 Java Plug-in if both Navigator and
IE will browse the same HTML page. You can
do this using the Java Plug-in 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 Java 2 SDK, Standard Editoin v 1.3 support for APPLET!!
</APPLET>
|
New OBJECT tag:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
<COMMENT>
<EMBED type="application/x-java-applet;version=1.3" width="200"
height="200" align="baseline" code="XYZApp.class"
codebase="html/" model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<NOEMBED>
</COMMENT>
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</NOEMBED></EMBED>
</OBJECT>
|
Because IE understands the <OBJECT>
tag, it will try to launch Java Plug-in. Notice
that the <COMMENT> tag is a
special HTML tag understood only by IE. IE
ignores text between the <COMMENT>
and </COMMENT> tags. In
effect, the above tags actually become:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 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
the Windows 95, Windows 98, Windows NT 4.0, or
Solaris operating environments reads the above tags as follows:
<EMBED type="application/x-java-applet;version=1.3" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.3 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
Java Plug-in 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 homogeneous environment. The Java
Plug-in HTML Converter from Sun Microsystems
automatically converts HTML pages into this tag
style for you.
Java Plug-in Anywhere
In an Internet/intranet environment, an HTML
page is likely to be seen by browsers on
different platforms. You should activate Java
Plug-in only on the right browser and platform
combination. Otherwise, you should use the
browser's default JVM. You can achieve this using
the following Java Plug-in tag:
Original APPLET tag:
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET>
|
New style tag:
The following is an example of an equivalent
Java Plug-in 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:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<NOEMBED><XMP>');
else if (_ns == true) document.writeln('
<EMBED
type="application/x-java-applet;version=1.3" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<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-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 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 Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET>
-->
|
Although this tag seems complicated compared
to the old APPLET tag, it is not. Most
of the Java Plug-in tag is the same regardless of
the applet used. For the majority of cases,
a webmaster can copy and paste the Java
Plug-in 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 Java Plug-in
invocation.
The first JavaScript establishes the browser
and the platform on which the browser is running.
You must do this because, currently, Java Plug-in
supports only Windows 95, Windows 98, Windows NT
4.0, and Solaris. Note that Windows NT 3.51 is
the only Win32 platform that Java Plug-in does
not support. Java Plug-in 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 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)" |
| Solaris 2.6 w/Navigator 4.02 |
"Mozilla/4.02 [en] (X11; l;
SunOS 5.6 sun4u) |
Note that in each case the
substring "MSIE" is always in the userAgent
string in Internet Explorer. Also, the 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. This 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 Java Plug-in
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.
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 on the Windows NT 3.51
or Windows NT 4.0 operating platform. (Refer to the above table and examine
the userAgent string. Notice that the userAgent
strings in Windows NT 3.51 and Windows NT 4.0
operating platforms are the same in
Navigator.) It is important to make this
distinction because Java Plug-in supports only the
Windows NT 4.0 operating platform. To run Java Plug-in on 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 Solaris |
IE on Solaris |
NS on other platform |
IE on other platform |
Other browsers on any
platform |
| appName contains
"Netscape" |
X |
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" |
|
|
|
|
X |
X |
|
|
|
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, note that
only Windows 95, Windows NT 4.0, and Solaris operating
environments 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 since COMMENT is an IE-specific 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 the Windows 95,
Windows 98 or Windows NT 4.0 operating environments. If the browser is
Navigator 3/4 on Windows 95, Windows 98, Windows
NT 4.0, or Solaris operating environments, 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 Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET>
New style tag:
<SCRIPT LANGUAGE="JavaScript"><!--
if (_ie == true) document.writeln('<OBJECT
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<NOEMBED><XMP>');
else if (_ns == true) document.writeln('<EMBED
type="application/x-java-applet;version=1.3" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<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-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">LUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET></NOEMBED></EMBED></OBJECT> |
Note that the original APPLET tag is
also mapped in the new Java Plug-in tag. This is
done because Java Plug-in is intended to be used
only on supported platforms. Leaving the APPLET
tag in the script ensures that browsers that do
not support Java Plug-in, or browsers that do not
support JavaScript can gracefully handle the applet
using the default JVM. HotJava Browser, IE,
and Navigator on non-Java Plug-in 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-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 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 Java Plug-in is targeted for
features in the Java 2 SDK, Standard Edition v 1.3 or future releases, those
browsers without full Java 2 SDK 1.3 support and who do
not support Java Plug-in will display the message
"No Java 2 SDK, Standard Edition v 1.3 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, Windows 98 or Windows NT 4.0
reads the tags as follows:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<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-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</APPLET></NOEMBED></EMBED>
</OBJECT> |
Be careful when you use 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 Sun's JVM using Java Plug-in.
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:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 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, Windows 98 or
Windows NT 4.0 operating environments reads tags as follows:
<EMBED type="application/x-java-applet;version=1.3" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<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-java-applet;version=1.3">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.3 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. In effect, the above tags
actually become:
<EMBED type="application/x-java-applet;version=1.3" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
</NOEMBED>
</EMBED> |
This is identical to the EMBED tag
example outlined above.
You can use the combined OBJECT-EMBED-JavaScript
tag to activate Java Plug-in 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 Java
Plug-in. 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 applets and
JavaBeans components into a HTML page. This
document will be updated in the near future
should there be a need to convert the OBJECT
tag to the Java Plug-in tag style. Information
disclosed in this document is intended to assist
ISVs for writing HTML migration tools and to
assist webmasters with Java Plug-in migration. The
tag style described in this document is subject
to change in the future.
Note that the use of Java Plug-in 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 Java Plug-in. Currently, there
are several conversion templates shipped with the
Java Plug-in HTML converter. Webmasters may find
one template better than others for their needs,
and are encouraged to modify these templates
themselves if necessary.
|