この章では、別のJDKで開発されたJavaアプリケーションを、実行時の最適なパフォーマンスを得るためにJRockit JDKへ移行する方法について説明します。
この章の内容は以下のとおりです。
注意: Oracle JRockit JDKへの正常な移行は、移行対象のアプリケーションと同じくらいJVMにも依存する場合がほとんどです。アプリケーションのOracle JRockit JDKへの移行に関する経験に基づくあらゆる提案をオラクルでは歓迎しています。 |
JRockit JDKへのアプリケーションの移行で必要なのは、環境の若干の変更と、簡単なコーディング・ガイドラインに従うことだけです。
この章では、移行プロセスの実行に役立つ手順およびヒントを示します。また、移行の利点や、移行中に発生する可能性のある問題についても説明します。さらに、JRockit JDKへの移行後にアプリケーションが正常に動作するための、Javaコーディングのベスト・プラクティスについても説明します。
JRockit JDKはOracle WebLogic Serverに付属しているデフォルトのJDKです。他のJDKも市販されていますが、Oracle製品ではJRockit JDKを使用することをお薦めします。
アプリケーションの移行は、Oracle WebLogic ServerとJRockit JDKがサポートされているすべてのプラットフォームに対して実行できます。詳細は、Oracle JRockit JDKのサポートされる構成(http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
)を参照してください。
アプリケーションのJRockit JDKへの移行中に問題が発生した場合は、My Oracle Supportからオラクルにお問合せください。
オラクルにお問合せの際は、問題に関する次のような情報を可能なかぎりご提供ください。
ハードウェア
オペレーティング・システムとそのバージョン
移行するプログラム
スタック・ダンプ(存在する場合)
エラーを再現する小さなサンプル・コード
*.dump
および*.mdmp/core
プロセス・メモリー・ダンプ・ファイルのコピー(ダンプ・ファイルは、Windowsでは*.mdmp
として格納され、LinuxおよびSolarisではcore
またはcore.*
として格納されます)
次の項では、サード・パーティJDKからOracle JRockit JDKにアプリケーションを移行する際に実行が必要なタスクについて説明します。
注意: この項で説明する変更は、主にOracle WebLogic Serverに該当します。別のJavaアプリケーションを使用している場合は、アプリケーションの設定に従って、スクリプトと環境を変更する必要があります。 |
サード・パーティJDKからJRockit JDKに移行するには、アプリケーション環境を次のように変更します。
WL_HOME
/common/commEnv.cmd
(または.sh
)のJAVA_HOME
環境変数を適切なパスに設定します。
WL_HOME
/common/commEnv.cmd
(または.sh
)のJAVA_VENDOR
環境変数をBEA
に設定します。
起動スクリプトを使用する場合は、サード・パーティJVMに固有のコマンドライン・オプションを削除します。可能であれば、サード・パーティのオプションをOracle JRockit JVMに固有のオプション(-Xns
など)に置き換えます。変更する必要のある他のフラグはMEM_ARGS
とJAVA_VM
です。
Oracle JRockit JVMでサポートされているコマンドライン・オプションの詳細は、『Oracle JRockitコマンドライン・リファレンス』を参照してください。
JRockit JDKでは、config.xml
のデフォルトのコンパイラ設定を、javac
コンパイラを指すように変更します。
注意: 『Oracle JRockitアプリケーション開発ガイド』に示されているガイドラインに従って、アプリケーションがOracle JRockit JDKで稼働するように開発されているか確認してください。 |
アプリケーションをJRockit JDKに移行したら、最適なパフォーマンスのためにJVMをチューニングします。たとえば、別の起動ヒープ・サイズを指定したり、カスタムのガベージ・コレクション・パラメータを設定することができます。JRockit JVMのチューニングに関する詳細は、『Oracle JRockitパフォーマンス・チューニング・ガイド』を参照してください。
非標準のコマンドライン・オプション(-X
で始まるオプション)は、起動時にJVMをチューニングするための重要なツールです。これらのオプションは、様々なJavaアプリケーションのニーズに適合するようにJRockit JVMの動作を変更します。アプリケーションをJRockit JDKに移行する場合は、用意されている非標準のオプションについて理解しておくことをお薦めします。詳細は、『Oracle JRockitコマンドライン・リファレンス』を参照してください。
注意: 非標準のオプションの名前は、JVMによって異なる場合があります。たとえば、JRockit JVMでは、世代別コンカレントおよび世代別パラレル・ガベージ・コレクタで、ナーサリを設定するための非標準のオプションの名前は-Xns ですが、HotSpot JVMでは、同様のオプションの名前は-XX:NewSize です。
非標準のオプションはいつでも変更される可能性があります。 |
前述の移行タスクを実行したら、JRockit JVMでアプリケーションをテストします。
テストを行う重要な理由は以下のとおりです。
同期化の問題など、HotSpot JVM上では発生しないバグがアプリケーションで見つかることがあります。
Java仕様に準拠せず、HotSpot固有のクラスや動作に依存しているサード・パーティのクラス・ライブラリを使用していた可能性があります。
誤りのあるサード・パーティのクラス・ファイルを使用していた可能性があります。JRockit JVMは厳密な検証を行います。
JRockit JVMでアプリケーションをテストするには、アプリケーションに適したテスト・スクリプトまたはベンチマークに対して、アプリケーションを実行します。問題が発生した場合は、対象のアプリケーションで通常行うように、問題に対応します。
HotSpot JDKに通常備わっている次のJ2SEツールは、JRockit JDKには付属しません。
jinfo
jhat
jmap
jsadebugd
jstack
JRockit JDKは、ほとんどのHotSpotツールに相当する内部ツールを備えています。表5-1に、HotSpot JDKツールと、それに対応するJRockit JDKツールの一覧を示します。ツールの中には、jrcmd
機能を必要とするものがあります。詳細は、Oracle JRockit JDKツールを参照してください。
表5-1 JRockit JDKとHotSpot JDK: ツールの対応
HotSpotツール | JRockit JDKに同梱 | Oracle JRockitの対応ツール |
---|---|---|
|
いいえ |
|
|
いいえ |
JRockitメモリー・リーク・ディテクタ(Oracle JRockit JDKツールを参照) 次の診断コマンド:
|
|
いいえ |
なし |
|
はい |
JRockitメモリー・リーク・ディテクタおよびJRockitフライト・レコーダも使用できます。 |
|
いいえ |
|
|
はい |
|
|
はい |
JRockitフライト・レコーダおよびOracle JRockit Mission Control内のJRockit管理コンソールも使用できます(Oracle JRockit JDKツールを参照)。 |
|
はい |
|
|
はい |
Oracle JRockit Mission Control内のJRockit管理コンソールも使用できます(Oracle JRockit JDKツールを参照)。 |
|
はい |
|
この項では、JRockit JVMの実行時に利用できる重要かつ汎用的なコマンドライン・オプションと、Hotspot JVMの実行時のオプションの互換性について説明します。
表5-2は、HotSpotおよびJRockitのJVMの両方で名前が同じであるにもかかわらず、機能が異なるオプションを示しています。
表5-2 名前が同じで機能が異なるオプション
オプション | HotSpot JVMの機能 | JRockit JVMの機能 |
---|---|---|
|
ヒープの初期サイズを設定します。 |
ヒープの初期サイズおよび最小サイズを設定します。 詳細は、『Oracle JRockitコマンドライン・リファレンス』を参照してください。 |
表5-3は、HotSpotおよびJRockitのJVMの両方で同じまたは類似した機能を実行するにもかかわらず、名前が異なるオプションを示しています。
表5-3 機能が同じまたは類似で名前が異なるオプション
HotSpot JVMのオプション | JRockit JVMのオプション | 機能 |
---|---|---|
|
|
このオプションはメモリー・システムに関するログ情報を出力します。 |
|
|
このオプションは若い世代のサイズを設定します。 |
|
|
このオプションはコンカレント方式を使用するようにガベージ・コレクタを設定します。 |
|
|
このオプションはパラレル方式を使用するようにガベージ・コレクタを設定します。 |
表5-4は、Oracle JRockit JVMの使用時のみ利用できるオプションの一覧を示しています。
注意: -Xint および-XX:MaxPermSize はHotspot JVMではよく使用されますが、JRockit JVMにはインタープリタもpermgen領域もないため、JRockit JVMには有効ではありません。 |