環境変数は、ご存知、その環境に設定された変数を表したものだ。環境というと難しいが、要はプログラムが動いている場所だ。あなたのPCやどこかのサーバがそれに当たる。
例えば、Javaプログラムを動かすときの初期設定で利用したり、会社PCのパスワードを誰にも見られない位置に置いておいてシステムからだけアクセスしたりするときに使う。
Javaでも使われる環境変数とは?
環境変数とは、ソフトウエアが動く環境にあたるシステムがソフトウエアに提供する変数だ。ソフトウエアは、その環境変数を読み込んで振る舞いを決定する。
例えば、あるソフトウエアは画面に表示する言語を決定するために、言語に関する情報を提供する環境変数を読み込む。システムは環境変数をシステム単位やユーザ単位で設定できるので、ユーザは使用するソフトウエア毎に言語を設定する必要はない。
環境変数を取得する書き方の基本は簡単だ。
環境変数 = System.getenv(環境変数名);
このクラス・メソッドのAPI仕様の詳細を見てみよう。
API仕様
getenv(String name)
戻り値の型 |
public static String |
内容 |
特定の環境変数の値を取得する。環境変数はシステムに依存する外部で名前が付けられた値である。 もしセキュリティ・マネージャが存在すれば、checkPermissionメソッドがRuntimePermission("getenv."+name)許可と共に呼び出される。これは結果として、SecurityException例外が発生するかもしれない。もし、例外が発生しなければ、変数名の値が戻される。 UNIXシステムでは、名前のアルファベットの大文字小文字の区別は、通常重要である。一方、マイクロソフトWindowsではそうではない。例えば、System.getenv("FOO").equals(System.getenv("foo"))は、マイクロソフトWindowsでtrueである。 引数: name – 環境変数の名前 戻り値: 変数の文字列の値、もし変数がシステム環境の中で定義されていなければnull。 例外: NullPointerException – もしnameがnullならば。 SecurityException – セキュリティマネージャが存在してcheckPermissionメソッドが環境変数名にアクセスすることを許さないならば。 さらなる詳細は、Java言語仕様をご覧ください。 |
getenv()
戻り値の型 |
public static Map <String,String> |
内容 |
現行のシステム環境の変更できない文字列マップビューを返す。その環境は親から子プロセスに渡される名前から値へのシステムに依存するマッピング(紐付け)である。 もし、システムが環境変数をサポートしていなければ、空のマップを戻す。戻されるマップは決してnullのキーや値を含まない。 nullのキーや値で検索しようとすると、NullPointerException例外が投げられる。また、文字列型でないキーや値の存在を確認しようとすると、ClassCastException例外が投げられる。マップは、すべてのプラットフォームで一般的に大文字と小文字を区別する。 もし、セキュリティマネージャが存在したならば、そのcheckPermissionメソッドがRuntimePermission("getenv.*")許可と共に呼び出される。情報をJavaのサブプロセスに渡す時、一般的に環境変数よりシステムプロパティの方が好まれる。 戻り値: 変数名から値へのマップとしての環境。 例外: SecurityException – もし、セキュリティマネージャが存在して、そのcheckPermission – メソッドがプロセス環境へのアクセスが許さないならば。 |
Javaで環境変数を読み込むサンプルプログラム
このサンプルプログラムは、ふたつのgetenvクラス・メソッドを使って環境変数を取得し表示する。
ひとつは、引数に「JAVA_HOME」を設定する方法である。もうひとつは、引数を設定しないで環境変数を全て取得し、その中からMapのgetメソッドを使って取得する方法である。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
limport java.util.Map; public class EnvironmentVariable { public static void main(String[] args) { String environmentVariable = System.getenv("JAVA_HOME");//[1] System.out.println("[2] environmentVariable= " + environmentVariable); Map<String, String> environmentVariables = System.getenv();//[3] for(Map.Entry<String, String> entry : environmentVariables.entrySet()) {//[4] System.out.println("[5]" + entry.getKey() + " = " + entry.getValue()); } System.out.println("[6] JAVA_HOME = " + environmentVariables.get("JAVA_HOME")); } } |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[2] environmentVariable= C:\Program Files\Java\jdk1.8.0_101 …… [5]GRAILS_HOME = C:\Grails [5]JAVA_HOME = C:\Program Files\Java\jdk1.8.0_101 [5]SystemDrive = C: …… [6] JAVA_HOME = C:\Program Files\Java\jdk1.8.0_101 |
サンプルプログラムの説明
簡単にプログラムの解説をしてゆこう。
- [1] 環境変数名JAVA_HOMEの値を取得し、変数environmentVariableに代入する。
- [2] 取得した変数environmentVariableの値を表示する。
- [3] 環境変数の値をすべて取得して、オブジェクトenvironmentVariablesに代入する。
- [4][5] すべての環境変数を表示する。
- [6] 環境変数名JAVA_HOMEの値を、オブジェクトenvironmentVariablesから取得する。
まとめ
このページではjavaにおいて環境変数の取得から表示方法について簡単にご紹介した。
今回、紹介したjavaのサンプルプログラムも活用していただきたい。
javaにおいての環境変数について参考にしていただければと思う。