Solaris 8 のソフトウェア開発 (追補)

第 18 章 Java 2 Standard Edition および JDK の新しい機能について

Solaris 8 4/01 リリースで、J2SE 1.3.0 とも呼ばれる Java 2 SDK Standard Edition バージョン 1.3.0 が含まれるようになりました。ここでは、その新しい機能について説明します。また、以前の Update リリースにおける J2SE リリースおよび JDK リリースについても説明します。ここに記載する情報は、『Java 2 SDK 開発ガイド (Solaris 編)』に記載されている情報を補足するものです。以下では、各 Update リリースにおける新しい機能について記述します。


注 –

最新のマニュアルページを参照するには、man コマンドを使用してください。Solaris 8 Update リリースのマニュアルページには、「Solaris 8 Reference Manual Collection」には記載されていない新しい情報も提供されています。


Java 2 SDK Standard Edition バージョン 1.3.0

J2SE 1.3.0 は Java 2 SDK のアップグレード版です。このソフトウェアには、次のような新機能や拡張機能が組み込まれています。

それぞれの機能について、次に詳しく説明します。J2SE 1.3.0 の新しい機能の詳細は、http://java.sun.com/j2se/1.3/docs に掲載されている Java 2 Platform に関するマニュアルを参照してください。Java 2 Platform のマニュアルには J2SE 1.3.0 の API 仕様が組み込まれています。

パフォーマンスの向上

Java 2 SDK バージョン1.3.0 ではさまざまな機能拡張が行われ、パフォーマンスが向上しています。変更点としては、Java HotSpot Client Virtual Machine (VM) と Java HotSpot Server VM の追加などがあります。この 2 つは、高性能な Java HotSpot 技術を実装するものです。Java HotSpot Client VM はクライアントシステムのパフォーマンスを最大限に向上させるためのチューニングが行われ、起動時間とメモリーの使用量の分野でパフォーマンスが向上しています。Java HotSpot Server VM はチューニングによりプログラム実行速度のパフォーマンスが最大になるように最適化され、起動時間やメモリーの使用量がさほど問題にはならないサーバーアプリケーションを対象としています。

J2SE 1.3.0 にはまた、新たにチューニングされたクラスライブラリが組み込まれ、実行時のパフォーマンスが改善されています。

Web への容易な展開

アプレットキャッシュ機能

J2SE 1.3.0 で新たにアプレットキャッシュ機能が提供され、アプレットをローカルキャッシュに保存することによって、使用頻度の高いアプレットの高速なロードや起動が可能になりました。アプレットが 2 回以上ダウンロードされたときは、ローカルのアプレットキャッシュに保存されている可能性があります。保存しておくことで、その後アプレットが必要になるたびに、ネットワーク経由でアプレットを表示してダウンロードする必要がなくなり、ローカルにキャッシュされているアプレットを使用できます。

この機能は、大容量かつ使用頻度の高いアプレットにとっては大変便利です。たとえば、多くの企業のアプレットがメガバイトのサイズに達し、それほどのサイズのアプレットになると、ネットワークからロードするのに何十分もかかってしまいます。新しいアプレットキャッシュ機能ではダウンロード時間がなくなるので、ビジネスシーンでいままで以上に強力なアプレットを数多く使用することができます。

オプションパッケージの自動適用

J2SE 1.3.0 では、オプションパッケージの自動適用もサポートされています。オプションパッケージは、Java 2 Platform Standard Edition には含まれていない、特殊なプログラミング用に使用する開発者向けの機能や API のセットであり、別途入手できます。例としては、Java Media Framework 技術や JavaHelpTM オプションパッケージなどあります。

J2SE 1.3.0 より前のバージョンでは、アプレットでオプションパッケージを使用している場合、アプレットを実行したいすべてのクライアントに最新のバージョンのオプションパッケージがインストールされていることが前提とされていました。したがって、クライアントに適切なオプションパッケージがインストールされていなければ、アプレットが意図しない動作をするか、あるいはまったく実行できない状態でした。

