JDK1.1 と国際化機能


JDK1.1から クラスライブラリが完全に国際化対応となりました。 また、国際化に伴う新しいパッケージも追加されています。 それらについてまとめておきましょう。
まず java.lang.String, StringBuffer や char のデータは、 当初から2バイト文字(UNIコード)に対応していました。 したがって JDK1.1 になっても特に変更はありません。 java.awtのコンポーネントがボタンのラベルの文字列を利用する場合も同様です。 利用する StrigにUNIコードの文字列が入っていれば、日本語の表示が可能になります。 ただし日本語の場合、 従来の日本語コード(EUC, SJIS, JIS)と UNIコードとの変換の問題が発生します。 JDK1.1のコンパイラは、ソースに従来の日本語コードで埋め込まれた 文字列も UNIコードに自動的に変換して処理してくれます。 コンパイル後のバイトコードは、 ソースプログラムの作成に使用された日本語コードには依存しません。 したがって通常のアプリケーション開発では、 プログラマーがどの日本語コードを使用しているか意識する必要はありません。
国際化対応によって大きな変更と追加があったパッケージの1つが java.io です。 これについては、 第7回の講義のページ でも解説したとおりです。 2バイトの文字を取り扱うために Reader および Writer の系列のクラスが 追加されました。

その他の国際化対応に関連するクラスは java.util と java.text にまとめ られています。 java.util に追加されているのは、Locale, TimeZone(そのサブクラス SimpleTimeZone), Calendar(そのサブクラス GregorianCalendar),ResourceBundle(そのサブクラス ListResourceBundle,PropertyResourceBundle)です。 Locale は国・地域(使用言語)の識別するためのもので、 国際化対応の最も基本となるクラスです。 ResourceBundleは、アプリケーションが複数のLocaleに対応して、 複数のデータを準備する時に用いられます。 このため ResourceBundle及びそのサブクラスは、Javaのシステム内での取り扱いが 他のクラスと多少異なる部分があるので注意が必要です。
java.text は JDK1.1から新たに追加されたパッケージです。 文字や文字列の評価を行う Collator, 日付の表示を提供する DateFormatクラスのように、 Localeの違いを識別して必要な処理を提供するクラスが含まれいます。 また DecimalFormat, MessageFormatなどは、Localeによって異なる 数値表示や慣用的なメッセージ表示などのリソースを作成するために利用されます。