JVM Compatibility

以下の一覧は、Nexaweb Platform がサポートするさまざまなベンダの VM に関する既知のクライアント制限および問題を示しています。

 これらの問題は、特定の JVM バージョンに含まれる既知の欠陥を表す場合と、各バージョンの単なる制限にすぎない場合があります。この一覧に含まれる問題は、Nexaweb の品質保証活動によって明らかにされた問題であり、公式にドキュメント化されている欠陥とは一致しない可能性があります。

 特定の VM の欠陥および制限の詳細については、次の Web サイトを参照してください。

Sun JVM
Microsoft JVM 
http://msdn.microsoft.com/library/で「"java virtual machine" kbprb kbenvとキーワードに指定して検索

Sun JVM 1.6

Nexaweb Platform 4.1.8, 4.2.9, 4.5.3 は、全て Sun JVM 1.6 のテストを完了しています。 将来のメンテナンスリリースで解決するべくこれらの問題に取り組んでいきます。

Sun JVM 1.3 および 1.4

ネットワークタイムアウト

Sun JVM 1.3 および 1.4 では、ネットワーク (ソケット呼び出し) の読み取りおよび接続のタイムアウトをプログラムで設定できません。これにより、プッシュ接続で問題が発生し、読み取りまたは切断ソケット呼び出しの際に接続が恒久的にブロックされる可能性があります。

RetrieveAsynchronously および RetrieveAndProcessAsynchronously は、独立したスレッドを使用してリクエストを実行します。このスレッドは、非常に限定された条件の下で無期限にブロックする可能性があります。ただし、アプリケーションに問題が発生することはありません。XInclude などの内部ネットワークメカニズムは、このメソッドを使用してネットワーク リクエストを実行しますが、リスクはありません。

Retrieve および RetrieveAndProcess は同期呼び出しであり、非常に限定された条件の下で無期限にブロックする可能性があります。非同期呼び出しの使用をお勧めします。

Sun JVM 1.4 以降では、グローバルタイムアウトを設定するシステム引数を Java Control Panel 経由で VM に渡すことができます。このタイムアウトは次のコマンドで設定します。-Dsun.net.client.defaultReadTimeout=NNN (NNN はタイムアウトをミリ秒単位で指定する整数値)

この問題の回避方法は、Platform 4.1.5 および Platform 4.5 以上で提供される予定です。

Sun JVM 1.3

 SSL およびプッシュ接続

Sun JVM 1.3 には、プッシュ接続越しの SSL に関する既知の問題があります。VM のネットワーク層は、ストリーム全体を読み込んで閉じるまで、SSL HTTP ストリーム越しにコンテンツを配信しません。これによりプッシュ接続操作が妨げられます。このような環境では、ポーリングを使用する必要があります。

Sun JVM 1.3 openPushConnection() を呼び出すと、ProtocolException が発生します。

もう 1 つの回避方法は、プッシュ接続を定期的に閉じるフラッシュポリシーを構成し、データを強制的に配信することです。この場合は、nexaweb-client.xml で次の設定を true に設定することで、ProtocolException の発生を回避できます。

/client-app/launch-configuration/allow-push-in-unsupported-environments

Microsoft JVM 1.1

 プッシュ接続の問題

 HTTP ストリームの最後の数バイトは、HTTP ストリームが閉じられるか、サーバーから追加バイトが送信されるまで利用できません。これにより、データがバッファに入れられ、クライアントから利用できなくなるため、プッシュ接続で問題が発生します。Nexaweb には、5 kb のデータをプッシュし、バッファを強制的にクライアントに送信するデフォルトのフラッシュポリシーが用意されています。次に例を示します。
 
 

マウスカーソル

新しいバージョンの Microsoft JVM では、マウスカーソルの動作が標準とは異なります。マウスカーソルは予期しない形状を保持する場合があります。新しいバージョン (4.1 および 4.2) Nexaweb Platform では、こうした問題の大部分が解決されています。

Input Method Editor (IME)

Microsoft JVM 1.1 および 1.3 より前の Sun VM では、ネイティブの IME サポートが提供されません。したがって、このサポートはヘヴィウェイトコンポーネントを介して提供されます。そのため、ライトウェイトな Nexaweb UI コンポーネントを併用すると統合に関する軽微な問題が発生し、標準とは異なる動作になります。新しいバージョンの VM では、ネイティブの IME サポートが提供されます。


ユーザーインターフェイス要素に関する制限

マウスのスクロールホイールやトリプルクリックなどの新しいユーザーインターフェイス対話機能は、MS JVM ではサポートされません。したがって、これらの機能はイベントとしてアプレットに渡されません。

Internet Explorer のショートカットキー

Microsoft Internet Explorer のショートカットキーは、Microsoft JVM によって処理されます。ただし、Microsoft JVM がこれらのショートカットキーを使用することはありません。Nexaweb アプリケーションが Internet Explorer と同じショートカットキーマッピングを使用する場合、実行されたキーストロークは、Nexaweb アプリケーションで 1 回、Internet Explorer で 1 回、合計 2 回処理されることになります。

ネットワークタイムアウト

MS JVM ではネットワークタイムアウト機能が提供されません。ただし、無期限にブロックする呼び出しはほとんど発生しません。詳細については、以下の「ネットワークタイムアウト」を参照してください。

Java 1.1 に準拠しない機能の使用

Vector.add() など Java 1.1 に準拠しない機能を MCO onLoad() メソッドで使用した場合、Nexaweb クライアントがハングアップします。