J2SE 5.0 では、BufferedImage
コンストラクタで作成されたすべてのイメージが管理対象のイメージとなり、ビデオメモリー内にキャッシュすることができるようになりました。または、リモート X サーバーの場合、X サーバー側にキャッシュできます。以前の実装では、Component
createImage(int, int)
メソッドまたは GraphicsConfiguration
createCompatibleImage
メソッドで作成された互換性のあるイメージのみを管理していました。管理されるイメージは、管理されないイメージに比べて、一般的にパフォーマンスが良好です。
この変更に対応するバグレポート: 4881082
Image
クラスには、ハードウェアの高速化に関連する 3 つの新しいメソッドがあります。以前は VolatileImage
内でのみ定義された getCapabilities
メソッドによって、イメージが現在高速化されているかどうかを判断できるようになります。ほかの 2 つのメソッド、 setAccelerationPriority
および getAccelerationPriority
では、イメージの高速化の重要性の程度についてのヒントを設定または取得できます。
GraphicsConfiguration
クラスには、透明な VolatileImage
を作成できる 2 つの新メソッド、createCompatibleVolatileImage(int, int, int)
および createCompatibleVolatileImage(int, int, ImageCapabilities, int)
があります。
setAccelerationPriority
によって設定された値は無視され、createCompatibleVolatileImage
メソッドで作成されたイメージは常にハードウェアの高速化が行われるわけではありません。Linux および Solaris システムでは、OPAQUE
VolatileImages
のみがハードウェア高速化されます。Microsoft Windows システムの場合、J2SE 5.0 の createCompatibleVolatileImage
で作成されたイメージのハードウェアの高速化が行われるのは、ハードウェアが高速化をサポートし、しかも次の条件の 1 つが真の場合のみです。
OPAQUE
である。TRANSLUCENT
であり、実行時に特に透過性高速化が有効にされている (sun.java2d.translaccel=true
)。この変更に対応するバグレポート: 4607536 および 5008045。
J2SE 5.0 には、Java 2D 用の新しい OpenGL ベースのパイプラインが含まれています。このパイプラインにより、テキスト、イメージ、ライン、塗りつぶしのプリミティブなどの単純なレンダリング操作と同様に、複雑な変換、ペイント、合成およびクリッピングなどの操作にもハードウェアの高速化が提供されます。このパイプラインは、Solaris、Linux、Microsoft Windows など、すべてのプラットフォームで利用可能で、現在のところ、デフォルトでは無効にされています。
メッセージを表示させないで OpenGL ベースのパイプラインを有効にするには、コマンド行に次のシステムプロパティーを指定します。
-Dsun.java2d.opengl=true
OpenGL ベースのパイプラインが特定の 1 つのスクリーンに対して正常に初期化されたかどうかに関する、コンソールへの詳細な出力を行うには、大文字の T を使用して、「True
」を指定します。
-Dsun.java2d.opengl=True
Solaris/Linux の場合、最小の要件は次のとおりです。
Microsoft Windows の場合、最小の要件は次のとおりです。
Solaris SPARC プラットフォーム用の高速化 OpenGL ライブラリは、次の Sun のサイトから直接利用できます。
http://www.oracle.com/us/sun/index.htm 次の Sun のフレームバッファーは、OpenGL ベースの Java 2D パイプラインとともに機能します。Solaris x86 プラットフォーム用の高速化 OpenGL ライブラリは、Sun のサイトから利用することができません。ただし、Xi Graphics などのサードパーティーは、Solaris x86 用の OpenGL ライブラリをサポートします。
ほとんどの Linux ディストリビューションには、The Mesa 3D Graphics Library が含まれています。このライブラリは、OpenGL 仕様のソフトウェアの実装です。Mesa はハードウェア高速化を利用しないため、OpenGL ベースの Java 2D パイプラインは、デフォルトの X11 ベースのパイプラインに比べてかなり低速で実行されることになります。そのため、OpenGL ベースのパイプラインで適切なパフォーマンスを実現するために、使用しているグラフィックスハードウェア業者提供の、高速化 OpenGL ドライバをインストールすることをお勧めします。
次の Web サイトには、ダウンロード可能な高速化 OpenGL ドライバがあります。
OpenGL ベースのパイプラインで適切なパフォーマンスを実現するために、使用しているグラフィックスハードウェア業者提供の、高速化 OpenGL ドライバをインストールすることをお勧めします。次の Web サイトには、OpenGL ベースの Java 2D パイプラインとともに機能する、ダウンロード可能な高速化 OpenGL ドライバがあります。
注: Microsoft Windows で使用する Nvidia および ATI 両方の最新のドライバは、使用しているアプリケーションのレンダリング機能に悪影響を及ぼす可能性があることが確認されています。これらのドライバのバグについては現在調査中であり、将来ドライバを更新するときに解決できるように製造元と協働しています。
この変更に対応するバグレポート: 4641868 および 4683270
Solaris および Linux システムで、CUPS (共通 UNIX プリンタシステム) プリンタとして構成されたプリンタを使用できるようになりました。この拡張機能によって、ほとんどの PostScript プリンタとラスタプリンタも含めて、CUPS にサポートされるすべてのプリンタが、Java プラットフォームで使用できるようになりました。つまり、Linux とともに低価格のプリンタを簡単に使用できます。CUPS は、IPP (インターネットプリンティングプロトコル、Internet Printing Protocol) に基づいています。
詳細については、http://www.cups.org を参照してください。
この変更に対応するバグレポート: 4200154
2D の実装では、バイキュービック補間処理がサポートされるようになり、要求に応じていつでも使うことができます。以前のバージョンでは、RenderingHints
クラスによって定義された VALUE_INTERPOLATION_BICUBIC
ヒントが優先されず、代わりにバイリニア補間処理が使用されました。現在では、バイキュービックレンダリングのヒントが優先され、新しい定数の TYPE_BICUBIC
が AffineTransformOp
に追加されました。
この変更に対応するバグレポート: 4390880 および 4468862
現在では、Type 1 フォントから Font
オブジェクトを作成することと、Type 1 または TrueType フォントデータのどちらかを含むファイルから直接 Font
オブジェクトを作成することが可能になりました。
この新しい機能をサポートするために、Font
クラスには、ファイルから Font
オブジェクトを作成する新しい createFont
メソッドがあります。既存の createFont
メソッドは、ストリームから Font
オブジェクトを作成します。新しい定数の Font.TYPE1_FONT
で、どちらかの createFont
メソッドに Type 1 フォントを指定します。
この変更に対応するバグレポート: 4641861
テキストレンダリングのコードに対する多くの内部的な変更によって、コードの堅牢さ、パフォーマンス、およびスケーラビリティーが著しく向上しました。
この変更に対応するバグレポート: 4097028
論理フォントを使用する 2D テキストレンダリングでは、多言語テキストをレンダリングするために、サポートされるすべての書記法がインストール済みのホスト OS フォントを利用できるようになりました。たとえば、タイ語のロケール環境で実行中でありながら韓国語のフォントがインストールされている場合は、タイ語と韓国語の両方がレンダリングされます。