Solaris Java Plug-in ユーザーズガイド

環境に依存しない Java Plug-in

インターネット/イントラネット環境では、HTML ページを表示するブラウザのプラットフォームが異なることが考えられます。Java Plug-in を起動するのは、ブラウザとプラットフォームの組み合わせが適切な場合だけに限定する必要があります。組み合わせが適切でない場合は、ブラウザのデフォルト JVM を使用してください。この操作の実行には、次の Java Plug-in タグを使用します。

元の APPLET タグ


<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.4 support for APPLET!!
</APPLET>

新しい書式のタグ

次に、上記のタグと等価な Java Plug-in タグの例を示します。この例には、コメントも含まれています。


<!-- 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/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
      <NOEMBED><XMP>');
      else if (_ns == true) document.writeln('
<EMBED
      type="application/x-java-applet;jpi-version=1.4" 
      width="200" height="200"
      align="baseline" code="XYZApp.class" codebase="html/"
      model="models/HyaluronicAcid.xyz"
      pluginspage="http://java.sun.com/jpi/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;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
      No Java 2 SDK, Standard Edition v 1.4 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.4 support for APPLET!!
      </APPLET>
-->

このタグは元の APPLET タグと比較して複雑に見えますが、実際にはそうではありません。Java Plug-in タグのコードの大部分は、使用されるアプレットに関係なく同じです。Web ページの作成者は、たいていの場合、Java Plug-in タグをコピー&ペーストできます。

スクリプトの最初のブロックで、ブラウザおよびプラットフォームを抽出します。アプレットを実行するブラウザおよびプラットフォームを判別する必要があります。 これは、JavaScriptTM を使用して、まずブラウザ名、次にプラットフォームを抽出することで実行します。HTML ドキュメントごとに、この操作を 1 回実行します。

スクリプトの 2 番目のブロックで、APPLET タグの置換を実行します。各 APPLET タグを類似のコードブロックで置き換える必要があります。スクリプトは、ブラウザに応じて、APPLET タグを EMBED タグまたは OBJECT タグに置き換えます。Internet Explorer ブラウザの場合は OBJECT タグ、Netscape Navigator ブラウザの場合は EMBED タグに置き換えます。最後に、元の APPLET タグをコメントとして末尾に含めます。Java Plug-in の起動を解除することを考えて、元の APPLET タグを残しておくことをお勧めします。

最初の JavaScript で、ブラウザおよびそのブラウザが実行されているプラットフォームを確立します。現在のところ、Java Plug-in は Microsoft Windows プラットフォームおよび Solaris オペレーティング環境のみをサポートするため、この操作が必要になります。Java Plug-in がサポートしない Win32 プラットフォームは、Windows NT 3.51 だけです。Java Plug-in の起動は、サポートされているブラウザおよびプラットフォーム上でのみ実行する必要があります。ブラウザが Internet Explorer の場合、スクリプトにより変数 _ie が true に設定されます。Netscape ブラウザの場合、変数 _ns が true に設定されます。(JavaScript では、変数名はすべて "_" で始まることに注意してください。これは、同一ページのほかの JavaScript 変数との競合を避けるためです。)

適切なブラウザを検出するため、JavaScript は JavaScript の navigator オブジェクト内の次の 3 つの文字列を評価します。userAgent , appVersion, および appName 。これらの文字列には、ブラウザおよびプラットフォームに関する情報が含まれます。次に示す、文字列 userAgent のいくつかの例を参考にすることにより、userAgent を評価してブラウザを判別する方法を理解できます。以下に示すのは、Internet Explorer 内で使用されるさまざまなプラットフォーム用の userAgent 文字列の例です。この表では、IE は Internet Explorer を表します。

プラットフォームとブラウザ 

JavaScript の Navigator.userAgent 文字列

Windows 2000 と IE 5.0 

"Mozilla/4.0 (compatible; MSIE 5.01; Window NT5.0) 

Windows NT 4.0 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)" “ 

Windows 95 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)“ 

Windows NT 3.51 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)“ 

Windows 3.1 と IE 4.0 

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)“ 

Windows NT 4.0 と Navigator 4.04 

Mozilla/4.04 [en] (WinNT; I) I)“ 

Windows NT 3.51 と Navigator 4.04 

Mozilla/4.04 [en] (WinNT; I) I)“ 

Windows 95 と Navigator 4.03 

Mozilla/4.03 [en] (Win95; I) I)“ 

Solaris 2.6 と Navigator 4.02 

"Mozilla/4.02 [en] (X11; l; SunOS 5.6 sun4u) 