J2SE 1.3.0 では、アプレットが必要とするオプションパッケージのバージョンやベンダー情報を指定することができます。開発者は必要なオプションパッケージの最新バージョンを、次の状況のいずれかに当てはまる場合にダウンロードできる URL を、アプレットに指定することができます。

J2SE 1.3.0 では、オプションパッケージに組み込まれている独自のインストーラや Java 言語のインストーラプログラムがサポートされており、ネットワークから新しいバージョンのオプションパッケージを取り込むと、自動的にインストーラプログラムを起動します。

企業レベルでの相互運用性

Java IDL および RMI-IIOP

J2SE 1.3.0 には、CORBA 技術をサポートする重要な拡張機能が 2 つ追加されています。Java 言語で書かれた運用 CORBA IDL コンパイラとRMI over IIOP (RMI-IIOP) APIです。CORBA Interface Definition Language (IDL) は、分散システム用のインタフェースだけを定義する言語です。CORBA はインタフェースの定義に中立的な言語を使用しているため、複数の言語をサポートすることができます。標準 Java 言語バインドに言語的に中立的な CORBA IDL をコンパイルする IDL コンパイラが Java 2 SDK Standard Edition に組み込まれたのは、これが初めてです。これらの言語バインドは Java IDL Object Request Broker (ORB) と連携して、Java プログラミング言語で従来の CORBA プログラミングをサポートします。

Java プラットフォームのバージョン 1.1 から、Remote Method Interface (RMI) のおかげで、プログラマは分散環境のインタフェースを直接 Java 言語で書くことができるようになりましたが、RMI は独自の通信プロトコルを使用していたため、プログラマは RMI を使用するときに、他の言語で書かれたオブジェクトとの通信能力を断念しなければなりませんでした。RMI-IIOP では Java IDL ORB が使用されているため、標準の CORBA 通信プロトコルである Internet InterORB Protocol (IIOP) を RMI と一緒に使用することができます。すべての通信に IIOP が使用されているため、C++ などの他言語で書かれたオブジェクトも、RMI-IIOP 分散オブジェクトと通信できます。さらに RMI は、Java プログラミング言語のインタフェースを CORBA IDL へマップ (対応付け) するときの CORBA 標準として認められました。他の言語でのプログラミングをやりやすくするため、CORBA 標準 IDL は RMI が有効なクラスから生成することができます。既存の RMI プログラムは、通常はわずかな変更で、IIOP プロトコルを使用するように変換できます。

RMI-IIOP では RMI のプログラミングのしやすさに加えて、他言語で書かれたソフトウェアと JavaIDL の CORBA 準拠の通信が可能です。RMI プログラマは多少の制限事項に従えば、CORBA の IIOP 通信機能を使用して、あらゆる種類のクライアントとでも通信できるようになりました。クライアントが全体を Java プログラミング言語で書いたものでも、他の CORBA に準拠している言語で書かれたコンポーネントで構成されたものでも、通信が可能です。

Java Naming and Directory Interface (JNDI) API

J2SE 1.3.0 の新しい Java Naming and Directory Interface (JNDI) API を使用すると、開発者は Java プログラミング言語で書かれたアプリケーションに、ネーミング機能およびディレクトリ機能が追加できます。JNDI の開発目的は、特定のネーミングサービスやディレクトリサービスの実装に依存することなく、異種混在の企業のネーミングサービスおよびディレクトリサービスにシームレスに接続することです。したがって、新規のサービス、拡大中のサービス、すでに展開済みのサービスなど、さまざまなサービスに一貫した方法でアクセスできます。この業界標準のインタフェースを使用すれば、開発者は J2SE 1.3.0 で強力かつ移植性がある、ディレクトリが使用可能なアプリケーションの構築が可能になります。

