|
| |
 |
システムプロパティ編 |
 |
◆システムプロパティとは? |
| JavaのSystemクラスが持っているプロパティ(キー/値)のセットのことです。Javaのアプリケーションが実行されると、システムプロパティは実行時の環境などの情報を得て初期化されます。それらの情報には、実行しているユーザー情報、Java実行環境のバージョン、パスの区切り文字などが含まれています。 |
| ◆ここでの環境 |
| OS |
Windows XP |
| J2SE SDK |
1.4.1_01 |
|
|
|
| ◆実行環境の構築 |
| 実行環境の構築についてはアプリケーション編を参考にしてください。 |
| ◆システムプロパティの一覧の表示 |
| ここではシステムプロパティの一覧を表示してみたいと思います。 |
| ■ソースコード |
| HelloWorldGetSystemProperties.java(ここからダウンロード) |
import java.util.Properties;
public class HelloWorldGetSystemProperties {
public static void main(String[] args) {
// 現在のシステムプロパティのリスト取得します
Properties props = System.getProperties();
// システムプロパティをすべて表示します
props.list(System.out);
}
} |
|
|
| ■コンパイルと実行 |
| コマンドプロンプト |
| C:\JavaHello\SystemProperties>javac
HelloWorldGetSystemProperties.java
C:\JavaHello\SystemProperties>java
HelloWorldGetSystemProperties
-- listing properties --
java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
sun.boot.library.path=C:\Program Files\Java\j2re1.4.1_01\bin
java.vm.version=1.4.1_01-b01
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=JP
sun.os.patch.level=Service Pack 1
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:\JavaHello\SystemProperties
java.runtime.version=1.4.1_01-b01
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\j2re1.4.1_01\li...
os.arch=x86
java.io.tmpdir=C:\DOCUME~1\tanaka\LOCALS~1\Temp\
line.separator=
java.vm.specification.vendor=Sun
Microsystems Inc.
user.variant=
os.name=Windows XP
sun.java2d.fontpath=
java.library.path=C:\WINDOWS\system32;.;C:\WINDOWS\Syst...
java.specification.name=Java Platform API Specification
java.class.version=48.0
java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
os.version=5.1
user.home=C:\Documents and Settings\tanaka
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=MS932
java.specification.version=1.4
user.name=tanaka
java.class.path=.;C:\j2sdk1.4.1_01\lib\tools.jar;C:\P...
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:\Program Files\Java\j2re1.4.1_01
java.specification.vendor=Sun Microsystems Inc.
user.language=ja
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.4.1_01
java.ext.dirs=C:\Program Files\Java\j2re1.4.1_01\li...
sun.boot.class.path=C:\Program Files\Java\j2re1.4.1_01\li...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=pentium i486 i386
C:\JavaHello\SystemProperties> |
|
| おおお!システムプロパティの一覧が表示されましたね! |
| |
| ◆主なシステムプロパティの説明 |
| 以下が主なシステムプロパティのキーとその説明です。 |
| システムプロパティのキー |
説明 |
| "file.separator" |
ファイルの区切り文字(Unix系の場合は
/ ) |
| "java.class.path" |
JavaのCLASSPATH |
| "java.class.version" |
Javaクラスのバージョン |
| "java.home" |
Javaがインストールされているディレクトリ |
| "java.vendor" |
Javaベンダー名 |
| "java.vendor.url" |
JavaベンダーのURL |
| "java.version" |
Javaのバージョンナンバー |
| "line.separator" |
行区切り文字 |
| "os.arch" |
オペレーティングシステム アーキテクシャー |
| "os.name" |
オペレーティングシステムの名前 |
| "os.version" |
オペレーティングシステムのバージョン |
| "path.separator" |
パスの区切り文字 (例) : |
| "user.dir" |
ユーザーの現在の作業ディレクトリ |
| "user.home" |
ユーザーのホームディレクトリ |
| "user.name" |
ユーザー名 |
|
| |
| ◆システムプロパティの値の取得 |
| ここではJavaのベンダーの名前とベンダーのURLを取得して表示してみたいと思います。 |
| ■ソースコード |
| HelloWorldGetSystemProperty.java(ここからダウンロード) |
import java.util.*;
public class HelloWorldGetSystemProperty {
public static void main(String[] args) {
// ベンダー名の取得
String venderName = System.getProperty("java.vendor");
// ベンダーのURLの取得
String venderURL = System.getProperty("java.vendor.url");
// 表示
System.out.println("ベンダー名:" + venderName);
System.out.println("ベンダーのURL:" + venderURL);
}
} |
|
|
| ■メモ |
getProperty("key")メソッドは、指定されたキーの値が存在しない場合、nullを返却します。
getProperty("key" , "Hello World")のように2番名の引数を使用することによって、キーの値が存在しない場合に2番目の引数の値(デフォルト値)を返却するようにできます。 |
| ◆コンパイルと実行 |
| コマンドプロンプト |
| C:\JavaHello\SystemProperties>javac
HelloWorldGetSystemProperty.java
C:\JavaHello\SystemProperties>java
HelloWorldGetSystemProperty
ベンダー名:Sun Microsystems Inc.
ベンダーのURL:http://java.sun.com/
C:\JavaHello\SystemProperties> |
|
| おおおお!表示されましたね! |
| |
| ◆システムプロパティをファイルからの読み込みで設定 |
| ここでは、プロパティの一覧を記述したプロパティファイルから読み込んで、システムプロパティを設定します。それからシステムプロパティの一覧を表示したいと思います。 |
| ■プロパティファイルの作成 |
| エディタでプロパティファイルを作成します。 |
| HelloWorldSystemProperty.properties(ここからダウンロード) |
javahello.message=Hello World javahello.url=http://www.hellohiro.com/ |
|
| ■ソースコード |
| HelloWorldSetSystemProperties.java(ここからダウンロード) |
import java.util.*;
import java.io.*;
public class HelloWorldSetProperty {
public static void main(String[] args) {
try {
// FileInputStreamオブジェクトを生成
FileInputStream propFile =
new FileInputStream("HelloWorldSystemProperty.properties");
// 現在のシステムプロパティのリストを取得します
Properties props = new Properties(System.getProperties());
// 入力ストリームからプロパティのリストを読み込みます
props.load(propFile);
// システムプロパティの全リストを設定します
System.setProperties(props);
// システムプロパティの全リストを表示します
System.getProperties().list(System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
} |
|
|
| ■コンパイルと実行 |
| コマンドプロンプト |
| C:\JavaHello\SystemProperties>javac
HelloWorldSetSystemProperties.java
C:\JavaHello\SystemProperties>java
HelloWorldSetSystemProperties
-- listing properties --
java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
sun.boot.library.path=C:\Program Files\Java\j2re1.4.1_01\bin
java.vm.version=1.4.1_01-b01
javahello.url=http://www.hellohiro.com/
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=JP
sun.os.patch.level=Service Pack 1
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:\JavaHello\SystemProperties
java.runtime.version=1.4.1_01-b01
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\j2re1.4.1_01\li...
os.arch=x86
java.io.tmpdir=C:\DOCUME~1\tanaka\LOCALS~1\Temp\
line.separator=
java.vm.specification.vendor=Sun
Microsystems Inc.
user.variant=
os.name=Windows XP
sun.java2d.fontpath=
java.library.path=C:\WINDOWS\system32;.;C:\WINDOWS\Syst...
java.specification.name=Java Platform API Specification
java.class.version=48.0
java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
os.version=5.1
user.home=C:\Documents and Settings\tanaka
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=MS932
java.specification.version=1.4
user.name=tanaka
java.class.path=.;C:\j2sdk1.4.1_01\lib\tools.jar;C:\P...
javahello.message=Hello World
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:\Program Files\Java\j2re1.4.1_01
java.specification.vendor=Sun Microsystems Inc.
user.language=ja
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.4.1_01
java.ext.dirs=C:\Program Files\Java\j2re1.4.1_01\li...
sun.boot.class.path=C:\Program Files\Java\j2re1.4.1_01\li...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=pentium i486 i386
C:\JavaHello\SystemProperties> |
|
| おおおお!プロパティファイルから読み込んでシステムプロパティに設定することができましたね! |
| |
| ■注意 |
システムプロパティのすでにあるキーの値を設定する場合には注意が必要です。例えば、プロパティファイルに以下の行を記述するとOSの名前が上書きされてしまいます。(現在のアプリケーション内でのみ)
os.name=Hello OS |
| ■メモ |
| setPropertiesメソッドは現在実行しているアプリケーションのシステムプロパティを設定するもので、そのアプリケーション内でのみ有効です。別のアプリケーションを実行してもそのシステムプロパティは再度初期化されるので影響を受けません。 |
| ◆プログラム実行時にシステムプロパティを設定 |
プログラム実行時にシステムプロパティの値を設定するには以下のようにします。 java
-D<name>=<value> クラス名 |
| (例) |
| コマンドプロンプト |
| C:\JavaHello\RMI>java
-Djava.security.policy=java.policy
HelloWorldClient
Hello World
C:\JavaHello\RMI> |
|
| ◆システムプロパティの利用例 |
| 例えば、ディレクトリのパス、とファイル名がわかっている場合にファイルのフルパスを取得するには以下のように行います。 |
String filePath = dirPath + System.getProperty("file.separator") + fileName; |
|
| こうしておけば、OSが何であってもプログラムが動くようにできます。 |
| |
■関連
プロパティファイル編 |
■書籍
Java関連の書籍 |
|
| |
|
|
| ツールの部屋
- Java関連の書籍 - デザインパターン - 情報交換掲示板
- HOME |