Java SE 5.0でのJava 2Dの拡張機能


すべてのBufferedImageのキャッシュ

JDK 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)があります。


注: JDK 5.0の段階では、これらのメソッドは完全に機能しません。setAccelerationPriorityによって設定された値は無視され、createCompatibleVolatileImageメソッドで作成されたイメージは常にハードウェアの高速化が行われるわけではありません。LinuxおよびSolarisシステムでは、OPAQUE VolatileImagesのみがハードウェア高速化されます。Microsoft Windowsシステムの場合、JDK 5.0のcreateCompatibleVolatileImageで作成されたイメージのハードウェアの高速化が行われるのは、ハードウェアが高速化をサポートし、しかも次の条件の1つが真の場合のみです。 これらのメソッドは、今後のリリースで完全に実装される予定です。

ハードウェア高速化レンダリングに対するOpenGLによるサポート

この変更に対応するバグ・レポート: 4607536および5008045

JDK 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のOpenGLについて

次のフレーム・バッファは、OpenGLベースのJava 2Dパイプラインで動作することがわかっています。

Solaris x86プラットフォーム用の高速化OpenGLライブラリは、Sunのサイトから利用することができません。ただし、Xi Graphicsなどのサード・パーティは、Solaris x86用のOpenGLライブラリをサポートします。

LinuxのOpenGLについて

ほとんどのLinuxディストリビューションには、Mesa 3D Graphics Libraryが含まれています。このライブラリは、OpenGL仕様のソフトウェアの実装です。Mesaはハードウェア高速化を利用しないため、OpenGLベースのJava 2Dパイプラインは、デフォルトのX11ベースのパイプラインに比べてかなり低速で実行されることになります。そのため、OpenGLベースのパイプラインで適切なパフォーマンスを実現するために、使用しているグラフィックス・ハードウェア業者提供の、高速化OpenGLドライバをインストールすることをお薦めします。

次のWebサイトには、ダウンロード可能な高速化OpenGLドライバがあります。

Microsoft WindowsのOpenGLについて

OpenGLベースのパイプラインで適切なパフォーマンスを実現するために、使用しているグラフィックス・ハードウェア業者提供の、高速化OpenGLドライバをインストールすることをお薦めします。次のWebサイトには、OpenGLベースのJava 2Dパイプラインとともに機能する、ダウンロード可能な高速化OpenGLドライバがあります。

注: Microsoft Windowsで使用するNvidiaおよびATI両方の最新のドライバは、使用しているアプリケーションでレンダリング・アーティファクトを発生させる可能性があることが確認されています。これらのドライバのバグについては現在調査中であり、将来ドライバを更新するときに解決できるように製造元と協働しています。

CUPSプリンタに対するSolarisおよびLinuxのサポート

この変更に対応するバグ・レポート: 4641868および4683270

SolarisおよびLinuxシステムで、CUPS (共通UNIXプリンタ・システム)プリンタとして構成されたプリンタを使用できるようになりました。この拡張機能によって、ほとんどのPostScriptプリンタとラスター・プリンタも含めて、CUPSにサポートされるすべてのプリンタが、Javaプラットフォームで使用できるようになりました。つまり、Linuxとともに低価格のプリンタを簡単に使用できます。CUPSは、IPP (インターネット・プリンティング・プロトコル、Internet Printing Protocol)に基づいています。

詳細は、CUPSを参照してください。

バイキュービック補間処理

この変更に対応するバグ・レポート: 4200154

2Dの実装では、バイキュービック補間処理がサポートされるようになり、要求に応じていつでも使うことができます。以前のバージョンでは、RenderingHintsクラスによって定義されたVALUE_INTERPOLATION_BICUBICヒントが優先されず、代わりにバイリニア補間処理が使用されました。現在では、バイキュービック・レンダリングのヒントが優先され、新しい定数のTYPE_BICUBICAffineTransformOpに追加されました。

ファイルとストリームからのフォントの作成

この変更に対応するバグ・レポート: 4390880および4468862

現在では、Type 1フォントからFontオブジェクトを作成することと、Type 1またはTrueTypeフォント・データのどちらかを含むファイルから直接Fontオブジェクトを作成することが可能になりました。

この新しい機能をサポートするために、Fontクラスには、ファイルからFontオブジェクトを作成する新しい createFontメソッドがあります。既存のcreateFontメソッドは、ストリームからFontオブジェクトを作成します。新しい定数のFont.TYPE1_FONTで、どちらかのcreateFontメソッドにType 1フォントを指定します。

テキスト・レンダリングのパフォーマンスと信頼性の向上

この変更に対応するバグ・レポート: 4641861

テキスト・レンダリングのコードに対する多くの内部的な変更によって、コードの堅牢さ、パフォーマンス、およびスケーラビリティが著しく向上しました。

多言語のテキスト・レンダリング

この変更に対応するバグ・レポート: 4097028

論理フォントを使用する2Dテキスト・レンダリングでは、多言語テキストをレンダリングするために、サポートされるすべての書記法がインストール済みのホストOSフォントを利用できるようになりました。たとえば、タイ語のロケール環境で実行中でありながら韓国語のフォントがインストールされている場合は、タイ語と韓国語の両方がレンダリングされます。


Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.