6.9 Javaランタイム・システムのカスタマイズ

AHFスコープはJavaで記述されているため、プラットフォームに依存しません。

スクリプトahfscopeは、Oracleクラスを使用してJava仮想マシン(JVM)を起動します。知識のあるユーザーは、このスクリプトのカスタマイズを検討するか、環境変数_JAVA_OPTIONSを使用してJVMがコードを実行する方法を決定できます。

JVMはJavaクラスを解釈するランタイム・プロセスです。現在のすべてのJVMには、バイトコードをオンザフライでネイティブ・コードに変換するいくつかの方法が組み込まれています。この分野で主流となっているのがHotSpotです。クラスの呼出しを開始する場合を除き、ほとんどの場合、Javaメソッドは後でネイティブ・コードで実行されます。したがって、Cなどのネイティブ言語で記述されたプログラムに匹敵する速度で実行されます。

さらに、多くのプラットフォームで、JavaはOpen GLライブラリを使用してハードウェア・アクセラレーションを備えたネイティブの2Dおよび3Dグラフィックスをサポートしており、これにより表示パフォーマンスが大幅に向上します。オープンGLをJVMでデフォルトで使用するように構成することをお薦めします。Open GLライブラリに関する情報は、http://www.opengl.org/で入手できます。レンダリング・ハードウェア(グラフィックス・カード)のほとんどのメーカーは、ビデオ・カード用にこのライブラリのバージョンを提供します。グラフィックス・カードの現在のドライバに加えて、このライブラリの最新バージョンを入手することが重要です。Open GLを使用したJavaレンダリングの詳細は、次のサイトを参照してください。
  • https://docs.oracle.com/javase/8/docs/technotes/guides/2d/flags.html#opengl
  • https://docs.oracle.com/javase/8/docs/technotes/guides/2d/new_features.html
OpenGLのJVMアクティブ化フラグは次のとおりです。
  • -Dsun.java2d.opengl=true: OpenGLパイプラインを使用します
  • -Dsun.java2d.d3d=true: Microsoft WindowsのDirect3Dアクセラレータを使用します

AHFスコープは3Dではレンダリングされませんが、Direct3Dを介して使用できる高速な領域再ペイントから大きなメリットがもたらされます。

JVMオプションは、javaコマンドで使用することも、環境変数_JAVA_OPTIONSとして宣言することもできます。

Linuxの例:
_JAVA_OPTIONS="-Dsun.java2d.opengl=True -Dsun.java2d.d3d=true"  export _JAVA_OPTIONS
trueの大文字Tに注意してください。大文字で記述した場合、OpenGLパイプラインが使用可能かどうかに関係なく、Javaは標準出力に出力されます。次に、Open GLを使用できないという警告の例を示します。
Picked up _JAVA_OPTIONS: -Dsun.java2d.opengl=True -Dsun.java2d.d3d=true
Could not enable OpenGL pipeline for default config on screen 0
このケースでは、システムにはOpenGLをサポートするグラフィックス・カードがありません。次に、OpenGLをサポートするグラフィックス・カードを持つシステムの例を示します。
OpenGL pipeline enabled for default config on screen 0

一部のグラフィックス・カードの場合、OpenGLはオプションsun.java2d.opengl.fbobject=falseを必要とします。次のドキュメントhttp://www.oracle.com/technetwork/java/javase/index-142560.htmlレンダリングおよびパフォーマンスの問題の診断に関する項を参照してください。

このリンクは、特定のハードウェア/ドライバ・バージョンとともにOpenGLおよびJava 2D描画パッケージで発生する可能性がある問題の現在の包括的な説明です。