JNDI アーキテクチャは、API と Service Provider Interface (SPI) で構成されています。Java アプリケーションはこの API を使用して、さまざまなネーミングサービスやディレクトリサービスにアクセスします。SPI では、さまざまなネーミングサービスやディレクトリサービスを透過的にプラグインできるため、Java アプリケーションがサービスにアクセスできるようになります。J2SE 1.3.0 のリリースの JNDI には、次のサービスにアクセスできる、サービスプロバイダが同梱されています。

セキュリティの強化

J2SE 1.3.0 で提供されているセキュリティの拡張機能を使用すると、開発者はさらに多くのツールで、自らの技術投資を自在に保護することができます。RSA 署名が新たにサポートされ、J2SE 1.3.0 の拡張された動的信頼管理機能により、Web ベースの展開が非常に簡単になりました。

RSA 署名に対するサポート

J2SE 1.3.0 では暗号サービスプロバイダが提供されています。これは Web で配信される電子署名ソフトウェアに対応して、広く使用されている RSA 署名をサポートするものです。VeriSign や Thawte などの署名を含め、標準的な RSA 証明書がサポートされています。

J2SE 1.3.0 より前のバージョンでは、Java プラットフォームユーザーが RSA 証明書を使用したいと考えた場合、自分で RSA サービスプロバイダを書くか、あるいは Sun 以外から RSA サービスプロバイダを購入する必要がありました。今では RSA プロバイダが J2SE 1.3.0 に標準として組み込まれています。

動的信頼管理

J2SE 1.3.0 の新しい動的信頼管理機能では、ポップアップダイアログが表示されてユーザはアプレット署名者を検証できるため、署名されたアプレットを実行する各クライアントにセキュリティキーファイルを配布する必要がなくなりました。

以前は、ユーザーが通常は禁じられている操作をアプレットにさせようとして、信頼するソースからのアプレットに追加のセキュリティ許可を与えようとすると、アプレットの信頼するソースの証明書を認識できるように、信頼する署名者の証明書のローカルキャッシュを事前に設定しておく必要がありました。この作業は、アプレットが実行される可能性があるクライアントマシンのすべてで行うことになります。

J2SE 1.3.0 には、アプレットのコードソースからアプレットの署名者を抽出してブラウザに渡す機能によってより有効な対応策を提供しています。ブラウザはその大元の証明書までずっと証明書の連鎖を検証して、ブラウザの持つ、信頼する大元の証明書のデータベースに、その大元の証明書があるかどうかを調べます。そこに大元の証明書があれば、認証された署名者の連鎖がブラウザに表示され、ユーザーはアプレットに対するセキュリティの制限事項をすべて解除できます。

公開鍵証明書に対するサポートの向上

J2SE 1.3.0 では、X.509 公開鍵証明書に対するサポートが強化されています。最近提案された標準プロトコル (RFC 2459) で必須のあるいは推奨されている X.520 の属性がすべてサポートされるようになりました。また、J2SE 1.3.0 は相対識別名内で、複数の属性 / 値の断定を処理できます。

Java サウンド

Java Sound API では、Java プログラムでオーディオと Musical Instrument Digital Interface (MIDI) データの取り込み、処理、再生ができます。これらの新しい機能を使用すると、開発者は次のような新しいタイプのアプリケーションが作成できます。

Java Sound API は効率的なサウンドエンジンによってサポートされており、プラットフォームでの高品質なオーディオミキシングや MIDI 合成機能が保証されています。J2SE 1.3.0 に組み込まれている実装では、具体的には次の機能がサポートされています。

さらに、開発者が現在の実装の機能を拡張するときに使用できるサービスプロバイダインタフェースが API で定義されています。また、ユーザーは上記以外のファイルフォーマット、コーデック、デバイスをサポートするモジュールをインストールできます。API には、システムで現在利用できるリソースに対し、照会やアクセスができる手段も提供されています。

拡張された API と開発しやすさの向上

AWT の拡張機能

