- Listing the currently defined environment variables and system properties in Java
- How to refer to all variables/properties in memory: map data structure
- Listing environment variables vs properties
- Java Reading Environment Variable — System.getEnv() Examples
- 1. Introduction
- 2. Java Program to read PATH, JAVA_HOME and TEMP Environment Variables
- 3. Reading all Env Variables in Java
- 5. Using Java 8 forEach
- 5. Conclusion
- Labels:
- SHARE:
- About Us
- Java 8 Tutorial
- Java Threads Tutorial
- Kotlin Conversions
- Kotlin Programs
- Java Conversions
- Java String API
- Spring Boot
- $show=Java%20Programs
- $show=Kotlin
- Environment Variables
- Querying Environment Variables
- Passing Environment Variables to New Processes
- Platform Dependency Issues
Listing the currently defined environment variables and system properties in Java
On the previous page, we introduced the concept of environment variables and system properties. Conceptually, the two are very similar: the essential difference is that environment variables are defined and managed by the operating system, whereas system properties effectively «belong» to Java and in some cases are «translations» of environment variables in order to bring more consistency across platforms.
We also listed some commonly defined environment variables and system properties on the previous page. However, it is sometimes useful to interrogate the full list of variables/properties defined on a given system from within Java. We will look at how to accomplish that task here.
How to refer to all variables/properties in memory: map data structure
First of all, we need a data structure in which to store all variables and properties. An environment variable or system property is essentially a mapping or association of one String (the variable/property name) to another String. So, we will assume that the type of object used is some form of Map of String to String, such as a HashMap. If you’re not familiar with the concept of a map or hash map, then I recommend that you take a brief detour to the Java collections section of this web site, and in particular to the section on Java maps and the HashMap class.
So, given some object implementing Map, we can write a method to dump out the «list» (list of mappings) of variables or properties as follows. As a bonus, we’ll order the variables/properties.
private static void dumpVars(Map m) < Listkeys = new ArrayList(m.keySet()); Collections.sort(keys); for (String k : keys) < System.out.println(k + " : " + m.get(k)); >>
We actually allow specify the map as being a mapping of Strings to any object type, as this is sufficient for our purposes: the toString() method, which is what will actually get called on each value when printing it out, is defined on Object and is not specific to String. On the other hand, we requrie the keys to be comparable for sorting, and since in reality we are expecting Strings, it makes sense to specify String as the key class.
Listing environment variables vs properties
Now, conceptually we’ve said that environment variables and system properties are essentially variations on a theme, and assumed in our dumpVars() method that in either case, we have a map of strings to variables. It turns out that:
- environment variables are enumerated using the method System.getenv(), and that method does indeed return a Map of Strings to Strings;
- system properties are enumerated with the method System.getProperties which, for historical reasons, returns a Properties object.
For dumping environment variables, we can therefore pass the output of System.getenv() directly into our method:
System.out.println(«===== ENV VARIABLES ==== codefragment»>
System.out.println(«===== PROPERTIES ==== -1″>Technically, this creates a «raw» (i.e. not generically typed) HashMap object. The compiler will then—albeit with a warning— allow us to pass this raw HashMap into our dump method, even though strictly speaking that method is defined as taking a typed HashMap, and will «trust» that the objects inside the map can be cast to the correct type at runtime. This behaviour is really supported for backwards compatibility but it avoids us some long-winded code.
If you enjoy this Java programming article, please share with friends and colleagues. Follow the author on Twitter for the latest news and rants. Follow @BitterCoffey
Editorial page content written by Neil Coffey. Copyright © Javamex UK 2021. All rights reserved.
Java Reading Environment Variable — System.getEnv() Examples
A quick programmatic guide to read or get environment variable values in java. Java API has System class with getEnv(String key) and getEnv() methods to system env variables.
1. Introduction
In this tutorial, We will learn how to read System environment variables programmatically in java. We do set the PATH or JAVA_HOME values in system-level and now we want to retrieve them in java for further usage.
Java API has System class and has two methods to work with environment variables. The following are the methods and both are defined as static methods so which can be accessed directly with the class name.
getEnv(String keyName)
getEnv()
String value = System.getEnv("PATH");
2. Java Program to read PATH, JAVA_HOME and TEMP Environment Variables
In the following program, we are going to retrieve PATH, JAVA_HOME, Temporary directory and SHELL from mac os env variables. Just need to call the getenv() method and pass the env variable name to it. All these env vars are OS-dependent.
package com.java.w3schools.blog.java.program.to.system.env; /** * * java Program to read system environment variables in Java * * @author JavaProgramTo.com * */ public class ReadEnvVar < public static void main(String[] args) < String shellValue = System.getenv("SHELL"); System.out.println("SHELL value : " + shellValue); String tempDir = System.getenv("TMPDIR"); System.out.println("TMPDIR value : " + tempDir); String pathValue = System.getenv("PATH"); System.out.println("PATH value : " + pathValue); String JavaHomeValue = System.getenv("JAVA_HOME"); System.out.println("Java_home value : " + JavaHomeValue); >>
SHELL value : /bin/bash TMPDIR value : /var/folders/g0/0x5m1w1950z18h3m6z6h1_000000gn/T/ PATH value : /usr/bin:/bin:/usr/sbin:/sbin Java_home value : /usr/bin/java
3. Reading all Env Variables in Java
Along with the getting value for a specific env var, System class has another method to fetch all keys and values in the OS. All are retrieved with System.getEnv() method. getEnv() method returns a Map and the iterating map will return key/value pairs.
package com.java.w3schools.blog.java.program.to.system.env; import java.util.Map; public class ReadAllEnv < public static void main(String[] args) < Mapenv = System.getenv(); for (String key : env.keySet()) < String value = env.get(key); System.out.println(key + " : " + value); >> >
PATH : /usr/bin:/bin:/usr/sbin:/sbin SHELL : /bin/bash SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS : /Users/javaprogramto/Library/WebKit/Databases SECURITYSESSIONID : 186aa USER : javaprogramto APP_ICON_340 : ../Resources/Eclipse.icns COMMAND_MODE : unix2003 TMPDIR : /var/folders/g0/0x5m1w1950z18h3m6z6h1_000000gn/T/ SSH_AUTH_SOCK : /private/tmp/com.apple.launchd.M0QVWzoZa9/Listeners JAVA_MAIN_CLASS_24103 : com.java.w3schools.blog.java.program.to.system.env.ReadAllEnv XPC_FLAGS : 0x0 __CF_USER_TEXT_ENCODING : 0x1F5:0x0:0x0 Apple_PubSub_Socket_Render : /private/tmp/com.apple.launchd.m7YJcjjT4h/Render JAVA_STARTED_ON_FIRST_THREAD_340 : 1 LOGNAME : javaprogramto XPC_SERVICE_NAME : com.apple.xpc.launchd.oneshot.0x10000003.eclipse HOME : /Users/javaprogramto
5. Using Java 8 forEach
The above program can be iterated using Java 8 API forEach() method and will produce the same output as the above program.
import java.util.Map; public class ReadAllEnvJava8 < public static void main(String[] args) < Mapenv = System.getenv(); // using java 8 forEach env.forEach((key, value) -> System.out.println(key + " : " + value)); > >
5. Conclusion
In this short article, We have seen how to read environment variable value programmatically in java. System class has two utility methods getEnv(String key) which returns the corresponding value and getEnv() method returns all key, value pairs from OS.
Shown the example programs on these two methods.
Labels:
SHARE:
About Us
Java 8 Tutorial
- Java 8 New Features
- Java 8 Examples Programs Before and After Lambda
- Java 8 Lambda Expressions (Complete Guide)
- Java 8 Lambda Expressions Rules and Examples
- Java 8 Accessing Variables from Lambda Expressions
- Java 8 Method References
- Java 8 Functional Interfaces
- Java 8 — Base64
- Java 8 Default and Static Methods In Interfaces
- Java 8 Optional
- Java 8 New Date Time API
- Java 8 — Nashorn JavaScript
Java Threads Tutorial
Kotlin Conversions
Kotlin Programs
Java Conversions
- Java 8 List To Map
- Java 8 String To Date
- Java 8 Array To List
- Java 8 List To Array
- Java 8 Any Primitive To String
- Java 8 Iterable To Stream
- Java 8 Stream To IntStream
- String To Lowercase
- InputStream To File
- Primitive Array To List
- Int To String Conversion
- String To ArrayList
Java String API
- charAt()
- chars() — Java 9
- codePointAt()
- codePointCount()
- codePoints() — Java 9
- compareTo()
- compareToIgnoreCase
- concat()
- contains()
- contentEquals()
- copyValueOf()
- describeConstable() — Java 12
- endsWith()
- equals()
- equalsIgnoreCase()
- format()
- getBytes()
- getChars()
- hashcode()
- indent() — Java 12
- indexOf()
- intern()
- isBlank() — java 11
- isEmpty()
- join()
- lastIndexOf()
- length()
- lines()
- matches()
- offsetByCodePoints()
- regionMatches()
- repeat()
- replaceFirst()
- replace()
- replaceAll()
- resolveConstantDesc()
- split()
- strip(), stripLeading(), stripTrailing()
- substring()
- toCharArray()
- toLowerCase()
- transform() — Java 12
- valueOf()
Spring Boot
$show=Java%20Programs
$show=Kotlin
accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
A quick programmatic guide to read or get environment variable values in java. Java API has System class with getEnv(String key) and getEnv() methods to system env variables.
Environment Variables
Many operating systems use environment variables to pass configuration information to applications. Like properties in the Java platform, environment variables are key/value pairs, where both the key and the value are strings. The conventions for setting and using environment variables vary between operating systems, and also between command line interpreters. To learn how to pass environment variables to applications on your system, refer to your system documentation.
Querying Environment Variables
On the Java platform, an application uses System.getenv to retrieve environment variable values. Without an argument, getenv returns a read-only instance of java.util.Map , where the map keys are the environment variable names, and the map values are the environment variable values. This is demonstrated in the EnvMap example:
import java.util.Map; public class EnvMap < public static void main (String[] args) < Mapenv = System.getenv(); for (String envName : env.keySet()) < System.out.format("%s=%s%n", envName, env.get(envName)); >> >
With a String argument, getenv returns the value of the specified variable. If the variable is not defined, getenv returns null . The Env example uses getenv this way to query specific environment variables, specified on the command line:
Passing Environment Variables to New Processes
When a Java application uses a ProcessBuilder object to create a new process, the default set of environment variables passed to the new process is the same set provided to the application’s virtual machine process. The application can change this set using ProcessBuilder.environment .
Platform Dependency Issues
There are many subtle differences between the way environment variables are implemented on different systems. For example, Windows ignores case in environment variable names, while UNIX does not. The way environment variables are used also varies. For example, Windows provides the user name in an environment variable called USERNAME , while UNIX implementations might provide the user name in USER , LOGNAME , or both.
To maximize portability, never refer to an environment variable when the same value is available in a system property. For example, if the operating system provides a user name, it will always be available in the system property user.name .