JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 環境変数とは

環境変数

日本語 環境変数
英語 environment variable
ふりがな かんきょうへんすう
フリガナ カンキョウヘンスウ

解説

OSが持つ変数
プログラム内部ではなく、OS単位で持つ変数。各種アプリケーションが共通して使用する値を格納する。ある意味究極のグローバル変数
 
昔のOS、特にUNIX系のOSは、通常のプログラムアプリケーション、コマンドが、いわゆる「関数」のように機能していたため、共通にアクセスできる変数が必要だった。それが環境変数である。
現在は、環境変数は「文字列定数」を格納するためのものとして使用されることが多い。
設定方法はOSによって異なり、また、OSによっては環境変数を持たないものもある。
 
Javaでは、コンパイルや実のために「JAVA_HOME」と「PATH」の環境変数を設定する必要がある。
また、Java用ツールの多くも環境変数を設定する必要がある。
そのため、Javaを使用する上で環境変数は不可欠となっており、Javaを使用する上でのハードルのひとつとなっている。
 
Javaプログラム中で環境変数を取得する場合、Systemクラスのgetenv()メソッドを使用する。
ただし、このメソッドJ2SE1.4では使用できない。それ以前のバージョンや、J2SE5.0では使用可能であるが、現在のメジャーバージョンでは使用できないことになる。
これは、環境変数そのものが推奨されていないためである。JavaはあらゆるOSで実できることを目標としているため、環境変数を持たないOS等を考慮して、環境変数の使用を避ける狙いがあるためである。
 
実際、環境変数の使用はOSの環境に依存するため、あまり勧められない。
また、環境変数で得られる情報の多くは、SystemクラスのgetProperty()メソッドで取得できるため、環境変数を直接取得する必要がない場合も多い。
どうしても環境変数を必要とする場合、OS固有の「環境変数を取得するコマンド」を実し、その結果を元に取得する必要ことになる。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;

public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // Systemクラスのgetenv()メソッドは、J2SE1.4では使用できません。
            String JAVA_HOME = System.getenv( "JAVA_HOME" );
            // 警告:
            // メソッド getenv(String) は型 System で使用すべきではありません。
        }
        catch( Error e )
        {
            e.printStackTrace();
            // java.lang.Error: getenv no longer supported, use properties and -D instead: JAVA_HOME
            //     at java.lang.System.getenv(System.java:689)
            //     at Sample.main(Sample.java:11)
        }

        try
        {
            // 環境変数の取得は、J2SEでは、OSのコンソールで使用する
            // コマンドを叩いて取得することになります。無理矢理ですが。
            // 以下、Windowsの場合。
            // command.com /c SET
            // で、環境変数一覧を取得します。
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec( "cmd /c set" );
            // コマンドの結果を取得するためのストリームを取得します。
            InputStream inputStream = process.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader( inputStream );
            while( true )
            {
                // read()メソッドでファイルから1バイト取得します。
                int i = inputStreamReader.read();
                if( i == -1 )
                {
                    // -1が来たら終了です。
                    break;
                }

                // 出力します。
                System.out.print( (char)i );
            }
/*
JAVA_HOME=D:\Java\j2sdk1.4.2_09
OS=Windows_NT
PROCESSOR_ARCHITECTURE=x86
以下略
*/
            // こうして取得した文字列を分解して取得するしかないでしょう。
        }
        catch( IOException e )
        {
            e.printStackTrace();
        }
    }
}

/*
Windowsの場合、環境変数は以下のように設定します。

 コントロールパネルの「システム」をダブルクリックして、
「システムのプロパティ」ダイアログを表示してください。
 この「詳細」ページの「環境変数」ボタンを押してください。
「環境変数」ダイアログが表示されます。このダイアログで、
環境変数を設定します。

 「システム環境変数」の「新規」ボタンを押してください。
「新しいシステム変数」ダイアログが表示されます。
 「変数名」は環境変数の名前を指定します。
 「変数値」は、その環境変数に入れる値を指定します。
 たとえば、JAVA_HOMEの設定は以下のようにします。

変数名:
JAVA_HOME
変数値:
(1.でインストールした、J2SEのフォルダ。たとえば
C:\Java\j2sdk1.4.2_09
のように)

 入力したら「OK」ボタンを押して閉じて、さらに
「環境変数」ダイアログと「システムのプロパティ」ダイアログも「OK」
ボタンを押してください。
 以上で、環境変数の設定が完了しました。
 コンソール(DOS窓)で

cmd /c set

 と入力すれば、環境変数一覧が表示されるので、その中に追加した
環境変数が表示されるはずです。
 また、

echo %環境変数名%

 と入力すれば、指定した環境変数の値を出力することができます。
*/
// Sample.java
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;

public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // Systemクラスのgetenv()メソッドは、J2SE1.4では使用できません。
            String JAVA_HOME = System.getenv( "JAVA_HOME" );
            // 警告:
            // メソッド getenv(String) は型 System で使用すべきではありません。
        }
        catch( Error e )
        {
            e.printStackTrace();
            // java.lang.Error: getenv no longer supported, use properties and -D instead: JAVA_HOME
            //     at java.lang.System.getenv(System.java:689)
            //     at Sample.main(Sample.java:11)
        }

        try
        {
            // 環境変数の取得は、J2SEでは、OSのコンソールで使用する
            // コマンドを叩いて取得することになります。無理矢理ですが。
            // 以下、Windowsの場合。
            // command.com /c SET
            // で、環境変数一覧を取得します。
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec( "cmd /c set" );
            // コマンドの結果を取得するためのストリームを取得します。
            InputStream inputStream = process.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader( inputStream );
            while( true )
            {
                // read()メソッドでファイルから1バイト取得します。
                int i = inputStreamReader.read();
                if( i == -1 )
                {
                    // -1が来たら終了です。
                    break;
                }

                // 出力します。
                System.out.print( (char)i );
            }
/*
JAVA_HOME=D:\Java\j2sdk1.4.2_09
OS=Windows_NT
PROCESSOR_ARCHITECTURE=x86
以下略
*/
            // こうして取得した文字列を分解して取得するしかないでしょう。
        }
        catch( IOException e )
        {
            e.printStackTrace();
        }
    }
}

/*
Windowsの場合、環境変数は以下のように設定します。

 コントロールパネルの「システム」をダブルクリックして、
「システムのプロパティ」ダイアログを表示してください。
 この「詳細」ページの「環境変数」ボタンを押してください。
「環境変数」ダイアログが表示されます。このダイアログで、
環境変数を設定します。

 「システム環境変数」の「新規」ボタンを押してください。
「新しいシステム変数」ダイアログが表示されます。
 「変数名」は環境変数の名前を指定します。
 「変数値」は、その環境変数に入れる値を指定します。
 たとえば、JAVA_HOMEの設定は以下のようにします。

変数名:
JAVA_HOME
変数値:
(1.でインストールした、J2SEのフォルダ。たとえば
C:\Java\j2sdk1.4.2_09
のように)

 入力したら「OK」ボタンを押して閉じて、さらに
「環境変数」ダイアログと「システムのプロパティ」ダイアログも「OK」
ボタンを押してください。
 以上で、環境変数の設定が完了しました。
 コンソール(DOS窓)で

cmd /c set

 と入力すれば、環境変数一覧が表示されるので、その中に追加した
環境変数が表示されるはずです。
 また、

echo %環境変数名%

 と入力すれば、指定した環境変数の値を出力することができます。
*/

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/10/21
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。