JDK/JRE、Javaツールについて説明します。
デフォルトJDK/JREの変更
Interstage Application Server V12.0から、JDK/JRE 8が標準になりました。
デフォルトJDK/JREの変更に伴って、複数のJDK/JREをインストールした場合に優先的に使用するJDKが変更になります。
変更点 | Interstage V6.0 | Interstage V7.0以降 | Interstage V9.0以降 | Interstage V10.0以降 |
---|---|---|---|---|
標準インストールでインストールされるJDK/JRE (注1) | JDK 1.3 | JDK 1.4 | JDK 5.0 | JDK 6 |
複数JDK/JREをインストールする場合、JDK/JRE選択時に表示されるJDK/JREのバージョン (注1) | JDK 1.3 | JDK 1.4 | JDK 5.0 | JDK 6 |
複数JDK/JREをインストールした場合、IJServerで使用するJDKのデフォルト (注1) | JDK 1.3 (注2) | 複数JDK/JREをインストールした場合、JDK/JRE選択時に表示されるJDK/JREのバージョンが通常使用するJDK/JREのバージョンとして使用されます。 | 複数JDK/JREをインストールした場合、JDK/JRE選択時に表示されるJDK/JREのバージョンが通常使用するJDK/JREのバージョンとして使用されます。(注3) (注4) (注5) | 複数JDK/JREをインストールした場合、JDK/JRE選択時に表示されるJDK/JREのバージョンが通常使用するJDK/JREのバージョンとして使用されます。(注3) |
変更点 | Interstage V12.0 |
---|---|
標準インストールでインストールされるJDK/JRE (注1) | JDK 8 |
複数JDK/JREをインストールする場合、JDK/JRE選択時に表示されるJDK/JREのバージョン (注1) | JDK 8 |
複数JDK/JREをインストールした場合、IJServerで使用するJDKのデフォルト (注1) | JDK 8 |
本製品のインストールによって、システム環境変数CLASSPATHが自動的に設定されます。
なお、IJServerを使用する場合は、ワークユニット設定のJavaバージョンを変更するだけで、CLASSPATHも自動的に変更されます。このため、使用するJDKによりCLASSPATHを変更する必要はありません。
Interstage管理コンソールの[ワークユニット] > [新規作成]画面で、ワークユニット設定のJavaバージョンはデフォルトで空欄表示となります。この場合、以下の優先順位で使用するJDK/JREを決定するため、デフォルトでJDK 1.3が使用されます。
1. JDK 1.3
2. JRE 1.3
3. JDK 1.4
4. JRE 1.4
V9およびV10のIJServer(J2EE)では、JDK/JRE 5.0のみ使用可能です。
V11のIJServer(J2EE)では、JDK/JRE 6のみ使用可能です。
V8互換IJServerでは、JDK/JRE 1.4のみ使用可能です。
IJServer(JavaEE)では、JDK 5.0がデフォルトになります。
なお、IJServer(JavaEE)は、Interstage Application Server V9.2からの機能です。
デフォルトJDKの変更に伴い、以下の注意が必要です。
メモリ使用量の変更
異なるバージョンのJDK/JREにアプリケーションを移行する場合は、メモリ使用量が変動するため、必ずチューニングを実施してください。
メモリ使用量のチューニング方法は、「チューニングガイド」の「JDK/JRE 7のチューニング」、および「JDK/JRE 8のチューニング」を参照してください。
Shift_JISエンコーディングの変更
JDK/JRE 1.4.1よりShift_JISエンコーディングの扱いが変更になっています。
この変更に伴い、Javaプログラムで文字エンコーディングとして「Shift_JIS」、「ms_kanji」、「x-sjis」または「csshiftjis」を指定した部分を、「Windows-31J」に修正する必要があります。
詳細は、「使用上の注意」の「注意事項」の「JDK/JREの注意事項」の「JDK1.4.1からの文字エンコーディングの変更について」を参照してください。
Solarisにおけるデフォルト文字エンコーディングの変更
JDK/JREのバージョンによって、Solarisにおけるデフォルトの文字エンコーディングが異なります。
java.lang.Stringを生成する際や、ファイル入出力を行うときは明示的に文字エンコーディングを指定する必要がある場合があります。
詳細は、「使用上の注意」の「注意事項」の「JDK/JREの注意事項」の「Solarisにおけるデフォルト文字エンコーディング」を参照してください。
「floating-point assist」メッセージの抑制
V8まではプロセス内で実行される浮動小数点演算の結果によって、OSがシステムログに対して、以下のメッセージを出力する場合がありました。
プロセス名(プロセスID): floating-point assist fault at ip XXX, isr YYY (XXX、YYY: 16進数)
V9では、Javaプロセスからの本メッセージの出力は抑止するように変更になりました。
JAXPの変更
XML処理(JAXP)のデフォルトは、V11.2.0までは、「Apache Xalanの提供するJAXP実装」でしたが、V12.0では、「Oracle社の提供するJAXP」に変更します。
詳細については、「使用上の注意」の「XML処理(JAXP)を使用する際の注意事項」を参照してください。
シリアライズ・デシリアライズ時のチェック強化
V10.1以降では、シリアライズ・デシリアライズ時のチェックが強化されています。
java.io.ObjectOutputStreamクラスのdefaultWriteObjectメソッドとputFields/writeFieldsメソッドの両方が呼ばれる、あるいは、java.io.ObjectInputStreamクラスのdefaultReadObjectメソッドとgetFields/readFieldsメソッドの両方が呼ばれる場合、java.io.NotActiveExceptionが発生することがあります。
jheapの変更点
Interstage Application Server V7.0以降では、jheapのオプションの指定形式が変更となりました。
Interstage V6.0 | jheap processid [interval] |
本バージョン・レベル | jheap [-t] [-i interval] [-c count] processid |
本バージョン・レベルでは、Interstage Application Server V6.0と同様のコマンド形式も指定可能ですが、新しい指定形式に移行されることをおすすめします。
jheapの詳細は、「トラブルシューティング集」の「jheap」を参照してください。
jmapの変更点
Intersage Application Server V11.1以降では、インターン(intern)された文字列情報を表示する jmap のオプションが変更になりました。(JDK7以降の場合)
Interstage V11.0以前 | -permstat オプション |
本バージョン・レベル | -heap オプション |
JDK8より、-permstatオプションは-clstatsオプションに変更されました。
jmapの詳細は、「トラブルシューティング集」の「JDKに含まれるトラブルシューティングに役立つツール」を参照してください。
Qualyzerの提供停止とJava監視機能等への移行
本製品では、Qualyzerを提供していません。
ここでは、Qualyzerから、Java監視機能やJDK標準ツールへの移行について説明します。
Java監視機能の詳細については、「トラブルシューティング集」の「Javaツール機能」の「Java監視機能」を、JDK標準ツール(jconsole/jmap/jstat/jvisualvm/jhat)の詳細については、「JDKドキュメント」の「JDKツールとユーティリティ」を、それぞれの具体的な使用方法については、「トラブルシューティング集」の「Javaツール機能」の「チュートリアル」を参照してください。
メモリ/GC情報
Qualyzerの性能情報分析機能の「メモリ/GC情報」については、以下をご使用ください。
jconsoleの「メモリ」タブ
jmap
jstat
jvisualvmの「監視」タブ
CPU情報
Qualyzerの性能情報分析機能の「CPU情報」については、以下をご使用ください。
Java監視機能の「メソッドサンプリング」タブ
jvisualvmの「プロファイラ」タブ
サンプリング情報
Qualyzerの性能情報分析機能の「サンプリング情報」については、以下をご使用ください。
Java監視機能の「メソッドサンプリング」タブ
jvisualvmの「プロファイラ」タブ
メソッドトレース情報
Qualyzerの性能情報分析機能の「メソッドトレース情報」については、以下をご使用ください。
Java監視機能の「メソッドサンプリング」タブ
jvisualvmの「プロファイラ」タブ
メモリダンプ機能
Qualyzerのメモリダンプ機能については、以下をご使用ください。
Java監視機能の「ヒープ分析」タブ
jhat
jmap
jvisualvmの「プロファイラ」タブで「メモリー」ボタン
jvisualvmの「監視」タブで「ヒープダンプ」ボタン後、「heapdump」タブ
Java監視機能の使用
本製品では、オプショナルCDを添付していません。
Java監視機能を使用する場合は、JDK 7をインストールしてください。
JDKをインストールすることにより、Java監視機能が使用できるようになります。
JDK/JRE 8におけるJava監視機能について
JDK/JRE 8では、Java監視機能を提供していません。
ここでは、JDK標準ツールによる、Java VMに関するパフォーマンス・データの収集・表示について説明します。
JDK標準ツールについては、「JDKドキュメント」の「JDKツールとユーティリティ」を参照してください。
Java VisualVM開発者サイトは、次のURLで公開されています。
VisualVM
https://visualvm.github.io/
■メソッドサンプリング機能
メソッドサンプリング機能と同じ情報を取得するには、JDKに含まれるJDKツール「VisualVM」を利用します。
以下のいずれかの方法で情報を取得できます。(すでにVisualVMを起動し、対象アプリケーションにアタッチしているものとします。)
プロファイラ機能を利用する場合
「プロファイラ」タブ内の「CPU」ボタン
以下の情報を取得できます。
スタックトレース
現在のメソッドの実行情報
サンプリング情報
- セルフタイム(総サンプリング数に対する、該当メソッドのサンプリング数の比率)
- サンプリング期間内に該当メソッドがサンプリングされた回数
「プロファイル結果」の下の「スナップショット」ボタン
以下の情報を取得できます。
現在表示されているメソッドサンプリングの結果を保存
メソッド間の階層関係の表示
サンプラ機能を利用する場合
「サンプラ」タブ内の「CPU」ボタン(「CPUサンプラ」タブ)
以下の情報を取得できます。
スタックトレース
現在のメソッドの実行情報
サンプリング情報
セルフタイム(総サンプリング数に対する、該当メソッドのサンプリング数の比率)
「スナップショット」ボタン
以下の情報を取得できます。
現在表示されているメソッドサンプリングの結果を保存
メソッド間の階層関係の表示
サンプラ機能では「ツール」-「オプション」- 「プロファイル」- 「サンプラCPU」タブより、サンプリング間隔を変更できます。
注意
リモートマシン上で動作するJavaプログラムに対して、プロファイラ機能は利用できません。サンプラ機能を利用してください。
注意
プロファイラ機能ならびにサンプラ機能では、以下の情報は取得できません。
スタックトレース
各メソッドに対応するスタックトレース情報
サンプリング情報
総サンプリング数に対する、サンプリング数の累積比率
サンプラ機能のみ、以下の情報は取得できません。
サンプリング情報
サンプリング期間内に該当メソッドがサンプリングされた回数
プロファイラ機能ならびにサンプラ機能では、以下のサンプリング機能の設定はできません。
サンプリング間隔
ロギング
プロファイラ機能のみ、以下のサンプリング機能の設定は行えません。
トレースの深さ
■ヒープ分析機能
ヒープ分析機能と同じ情報を取得するためには、JDKに含まれるJDKツール「VisualVM」を利用します。
以下の手順で情報を取得できます。(すでにVisualVMを起動し、対象アプリケーションにアタッチしているものとします。)
「監視」タブ内の「ヒープダンプ」ボタン
生成されたヒープダンプのタブより、以下の情報を取得できます。
ヒープダンプ
注意
ファイルの出力先は「サマリー」ボタンを押下し、「基本情報」-「ファイル」に記載されます。
また複数のヒープダンプを生成し、そのタブ内の「クラス」ボタンを押下します。
「別のヒープ・ダンプと比較」リンクを押下し、他のヒープダンプを選択します。
これにより以下の情報を取得できます。
オブジェクトヒストグラム(Javaオブジェクトの使用状況の差分)
注意
ヒープダンプの比較情報はファイルに出力することができません。
■VMオプションの変更機能
JDK/JRE 8でVMオプションを変更するのは、JDKに含まれるJDKツール「jinfo」を利用します。
以下のコマンドでVMオプションの確認、変更ができます。
GC表示ポリシー
現在のGC表示ポリシー設定の確認
jinfo -flag PrintGC <プロセスID>
jinfo -flag PrintGCtimeStamps <プロセスID>
現在のGC表示ポリシー設定を確認する例
C:\>jinfo -flag PrintGC 2784 -XX:-PrintGC
C:\>jinfo -flag PrintGCTimeStamps 2784 -XX:-PrintGCTimeStamps |
GC表示ポリシーの変更
表示なし
jinfo -flag -PrintGC <プロセスID>
jinfo -flag -PrintGCTimeStamps <プロセスID>
GC表示ポリシーを「表示なし」に変更する例
C:\>jinfo -flag -PrintGC 2784 C:\>jinfo -flag -PrintGCTimeStamps 2784 |
標準(PrintGCに相当)
jinfo -flag +PrintGC <プロセスID>
GC表示ポリシーを「標準」に変更する例
C:\>jinfo -flag +PrintGC 2784 [GC (Allocation Failure) 124883K->54427K(343552K), 0.0766944 secs] [GC (Allocation Failure) 131739K->61347K(353280K), 0.1069854 secs] : |
標準+経過時間(PrintGC、PrintGCTimeStampsに相当)
jinfo -flag +PrintGC <プロセスID>
jinfo -flag +PrintGCTimeStamps <プロセスID>
GC表示ポリシーを「標準+経過時間」に変更する例
C:\>jinfo -flag +PrintGC 2784 C:\>jinfo -flag +PrintGCTimeStamps 2784 63.814: [GC (Metadata GC Threshold) 141211K->69579K(357376K), 0.1200416 secs] 63.935: [Full GC (Metadata GC Threshold) 69579K->66582K(431616K), 0.9631842 secs] : |
System.gc()の抑止
現在のSystem.gc()抑止設定の確認
jinfo -flag DisableExplicitGC <プロセスID>
現在のSystem.gc()抑止設定を確認する例
C:\>jinfo -flag DisableExplicitGC 2784 -XX:-DisableExplicitGC |
System.gc()の検出
現在のSystem.gc()検出設定の確認
jinfo -flag PrintJavaStackAtSystemGC <プロセスID>
現在のSystem.gc()検出設定の確認
C:\>jinfo -flag PrintJavaStackAtSystemGC 2784 -XX:-PrintJavaStackAtSystemGC |
注意
以下のVMオプションの変更はできません。
アプリケーションを再起動し、その際にVMオプションを指定してください。
System.gc()の抑止
-XX:+(-)DisableExplicitGC
System.gc()の検出
-XX:+(-)PrintJavaStackAtSystemGC
また、JDK8のjinfoコマンドでは、以下の機能は使用できません。
GC表示ポリシー
- 詳細
タイムスタンプ形式
TLSの再ネゴシエーションについて
JDK/JRE 6 Update 22、JDK/JRE 7 よりTLSの再ネゴシエーション方法が変わっています。
詳細については、「使用上の注意」の「Transport Layer Security (TLS) の再ネゴシエーションについて」を参照してください。
java.net.SocketPermission のデフォルトについて
JDK/JRE 6 Update 71 、JDK/JRE 7 Update 51 よりSocketPermissionのデフォルトが変更されます。
詳細については、「使用上の注意」の「java.net.SocketPermission のデフォルトについて」を参照してください。
メモリ割り当てプールのデフォルトについて
JDK/JRE 7 Update 40 よりJDK/JRE 7のメモリ割り当てプールのデフォルトサイズが変更されます。
この変更によるアプリケーションへの影響はありません。
詳細については、「使用上の注意」の「Javaヒープに対するデフォルトについて」を参照してください。
SSLv3プロトコルの無効化について
Interstage Application Server V12.0より、SSL通信を行う際に、デフォルトで利用可能なプロトコルとして、SSLv3が使用できなくなります。
詳細については、「使用上の注意」の「SSLv3プロトコルの無効化について」を参照してください。
暗号アルゴリズムの無効化について
Interstage Application Server V12.0より、V11.2.0 以前で使用できていた暗号アルゴリズムが使用できなくなります。
詳細については、「使用上の注意」の「暗号アルゴリズムの無効化について」を参照してください。