user705414
user705414

Reputation: 21200

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

I found only when I put -Dcontext=web into VM arguments, the value can be read by System.getproperty method. I am wondering what's the difference between those two?

Upvotes: 46

Views: 43791

Answers (5)

Aravind Yarram
Aravind Yarram

Reputation: 80176

The Program args are available via the args [] of your main(String args[]) method

Upvotes: 2

Rajeev Rathor
Rajeev Rathor

Reputation: 1922

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

Upvotes: 8

Chris Thompson
Chris Thompson

Reputation: 35598

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.

Upvotes: 61

TTDS
TTDS

Reputation: 104

  • Program arguments - arguments which we normally pass into our program. This type parameters can be accessed using "args" String array in the main method.
  • VM arguments - arguments which are passed into the Java interpreter.

Upvotes: 1

Vladimir Dyuzhev
Vladimir Dyuzhev

Reputation: 18336

Program arguments go into main() method:

public static void main(String[] args) // here

Upvotes: 2

Related Questions