Jaka jest różnica między właściwościami systemowymi System.getProperties () a zmiennymi środowiskowymi System.getenv () w JVM?
Jaka jest różnica między właściwościami systemowymi System.getProperties () a zmiennymi środowiskowymi System.getenv () w JVM?
Odpowiedzi:
Myślę, że różnica między tymi dwoma sprowadza się do dostępu. Systemowe zmienne środowiskowe są dostępne dla dowolnego procesu, a właściwości systemowe Java są dostępne tylko dla procesu, do którego zostały dodane.
Również, jak stwierdził Bohemian, zmienne env są ustawiane w systemie operacyjnym (jednak można je ustawić za pomocą Java), a właściwości systemowe są przekazywane jako opcje wiersza poleceń lub przez setProperty()
.
Właściwości systemowe są ustawiane w wierszu komend Java za pomocą-Dpropertyname=value
składni. Można je również dodać w czasie wykonywania przy użyciuSystem.setProperty(String key, String value)
lub za pomocą różnych
System.getProperties().load()
metod.
Aby uzyskać określoną właściwość systemu , możesz użyćSystem.getProperty(String key)
lubSystem.getProperty(String key, String def)
.
Zmienne środowiskowe są ustawiane w systemie operacyjnym, np. W systemie Linuxexport HOME=/Users/myusername
lub WindowsSET WINDIR=C:\Windows
itp. I, w przeciwieństwie do właściwości, mogą nie być ustawiane w czasie wykonywania.
Aby uzyskać określoną zmienną środowiskową , możesz użyćSystem.getenv(String name)
.
System.grtProperties()
wyświetla wszystkie właściwości, a te ustawione z wiersza poleceń będą tam dostępne, ale nie ma sposobu, aby odróżnić je od innych właściwości dodanych przez system, jeśli o to pytasz.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
nie odczytuje dynamicznie wartości z systemu w czasie połączenia.