Environment Variables in Mercury

Our program demonstrates how to set, get, and list environment variables in Java. Environment variables are a universal mechanism for conveying configuration information to programs.

import java.util.Map;

public class EnvironmentVariables {
    public static void main(String[] args) {
        // To set a key/value pair, use System.setProperty
        // To get a value for a key, use System.getenv
        // System.getenv will return null if the key isn't present in the environment
        System.setProperty("FOO", "1");
        System.out.println("FOO: " + System.getenv("FOO"));
        System.out.println("BAR: " + System.getenv("BAR"));

        // Use System.getenv() to get all environment variables
        // This returns a Map<String, String> of all key/value pairs
        System.out.println();
        Map<String, String> env = System.getenv();
        for (String key : env.keySet()) {
            System.out.println(key);
        }
    }
}

Running the program shows that we pick up the value for FOO that we set in the program, but that BAR is null.

$ java EnvironmentVariables
FOO: null
BAR: null

The list of keys in the environment will depend on your particular machine.

PATH
JAVA_HOME
USER
...

If we set BAR in the environment first, the running program picks that value up.

$ export BAR=2
$ java EnvironmentVariables
FOO: null
BAR: 2
...

Note that in Java, System.setProperty() sets a system property, not an environment variable. Environment variables are typically set outside of the Java program and are read-only within the program. The System.getenv() method is used to read these environment variables.

Also, unlike in some other languages, changes to the environment variables during the execution of a Java program are not guaranteed to be seen by the program. It’s generally recommended to set environment variables before starting the Java application.

Markdown formatted for Hugo, this example demonstrates how to work with environment variables in Java, providing a similar functionality to the original Go example.