どの場合でも、Internet Explorer 内の文字列 userAgent に、部分文字列 "MSIE" が常に含まれます。また、Windows 3.1 および Windows 3.51 で稼働する Internet Explorer は 16 ビットであるため、これらのプラットフォーム上の Internet Explorer の userAgent 文字列には、部分文字列 "Windows 3.1" が含まれます。Internet Explorer 4 は Macintosh および Solaris オペレーティング環境でも利用可能であるため、これらのバージョンでは userAgent 文字列に部分文字列 "Win" は含まれません。また、Windows CE 上の Internet Explorer は JavaScript をサポートしません。これらをまとめると、次のようになります。

userAgent 文字列/ブラウザ

“MSIE” を含む 

“Win” を含む 

“Windows 3.1” を含まない 

Windows 3.1 と IE 4 

 

Windows NT 3.51 と IE 4 

 

Windows 95 と IE 4 

Windows NT 4.0 と IE 4 

Windows CE と IE 

 

 

 

Mac と IE 

 

UNIX と IE 

 

任意のプラットフォームのほかのブラウザ 

 

 

上の表から、Windows 95 および Windows NT 4.0 で稼働する Internet Explorer だけが Java Plug-in のブラウザおよびプラットフォーム要件を満たすことがわかります。ただし、ここでは、今後の Internet Explorer のリリースや Internet Explorer を搭載する Microsoft Windows のリリースのことは考慮に入れていません。userAgent 文字列に "MSIE" および "Win" が含まれる限り、上記のコードはWin32 用 Internet Explorer の将来のリリースで動作するはずです。

このロジックをまとめると、次のようになります。


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

Navigator が動作しているプラットフォームが適切であることを検出するのは、もっと難しい問題です。JavaScript を使用するだけでは、ブラウザが稼働しているオペレーティングプラットフォームが、Windows NT 3.51 と Windows NT 4.0 のどちらかなのかを判別することはできません。(上記の表を参照して、文字列 userAgent を確認してください。Navigator ブラウザでは、Windows NT 3.51 と Windows NT 4.0 オペレーティングプラットフォームの文字列 userAgent が同じになります。)Java Plug-in は Windows NT 4.0 オペレーティングプラットフォームだけをサポートするため、この違いを識別することは重要です。適切なプラットフォームで Java Plug-in を実行するには、Netscape Navigator ブラウザで LiveConnect を使用して OS のバージョン番号を判別する必要があります。これらをまとめると、次のようになります。

ロジック検査/ブラウザ 

appName に “Netscape” を含む 

userAgent に "Win" あり 

userAgent に "Win16" を含まない 

os.version に "3.5" を含まない 

userAgent に "Sun" を含む 

Windows 3.1 と Netscape 4 

 

 

Windows NT 3.51 と Netscape 4 

 

 

Windows 95 と Netscape 4 

 

Windows NT 4.0 と NS 4 

 

Solaris と NS 

 

 

 

Solaris と IE 

 

 

 

 

ほかのプラットフォームの Netscape 

O  

 

OS に依存 

 

ほかのプラットフォームの IE 

 

 

 

任意のプラットフォームのほかのブラウザ 

 

 

 

 

 

上記のロジックは、次のコードで表されます。


<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>

上記の表で、すべての条件を満たすのは Windows 95、Windows NT 4.0、および Solaris オペレーティング環境の Netscape Navigator ブラウザだけであることに注目してください。LiveConnect を使用して OS のバージョン番号を取得しますが、LiveConnect は Netscape Navigator ブラウザだけがサポートしているため、Internet Explorer では LiveConnect を使用する JavaScript は認識されません。このことで問題が発生するのを防ぐため、スクリプトのこの部分を Internet Explorer 固有のコメントタグである COMMENT タグで囲む必要があります。Internet Explorer は COMMENT タグ内のテキストを無視しますが、Netscape Navigator は無視しません。さらに、ブラウザが Netscape Navigator 2 の場合には、スクリプト言語を JavaScript1.1 と指定することにより、このテキストが無視されるようにする必要があります。

ここで、Internet Explorer と Netscape Navigator に対応した上記のロジックをまとめると、次のようなスクリプトになります。


<!-- 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>

この JavaScript ブロックは、HTML ファイルの <BODY> 部の先頭に配置する必要があります。先頭に配置することにより、ほかの JavaScript が変数 _ie および _ns を参照できるようになります。この JavaScript はどの HTML ファイルでも同一であり、各 HTML 本体に一度だけ指定します。

HTML タグの第 2 ブロックは、APPLET タグ内のデータからマッピングされた、対応する OBJECT タグおよび EMBED タグです。ブラウザが Windows 95、Windows 98、または Windows NT 4.0 オペレーティング環境で稼働する Internet Explorer の場合、JavaScript は OBJECT タグを出力します。ブラウザが Windows 95、Windows 98、Windows NT 4.0、または Solaris オペレーティング環境で稼働する Netscape Navigator 4 ブラウザの場合、JavaScript は (構文は多少異なりますが) EMBED タグも出力します。ブラウザおよびプラットフォームの検出機構は、すでに説明したとおりです。(<!— タグおよび –> タグは HTML 内でコメントの記述に使用されます。)

