JVMのシステムプロパティ System.getProperties() と環境変数 System.getenv() の違いは何ですか?
私は2つの違いがアクセスに沸騰すると思います。システム環境変数はどのプロセスからもアクセスでき、Javaシステムプロパティはそれらが追加されたプロセスからのみアクセスできます。
またボヘミアンが述べたように、env変数はOSで設定され(ただしJavaを通して設定することができます)、システムプロパティはコマンドラインオプションとして渡されるか setProperty()
で設定されます。
システムプロパティは、-Dpropertyname=value
構文を使用してJavaコマンドラインで設定されます。実行時に System.setProperty(String key, String value)
を使って、あるいはさまざまな System.getProperties().load()
メソッドを使って追加することもできます。
特定のシステムプロパティを取得するには、 System.getProperty(String key)
または System.getProperty(String key, String def)
を使用できます。
環境変数がOSに設定されています。 Linuxの場合はexport HOME=/Users/myusername
またはWindowsの場合はSET WINDIR=C:\Windows
などで、プロパティとは異なり、実行時にを設定することはできません。
特定の環境変数を取得するには、 System.getenv(String name)
を使用できます。