タイトルJava Watch on the X》1 - Mac OS Xでのシステムプロパティ(1)カテゴリーJava, Java Watch on the X
作成日2001/11/2 15:42:44作成者新居雅行
【MDOnline読者様限定コンテンツ】
Javaのシステムでは、システムプロパティを通じて、実行環境に関する情報や、OSの情報などのさまざまなシステム情報を取得することができる。ライブラリの動作にはシステムプロパティによって影響される場合も出てくるということもあり、時にはアプリケーション側で独自にシステムプロパティを設定したいと思うこともある。自分で設定する方法にはさまざまなやり方があるが、これについては、Mac OS Xでのアプリケーション化などのところで詳しく説明することとし、今回については、最初から用意されているシステムプロパティがどんな値になっているかということを中心に説明しよう。

――――システムプロパティの処理機能
システムプロパティの取得のために、java.lang.Systemクラスにスタティックメソッドが用意されている。以下のいずれかを使うことになるだろう。

☆指定したシステムプロパティを取得する(Static)
 String System.getProperty(String key);
 戻り値:システムプロパティの値を示す文字列(存在しない場合はnull)
 引数:key:システムプロパティの名称

☆指定したシステムプロパティを取得する(Static)
 String System.getProperty(String key, Stgring def);
 戻り値:システムプロパティの値を示す文字列(存在しない場合は引数defの値)
 引数:key:システムプロパティの名称
    def:keyに指定したシステムプロパティが存在しないときのプロパティ値

☆システムプロパティをまとめて取得する(Static)
 Properties System.getProperty();
 戻り値:システムプロパティを含むProperties型のオブジェクト

☆指定したシステムプロパティに値を設定する(Static)
 String System.setProperty(String key, String Value);
 戻り値:nullを戻す(使う必要はないと思われる)
 引数:key:システムプロパティの名称
    value:システムプロパティとして設定する値

☆システムプロパティをまとめて設定する(Static)
 void System.setProperties(Properties props);
 引数:props:設定するプロパティのリスト

いずれにしても、システムプロパティは、java.util.Propertiesクラスのオブジェクトで管理されるデータである。そのデータは、キーと値で組になったレコードを、複数管理している。キーを指定して、値を取り出すというのが基本であり、そのためのメソッドがgetPropertyということである。Propertiesクラスは汎用的なものであるが、そのクラスを利用したオブジェクトを使って、システムプロパティが管理されている。そのシステムプロパティのオブジェクトは、アプリケーションなどの起動で自動的に用意されるが、そのプロパティオブジェクトにアクセスするためのスタティックメソッドがjava.lang.Systemクラスで定義されているということだ。
通常は、システムプロパティの取得を行うことが多いだろう。従って、System.getPropertyを使うことでほとんど用途はことが足りると思われる。たとえば、実行しているユーザ名は、user.nameというキーで取り出せることがすでに決まっている。したがって、「System.getProperty("user.name")によってユーザ名が文字列で取り出せるということになる。指定したキーのプロパティが存在しない場合に、一定のプロパティを戻すのであればgetPropertyで2つ目の引数を与えれば良い。もし、プロパティが存在しない場合に別の処理を行うという場合には、getPropertyの戻り値がnullかどうかを判断して処理を記述すれば良いだろう。

――――Mac OS Xのシステムプロパティを取り出すサンプルプログラム
ここで、Mac OS X上ですでに定義されている、つまりキーが存在するプロパティについて、System.getPropertiesメソッドを使って取り出してみた。その内容を一覧しておく。Mac OS XのVer.10.0.4と10.1の両方の結果を掲載しておいた。以下のリストでは、値の部分がアクア色のものがよく使うもの、あるいは注目するものと思われるプロパティである。

◇Mac OS Xのシステムプロパティ
 http://mdonline.jp/figs/01/0031/osxjavaprops.htm

この値を取り出すためのサンプルプログラムとソースファイルは、以下のアドレスから参照、あるいはダウンロードできるようにしておいた。
関連リンク