元の APPLET タグ


<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.4 support for APPLET!!
</APPLET>

新しい書式のタグ


<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/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<NOEMBED><XMP> ');
    else if (_ns == true) document.writeln('<EMBED
    type="application/x-java-applet;version=1.4" width="200" height="200"
      align="baseline" code="XYZApp.class" codebase="html/"
      model="models/HyaluronicAcid.xyz"
      pluginspage="http://java.sun.com/jpi/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.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
          LUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED> </OBJECT>

新しい Java Plug-in タグでは、元の APPLET タグもマッピングされていることに注目してください。これは、サポートされるプラットフォームでのみ Java Plug-in を使用するためです。スクリプト内に APPLET タグを残しておくことにより、Java Plug-in をサポートしないブラウザや、JavaScript をサポートしないブラウザがデフォルトの JVM を使用するアプレットを適切に処理できます。Java Plug-in をサポートしないプラットフォームの HotJava Browser、Internet Explorer、および Netscape Navigator ブラウザ、または JavaScript をサポートしないブラウザは、上述のタグを次のように読み取ります。


<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/">
<PPARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
         No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
</APPLET></NOEMBED></EMBED></OBJECT>

これらのブラウザは、</XMP> </OBJECT></EMBED>、および </NOEMBED> タグも無視します。これは、対応する <XMP><OBJECT><EMBED>、および <NOEMBED> タグが存在しないためです。Java Plug-in は、Java 2 SDK, Standard Edition v 1.4 以降のリリースの機能を対象にして設計されています。そのため、Java 2 SDK 1.4 を完全にはサポートせず、Java Plug-in をサポートしないこれらのブラウザでは、「No Java 2 SDK, Standard Edition v 1.4 support for APPLET」というメッセージが表示されます。

これまで示した例とは異なり、マッピングされたパラメータ 名には、codecodebase、および type ではなく、 java_codejava_codebase、および java_type が含まれます。これが必要なのは、<APPLET> タグと </APPLET> タグの間の <PARAM> 内で code および codebase を指定すると、一部のブラウザで問題が発生するためです。

Windows 95、Windows 98、または Windows NT 4.0 で稼働する Internet Explorer は、タグを次のように読み取ります。


<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<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="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="scriptable" VALUE="true">
          No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED>
</OBJECT>

<XMP> タグを使用する場合には注意が必要です。Internet Explorer は <OBJECT> タグを認識するため、<APPLET> タグを無効にする必要があります。無効にしない場合、2 つのアプレットがブラウザ内で同時に表示されます。1 つは Microsoft の JVM で動作し、もう 1 つは Java Plug-in を使用する Sun の JVM で動作します。<XMP> タグを使用することで、この問題を解決できます。<XMP> および </XMP> タグの基本動作は、その間に記述されたすべての HTML タグを静的テキストのストリームに変換することです。上の例では、<XMP> および </XMP> タグを指定することにより、ブラウザが <APPLET> タグを HTML タグとしてではなく静的テキストとして処理します。ブラウザは <OBJECT> タグと <PARAM> タグの間の静的テキストをすべて無視するため、上のタグは実質的に次のようになります。


<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/jpi/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
   No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</OBJECT>

これは、上に示した OBJECT タグの例と同じになります。<OBJECT> タグは <NOEMBED></NOEMBED>、および <EMBED> タグを無視することに注意してください。

Windows 95、Windows 98、または Windows NT 4.0 オペレーティング環境で動作する Netscape Navigator 4 は、タグを次のように読み取ります。


<EMBED type="application/x-java-applet;jpi-version=1.4" 
         width="200" height="200"
         align="baseline" code="XYZApp.class" codebase="html/"
         model="models/HyaluronicAcid.xyz"
         pluginspage="http://java.sun.com/jpi/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;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
         No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED></OBJECT>

ここでも、<EMBED> タグの内部で <XMP> タグが使用されているため、<APPLET> タグが無効にされています。<EMBED> タグは <PARAM> タグおよび </OBJECT> タグも無視します。このため、上のタグは実質的に次のようになります。


<EMBED type="application/x-java-applet;jpi-version=1.4" 
         width="200" height="200"
         align="baseline" code="XYZApp.class" codebase="html/"
         model="models/HyaluronicAcid.xyz"
         pluginspage="http://java.sun.com/jpi/plugin-install.html">
<NOEMBED>
        No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>

これは、上述の EMBED タグの例と同じになります。

OBJECT-EMBED-JavaScript の複合タグを使用して、適切なプラットフォームの適切なブラウザで Java Plug-in を起動することができます。この複合タグは複雑なため、異機種混在環境で HTML ページを表示する場合にのみ使用してください。