J2SE 1.3.0 には、新しいロボット API が組み込まれています。これは、Abstract Window Toolkit (AWT) や Swing のテストの自動化を行うために設計されたものです。ロボット API を使用すると、Java プログラミング言語で書かれたコードで、低レベルのネイティブのマウスやキーボードの入力イベントが生成できます。イベントはオペレーティングシステムレベルで生成されるため、他の AWT への実際のユーザー入力と区別することはできません。

ロボット API は主としてテストの容易性を向上させるため設計されたものですが、次のような利点もあります。

J2SE 1.3.0 では、印刷に対する API も改善されています。新しい印刷 API では、開発者はプラットフォーム固有の機能を使用して AWT コンポーネントから簡単に印刷できます。新しい API を使用すると、開発者は印刷ジョブのプロパティを制御することができます。制御可能なプロパティには、出力先、コピー数、ページ範囲、ページサイズ、方向、印刷の品質などがあります。

Java 2D 技術の拡張

J2SE 1.3.0 では、同じアプリケーションによる複数のモニター上の GUI フレームとウィンドウのレンダリングがサポートされるようになりました。Java 2DTM API では、マルチスクリーンの次の 3 つの構成がサポートされています。

J2SE 1.3.0 の新しい動的フォントロード API を使用すると、開発者は実行時に TrueType フォントの作成やロードが行えます。開発者は Java 2D API を使用して、動的にロードされたフォントに対し、サイズ、スタイル、変形などの希望する機能を与えることができます。

J2SE 1.3.0 の Java 2D API では、Portable Graphics Network (PGN) フォーマットがサポートされるようになりました。このフォーマットは、ラスターイメージを劣化することなく可搬性のある方法で保存できる、柔軟で広範囲な非独占的なファイルフォーマットです。PGN ではグレースケール、索引付きのカラー、トゥルーカラーイメージをサポートしており、アルファチャネルを利用できます。

Java Platform Debugger Architecture (JPDA)

JPDA 技術とは複層構造のデバッグアーキテクチャで、プラットフォーム、仮想マシンの実装、および J2SE バージョンの枠を超えて実行できるデバッガアプリケーションを、ツール開発者が簡単に作成できます。

JPDA には次の 3 つの層があります。

国際化

J2SE 1.3.0リリースおける国際化の向上によって、開発者は自国ユーザー向けにアプリケーションを今まで以上に柔軟にローカライズできるようになりました。ここでは、2 つの新しい機能について説明します。

入力方式とは、アプリケーションに対してテキスト入力を生成するため、キー入力や話しかけるなどのユーザーの操作を解釈するソフトウェアコンポーネントです。国際的なロケールでは、入力方式はテキストの入力に重要な役割を果たします。キーボードから直接入力できる英文テキストと異なり、日本語や中国語などの言語でのテキスト入力には、さらに高度な入力方式のフレームワークが必要となります。J2SE 1.3.0 では、開発者がそうした作業に対応するために必要となる強力なツール群が提供されています。

最新のテキスト編集コンポーネントでは、テキストが最終的に表示される文書の文脈内に、入力されたテキストが表示されます。これを「入力位置内 (on-the-spot)」入力といい、Java 2 Platform では常にサポートされてきました。

J2SE 1.3.0 では、中国などの国で好評な「入力位置下 (below-the-spot)」という、第二の入力スタイルに対するサポートが追加されています。「入力位置下」テキスト編集では、入力済みのテキストは別の編集ウィンドウに表示され、そのウィンドウはテキストの挿入位置の近くに自動的に配置されます。

開発者としては、入力方式のフレームワークの一部として表示されるウィンドウを変更したり、カスタマイズしたいと考える可能性があります。その場合、J2SE 1.3.0 では、入力方式のエンジンである Service Provider Interface (SPI) に対応する新しい API が提供されているため、開発者は自在に変更やカスタマイズができます。SPI を使用して、開発者は、ソフトウェアの必要性に応じて独自の入力方式のエンジンを作成できます。

