Guava tips: StandardSystemProperty
Tagged:
The JVM will always have a value for some predefined system properties, such as java.version which represents the running JDK version, and so on. The complete list is available in the JavaDoc for System::getProperties.
Guava defines an enum called StandardSystemProperty which contains an entry for each of these predefined values. All these entries have a method value which delegates to the System class.
For instance you can do:
assertEquals("andry", StandardSystemProperty.USER_NAME.value());
The most widely useful values include, in my opinion:
FILE_SEPARATORwhich represents the separator in paths:\on Windows and/on Unixes;LINE_SEPARATOR, which represents the end-of-line in text files:\r\non Windows and\non Unixes;OS_ARCH,OS_NAMEandOS_VERSIONwhich give information about the running OS;JAVA_VERSION, which represents the JRE version;USER_HOMEwhich represents the home directory of the current user;USER_DIRwhich represents the user’s working directory.
For example:
Arrays.asList(
FILE_SEPARATOR, LINE_SEPARATOR,
OS_ARCH, OS_NAME, OS_VERSION,
JAVA_VERSION, USER_HOME, USER_DIR)
.stream()
.map(e -> String.format("%s: %s", e.name(), e.value()))
.forEach(System.out::println);
will print something like:
FILE_SEPARATOR: /
LINE_SEPARATOR:
OS_ARCH: amd64
OS_NAME: Linux
OS_VERSION: 3.19.0-28-generic
JAVA_VERSION: 1.8.0_45-internal
USER_HOME: /home/andry
USER_DIR: /home/andry/code/blog