JavaTM Plug-in での APPLET タグのサポートについて



注:

Microsoft VM と Sun 製品の互換性に関する詳細は、「付録 4: Microsoft VM と Java 2 アプレットの互換性問題」を参照してください。

Q: Java 2 プラットフォームを勧める理由は何ですか。

A: Java 2 プラットフォームは機能性、性能、およびセキュリティオプションにおいて従来の製品を凌いでいます。 開発者にとって、ソフトウェアのユーザが最も完成した機能をもつ Java プラットフォームの可能性を備えることで、自分のアプリケーションがフルレンジの API やライブラリを使用できるようになるのは望ましいことです。 顧客が Java 2 プラットフォームを使用していれば、開発者はより強力で堅牢なフル機能のアプリケーションやアプレットを記述できるようになります。 また、Java 2 プラットフォームによってコードの性能も向上します。

APPLET タグをサポートした最新の Java Plug-in を使用すれば、自分のアプレットを実行しているクライアントが最新の Java 2 プラットフォームを備えるようになるのに役立ちます。

Q: 自分のアプレットを呼び出すのに、引き続き OBJECT タグを使用してもいいですか。

A:はい。 Java Plug-in が APPLET タグをサポートするように拡張されていても、アプレットの起動に OBJECT タグを使用する既存の Web ページとは完全に下位互換性があります。 さらに、APPLET タグではなく OBJECT タグを使用してアプレットを呼び出したい開発者のために、JRE や Java Plug-in が HTML コンバータとともに引き続き同梱されています。

Q: Java 2 プラットフォームの使用によって互換性問題は発生していますか。

A: ほとんどのケースにおいて、JDK 1.1 から Java 2 プラットフォームへの移行に関して、考慮すべき問題は発生していません。 所定の Java 2 プラットフォームのリリースに関するドキュメントに、既知の非互換がすべて記載されていますが、ほとんどは「軽微な問題」と言える範囲内です。 たとえば、Java 2 プラットフォームのバージョン 1.4 における既知の互換性問題は、http://java.sun.com/j2se/1.4/ja/compatibility.htmlで説明されています。

以前のバイトコードコンパイラによって生成された古いクラスファイルの中には、正しいクラスファイル形式に厳密に準拠していないものがありますが、そういったクラスは Java 2 Runtime Environment にはロードされません。

異なるリリースの Java プラットフォーム間での互換性問題に加えて、Sun による Java Runtime Environment とその他の Java Runtime Environment との間の互換性問題もあります。たとえば、いくつかの Internet Explorer ブラウザに含まれるものなどです。 Sun では、こうした非互換性を最小限に抑えるために多大な労力を費やしてきました。 Sun が取り入れた JRE および Java Plug-in の改善点は次のとおりです。

Q: Java Plug-in が使用するセキュリティモデルは何ですか。

A: JRE および Java Plug-in は Java 2 プラットフォームファミリの製品であり、新しい Java 2 プラットフォームのセキュリティモデルを使用しています。 このセキュリティモデルは、JDK 1.1 で使用されていたものよりも柔軟性があり構成しやすいものです。 詳細については、http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/index.html にある「Java 2 プラットフォームのセキュリティ」に関するドキュメントを参照してください。

Microsoft VM のセキュリティモデルにおける独自のテクノロジに明示的に依存しているアプレットでは、Java Plug-in は動作しません。

Q: ClassFormatError によってアプレットが失敗します。 何が原因でしょうか。

A: この問題は、古いコンパイラによって生成されたバイトコードが原因となっている場合があります。 このようなバイトコードは、最近の JRE のリリースでは強化している仮想マシンの仕様に厳密に準拠していないからです。

Q: Java Plug-in にアプレットの cab ファイルがロードされません。どうしてですか。

A: Java Plug-in は .jar ファイルにパッケージされるアプレットをサポートしています。 Microsoft 独自の .cab ファイル形式はサポートしていません。 したがって、Microsoft の .cab ファイル 形式にパッケージ化されたアプレットは JRE および Java Plug-in にはロードされません。

Q: Authenticode 方式で署名されたアプレットは Sun の JRE および Java Plug-in で動作しますか。

A: 動作しません。Sun JRE および Java Plug-in は、Authenicode 署名や .cab ファイル形式など Microsoft 独自のテクノロジはサポートしていません。 Microsoft の Authenticode テクノロジに依存した署名付きアプレットは、JRE および Java Plug-in ではロードされません。

Q: J/Direct、AFC、WFCなどを使用しているアプレットは、Sun の JRE および Java Plug-in で動作しますか。

A: 動作しません。ここに挙げられたものやその他の Microsoft 独自のテクノロジのライブラリは、JRE および Java Plug-in には含まれていません。Microsoft 独自のテクノロジに依存するアプレットを JRE および Java Plug-in で実行した場合、正しく動作しません。

Q: アプレットが AWT ディスパッチイベントスレッドから NullPointerException をスローします。どうしてですか。

A: アプレットの起動時と停止時に発生するイベントが、Microsoft と Sun の Java プラットフォームの実装間で異なるからです。 たとえば、アプレットのロジックが、Applet.start()/Applet.stop() が呼び出されたときに表示されるアプレットに依存しているとします。 この状態は、Microsoft の実装上でアプレットが実行されている場合は正常ですが、Sun の実装では正常ではありません。

Microsoft による Java プラットフォームの実装上で起動時と停止時に発生する固有のイベントに依存するアプレットは、JRE および Java Plug-in では正しく動作しません。この種の問題で最もよく見られる症状に、AWT ディスパッチイベントスレッドからの NullPointerException があります。

Q: アプレットが AWT ディスパッチイベントスレッドから ClassCastException をスローします。どうしてですか。

A: Microsoft と Sun の実装では、アプレットとそれを取り囲むフレーム間のコンテナ数が異なります。 したがって、Microsoft VM における特定の包含レベルにあるフレームに依存するアプレットは、AWT 階層コンポーネントツリー全体をナビゲートしないので、Sun の JRE および Java Plug-in で実行したら失敗する可能性があります。この種の問題で最もよく見られる症状に、AWT ディスパッチイベントスレッドからの ClassCastException があります。

Q: Java Plug-in は、Java と JavaScript 間の通信をサポートしていますか。

A:はい。Java Plug-in は、基本的な双方向性の Java と JavaScript 間の通信をサポートしています。 ただし、次のような非互換性が判明しています。

Microsoft の実装では、JavaScript で開示されるアプレットのメソッドやプロパティはアプレットオブジェクトのメソッドやフィールドとまったく同じです。 ところが、Java Plug-in では、アプレットのメソッドやプロパティは JavaBeans TM のイントロスペクションを通して JavaScript で開示されます。ここでは、Microsoft VM とは異なる手法でアプレットのフィールドが処理されます。 したがって、アプレットオブジェクトのフィールドにアクセスする JavaScript は、JRE およびJava Plug-in 上で実行すると同じ動作をしません。