国際ロケールに対する新たなサポートの例は他にもあります。J2SE 1.3.0 では、アラビア語やヘブライ語などのロケール用に、ツールバーやメニューバーを右から左という方向になるように、アプリケーションのフレームやダイアログボックスをレンダリングすることができます。

プラットフォームライブラリやツールのその他の機能拡張

J2SE 1.3.0 では、Sun と協力関係にある企業との協議の結果や開発者からの要望に応えて、新たな機能がプラットフォームや Java 2 SDK ツールスイートに追加されています。拡張機能には、次のものがあります。

Java 2 SDK Standard Edition バージョン 1.2.2_07a と以前のリリース

次に、J2SE リリースの新しい機能について説明します。

表 18–1 以前の Java 2 Standard Edition (J2SE) リリース

Java リリース 

Update リリース 

J2SE 1.2.2_07a では、J2SE 1.2.2 シリーズの前回のリリースで見つかったバグが修正されています。J2SE 1.2.2_07a での重要なバグ修正に、J2SE 1.2.2_05 で発生したパフォーマンスの低下に対する修正があります。J2SE 1.2.2_07a におけるバグ修正の詳細は、http://java.sun.com/j2se/1.2/ReleaseNotes.html を参照してください。

4/01 

J2SE 1.2.2_06 が前回のリリースのバグ修正によって改良されました。 

1/01 

J2SE v. 1.2.2_05a は、v. 1.2.2_05 (末尾に「a」が無い) のバグ修正版であり、次の新機能および拡張機能が組み込まれています。 

  • スケーラビリティの向上 (20 以上の CPU に対応)

    プリミティブおよびスレッドの並行処理能力の向上により、マルチスレッド化プログラムの性能が向上し、多数のスレッドを使用するプログラムにおいてガーベッジコレクションによる休止時間が大幅に削減されました。

  • JIT コンパイラの最適化の向上

    JIT コンパイラが実行する新しい最適化機能は、仮想および非仮想方式のインライン化、拡張基本ブロック内の CSE、配列結合の検査を不要にするループ分析、およびより速いタイプチェックです。

  • テキストの描画性能の向上

    Direct Graphics Access (DGA) サポートが組み込まれていない Solaris ソフトウェアプラットフォーム上の Java 2 Standard Edition では、いくつかのグラフィック最適化機能によって、テキストの描画性能が大幅に向上しました。これらのプラットフォームには、Ultra 5、Ultra 10、Solaris (Intel 版) オペレーティング環境、およびすべてのリモートディスプレイシステムが含まれます。

  • poller クラスのデモパッケージ

    Java アプリケーションから C の poll(2) ルーチンの関数に、効率的にアクセスできるようになりました。これは、サンプルサーバーを組み込んだデモパッケージとして提供されます。

  • Swing の向上

    Swing クラスに関して、品質と性能の両面で大幅な改善がなされました。詳細については、次の URL にアクセスしてください。

    • http://Java.sun.com/products/jdk/1.2/changes.html

    • http://java.sun.com/products/jdk/1.2/fixedbugs/index.html

10/00 

JDK のリリース

Solaris Update リリースには、次の JDK リリースが組み込まれています。

表 18–2 JDK リリース

JDK リリース 

Update リリース 

JDK 1.1.8_12。前回リリースでのバグ修正によって改良されています。 

1/01 

JDK 1.1.8_10。バグ修正によって改良されています。 

10/00 

Apache Web サーバーにおける Java Servlet のサポート

Solaris 8 10/00 リリースで、mod_jserv モジュールおよび関連ファイルの追加により、Apache Web サーバーソフトウェアで Java Servlet がサポートされるようになりました。現在、/etc/apache に次の構成ファイルが保存されています。

mod_jserv モジュールは、他の Apache ソフトウェアと同様、オープンなソースコードであり、Sun 以外のグループによって保守されています。このグループは、旧リリースの Apache および mod_jserv との互換性の維持に努めています。