JDK 目次
JDK 1.1 の新機能の概要
以下は、JDK バージョン 1.1 の新機能です。ここに記載の API はすべて、コア Java API の一部です。つまり、Java 1.1 仮想マシンが存在するすべてのプラットフォームおよびオペレーティングシステム上で使うことができます。
- 国際化
国際化によりローカライズ可能なアプレットが開発できるようになります。拡張機能には、UNICODE 文字の表示、ロケールメカニズム、言語対応メッセージのサポート、ロケール依存の日付、時間、時間帯および数字処理、照合サービス、文字セットの変換機能、パラメータの形式設定、ならびに文字/語/文の境界の検索サポートが含まれます。
- セキュリティおよび署名付きアプレット
Java Security API は、開発者が Java アプリケーションに低レベルと高レベルの両方のセキュリティ機能を組み込めるように設計されています。JDK 1.1 の Java Security の最初のリリースには、デジタル署名およびメッセージダイジェスト用の API を含む、セキュリティ機能のサブセットが含まれています。さらに、キー管理、承認管理、およびアクセス制御のための abstract (抽象) インタフェースもあります。JDK の今後のリリースでは、X.509 v3 承認およびその他の承認形式をサポートするための特定 のAPI、およびアクセス制御領域におけるより豊富な機能を提供する予定です。
JDK 1.1 には、Java ARchive (JAR) ファイルに署名を付けるツールも搭載されています。このファイルには、クラスやその他のデータ (イメージやサウンドなど) を入れることができます。アプレットビューアは、信頼されたエンティティによる署名(上記のツールを使って)付きの JAR ファイルからダウンロードされたアプレットが、ローカルアプリケーションと同じ完全な権限を持って実行できるようにします。つまり、このようなアプレットは、オリジナルの Java セキュリティモデルの「サンドボックス」制約を受けません。認められる信頼レベルを詳細に分けるなど、最新のリリースで提供するセキュリティポリシーはより洗練されたものとなる予定です。
- AWT の拡張
拡張の目的は、品質とパフォーマンスを最重点におき、AWT (Abstract Window Toolkit) の抱えるいくつかの大きな欠点を解決することです。AWT の拡張は、規模の大きな GUI 開発に対応する、より優れたインフラストラクチャを意味します。つまり、印刷用 API、容易/高速なスクロール、ポップアップメニュー、クリップボード (コピー/貼付け)、コンポーネントごとのカーソル、delegationベースのイベントモデル、イメージとグラフィックスの拡張、および国際化のための柔軟性の富んだフォントサポートなどです。さらに、AWT の Windows (Win32) バージョンは完全に書き直され、速度、品質、およびその他のプラットフォームとの整合性が改善されました。
- JavaBeansTM
JavaBeans API は、サードパーティ ISV によって開発・出荷された Java コンポーネントを、エンドユーザが組み合わせて使えるようにするためのソフトウェアコンポーネントモデルを定義しています。
- JAR ファイル形式
JAR (Java Archive) はプラットフォーム独立型のファイル形式で、複数のファイルを 1 つにまとめます。複数の Java アプレットおよびそれらに必要なコンポーネント (.class ファイル、イメージ、サウンド) を 1 つの JAR ファイル内にまとめたあとで、単一の HTTP トランザクションとしてブラウザにダウンロードできます。これにより、ダウンロード速度がずっと高速になります。JAR 形式は圧縮 (ファイルサイズを小さくすること) もサポートするので、ダウンロード時間が一層短縮できます。さらに、アプレット製作者は JAR ファイル内の個々のエントリにデジタルの署名を付け、それらがどこからきたかを認証できるようにすることができます。Java で作成されているため、既存のアプレットコードと完全な互換性があり、拡張も可能です。
- ネットワーキングの拡張
java.net ベースクラスで、選択した BSD スタイルのソケットオプションをサポートします。JDK 1.1 では、Socket および ServerSocket はfinalクラスではなく、拡張可能クラスです。ネットワークエラーのレポートおよび処理では、これまで以上に細かいクラスとして、新しいサブクラス SocketException が追加されました。クラス MulticastSocket は、sun.net から java.net へ移行しました。この他にも、全般的なパフォーマンスの向上およびバグ修正も行われました。
- IO 拡張
I/O パッケージに文字ストリームも含まれました。これはバイトストリームに類似していますが、8 ビットのバイトではなく 16 ビットの Unicode 文字を含む点が異なります。文字ストリームは、特定の文字エンコードに依存しないプログラムの作成を容易にするので、国際化が簡単にできます。バイトストリームで使える機能のほとんどすべてが、文字ストリームでも使えます。
- Math パッケージ
math パッケージは次の 2 つの新しいクラスを提供します: BigInteger および BigDecimal です。
BigInteger は任意精度の不変の整数で、Java のすべてのプリミティブ整数演算子および java.lang.Math が提供するすべての関連する static メソッドと同等の機能を提供します。また、BigInteger は、モジュラー算術、GCD 計算、初期テスト、素数生成、シングルビット操作、およびその他の操作に関する演算が用意されています。
BigDecimal は、符号付き 10 進数の任意精度の不変の整数で、通貨計算に適しています。BigDecimal は、基本算術、スケール操作、比較、形式変換、およびハッシングに関する演算が用意されています。
- リモートメソッド呼出し
RMI を使うと、プログラマはアプリケーションを Java 間に分散させて作成できます。このアプリケーション内では、ホストが異なる別の Java 仮想マシンからリモートの Java オブジェクトのメソッドを呼び出すことができます。Java プログラムは、RMI が提供するブートストラップネーミングサービスを使ってリモートオブジェクトの位置を見つけるか、または引数や戻り値として参照を受け取るかして、リモートオブジェクトに対する参照を獲得すると、その後はリモートオブジェクトを呼び出すことができます。クライアントはサーバー内のリモートオブジェクトを呼び出すことができ、またこのサーバーも、別のリモートオブジェクトのクライアントになることができます。RMI は本来のオブジェクト指向の多相性をサポートするため、オブジェクト直列化を使ってパラメータのマーシャル/アンマーシャルを行いますが、型は省略しません。
- オブジェクト直列化
オブジェクト直列化は、コア Java 入出力クラスがオブジェクトをサポートするように拡張します。オブジェクト直列化は、オブジェクトおよびこれらのオブジェクトからアクセスできるオブジェクトをバイトストリームにコード化し,逆にストリームからのオブジェクトグラフの復元をする機能を提供します。直列化は、軽量パーシステンスおよびソケットやリモートメソッド呼び出し (RMI) 経由の通信用に使います。オブジェクトをデフォルトでコード化すると、個人データおよび一時データを保護し、クラス展開を実行できます。クラスは独自の外部コード化を実装することができます。この外部形式は、クラス独自の責任範囲です。
- リフレクション
Java コードから、ロードしたクラスのフィールド、メソッド、および構築子に関する情報を見つけ、再現されたフィールド、メソッド、および構築子を使ってセキュリティの許す範囲内でオブジェクトについて基本部分を操作できるようにします。この API により、ターゲットオブジェクト (実行クラスに基づく) の public メンバまたは所定クラスが宣言したメンバのどちらかにアクセスする必要のあるアプリケーションの作成が可能となります。
- JDBCTM - Java データベース接続
Java データベース接続は、標準 SQL データベースアクセスインタフェースで、広範囲のリレーショナルデータベースに均一のアクセスを提供します。さらに、より高いレベルのツールとインタフェースを構築できる共通ベースも提供します。これは「ODBC ブリッジ」に入っています(Mac 68K は除く)。ブリッジとは、ODBC 標準の C API を実装するライブラリです。
- 内部クラス
アダプタクラスの作成用に、より簡潔な構文を提供します。
アダプタクラスとは、API に必要なインタフェース (またはクラス) を実装するクラスで、囲っている「メイン」オブジェクトに戻る制御フローを代行します。新しい言語機能は、多くの言語にあるようなブロック構造や辞書スコープを Java にも適用します。
- Java ネイティブインタフェース
Java ネイティブメソッド作成したり、Java 仮想マシンをネイティブアプリケーションに埋め込んだりするための標準プログラミングインタフェースです。
主な目的は、所定のプラットフォーム上のすべての Java 仮想マシンの実装間で、ネイティブメソッドライブラリのバイナリ互換性を与えることです。
- 性能の向上
- Win32 および Solaris/Sparc 上でのアセンブリコードによるインタプリタループ
- Mac 上での隣接しないヒープのサポート
- モニターの高速化
- クラスのガベージコレクション
- Win 32 用の AWT ピアクラスの再実装
- 単一 HTTP トランザクション用にリソースを JAR (Java Archive) にバンドル
- その他
- Byte、Short およ びVoid クラス - byte および short は、新規クラス
Byte および Short を追加することにより、ラップした数値として扱われます。abstract クラス Number に、byteValue と shortValue という 2 つの新しい具体的メソッドが加わりました。デフォルトの実装では、この 2 つは intValue メソッドを使います。また、新規クラス Void も組み込まれます。これは、インスタンスを生成できないプレースホルダクラスです。
@deprecatedタグ - 新規 API に置換されたクラス、メソッド、およびフィールドに明確にマークを付けるため、ドキュメンテーションコメントで使います。コンパイラは、推奨されない API 機能を使うソースコードを処理するときは警告を出します。
- リソースファイルへのアクセス - リソースの位置から独立しているリソースファイルの位置を確認するメカニズムを提供する API です。例えば、このメカニズムでは、リソースファイルが複数の HTTP 接続を使ってネットからロードしたアプレットか、JAR ファイルを使ってロードしたアプレットか、あるいは CLASSPATH にインストールされた「ライブラリ」かを確認できます。
- APPLET タグ (HTML) への追加 - HTML で使う <APPLET>タグの拡張
Copyright (C) 1996 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA. All rights reserved.