JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > システムプロパティ編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/11/28  田中宏和
システムプロパティ編
◆システムプロパティとは?
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