java por ¿Cuál es la diferencia entre los argumentos del programa y los argumentos de VM?




pasar parametros por linea de comandos java (4)

Encontré solo cuando puse -Dcontext=web en los argumentos de VM, el valor se puede leer con el método System.getproperty . Me pregunto cuál es la diferencia entre esos dos?


Los argumentos del programa son argumentos que se pasan a su programa y están disponibles en la matriz args de su método principal

 public static void main(String[] args)

Los argumentos de la VM se pasan a la máquina virtual y están diseñados para dar instrucciones a la VM para que haga algo. Puede hacer cosas como controlar el tamaño del montón, etc. El programa puede acceder a ellos a través de una llamada a System.getProperty() como lo describió.


  • Argumentos del programa - argumentos que normalmente pasamos a nuestro programa. Se puede acceder a este tipo de parámetros utilizando la matriz de cadenas "args" en el método principal.
  • Argumentos de VM: argumentos que se pasan al intérprete de Java.

Los argumentos del programa están disponibles a través de los argumentos [] de su método principal (String args [])


[![enter image description here][1]][1]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 argument are environment or system argument that needed by JVM to execute program. VM arguments is 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:

  [1]: https://i.stack.imgur.com/7c0dv.jpg

Command Line Argument: 
java -cp projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar com.first.jobs.IndexJob testing -DsysProp1=testing






eclipse