What's the difference between program arguments and VM arguments?

Program arguments are arguments passed to your program and available in the args array of your main method

 public static void main(String[] args)

VM arguments are passed to the virtual machine and are designed to instruct the VM to do something. You can do things like control the heap size, etc. They can be accessed by your program via a call to System.getProperty() as you described.


enter image description here

Program Argument: Program arguments are arguments that are passed to your application, which are accessible via the "args" String array parameter of your main method.

VM Argument: VM arguments are environment or system argument that needed by JVM to execute the program. VM arguments are read from system property as below java instruction.

System.getProperty(sysProp1)

Code Snippet:

public static void main(String[] args) {
    String sysProp1 = "sysProp1";
    System.out.println("\t System Propery Name:" + sysProp1 + ", Value:" + System.getProperty(sysProp1));
    System.out.println("\t Program Variable Test Propery Name:" + args[0]);
}

There are Two way to pass these two params values.

From Eclipse:

As shown in the figure above

Command Line Argument:

 java -cp -DsysProp1=testing123456 projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar 123

For a better presentation, in multiple lines

 java -cp 
      -DsysProp1=testing123456 
      projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar 
      123

Tags:

Java

Eclipse