Warum JVM-Argumente beginnen mit "-D"?
Warum müssen wir prefix JVM-Argumente mit -D
z.B. bei einem Glas von der Kommandozeile aus? E. g.
java -jar -DmyProp="Hello World" myProgram.jar
wird verwendet, um myProgram.jar
mit dem system-parameter myProp
. Also, warum die führenden -D
? Warum nicht auch die Architekten von Java-lass es uns einfach tun:
java -jar -myProp="Hello World" myProgram.jar
Ich hoffe auf eine Antwort, die nicht nur die ", Weil das ist, wie es ist".
Bonus-Frage:, Warum der Brief -D
im Gegensatz zu anderen schreiben, es steht für nichts?
Hinweis: Diese Frage fragt warum es war ein müssen, verwenden Sie "D", oder andere Brief für diese Angelegenheit, an Erster Stelle. Es ist weniger um die Auswahl bestimmter Buchstaben "D" über andere schreiben, obwohl, das ist gefragt als eine bonus-Frage.
Die bonus-Frage hier eine Antwort: In java -D was bedeutet das D stand für?.
- Das ist eine gute Frage für den Oracle/Sun-Entwickler. BTW, warum ist das ein Problem für Sie?
- Ich verstehen Sie, warum " über die bloße "getting things zu arbeiten".
- Alle tollen Antworten, leider kann ich akzeptieren nur eine. Danke Jungs für die Aufklärung!
- Hinweis: offizielle Dokumentation des ein Java-Tool
- Danke für den Hinweis @CarlosHeuberger. Es tut expalin, warum die Buchstaben D weitere zu dem, was die bereits vorhandene Antworten erklären?
- es ist mehr ein Hinweis, wo weitere Informationen über die Optionen, wenn sich jemand findet der diese Fragen stellt, während der Suche nach, dass
- Mögliche Duplikate von java-D was bedeutet das D stand für?
- Das ist nicht doppelt. Obwohl es Antworten die "Bonus-Frage", es gibt keine Antwort auf die wichtigste Frage.
- gut erkannt und danke für den link. Wie Markus angedeutet, beide Fragen überschneiden sich, sind aber Verschieden und jeder fügt Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte es heute aber angenommen, dass in der nächsten Java-Versionen eine
-myProp
argument ist, eingeführt als ein JVM-option.Wie unterscheiden Ihre
-myProp
von der-myProp
JVM-option ? Kein Weg ist.Es gibt eine offensichtliche Grund für die Verwendung
-D
zu definieren system-Eigenschaften.Als anderes Beispiel, anstelle von
-myProp
angenommen, Sie Programm stützt sich auf eine-client
Eigenschaft system.Es wird nicht ausgeführt :
Haben Sie ein JVM-Fehler, wie :
als
-client
ist eine JVM-option standard, der erwartet, dass Sie keinen Wert.Aber wenn Sie
-D-client
ist es jetzt in Ordnung, wie hier-Dclient
ist definiert als ein system, Eigenschaft, die unterscheidet sich von der-client
standard-JVM-option :Oder mit beiden :
Weiter zu gehen, nicht alle JVM-Argumente beginnen mit
-D
. aber die meisten von Ihnen haben ein Präfix (-D
,-X
,-XX
) ermöglicht es, dass in einem irgendwie zu definieren Namensräume.Haben Sie verschiedene Kategorien von JVM-Argumente :
1. Standard-Optionen (
-D
aber nicht nur).Diese sind die am häufigsten verwendeten Optionen, die unterstützt werden, indem alle Implementierungen der JVM.
Verwenden Sie
-D
zu spezifizieren, System-Eigenschaften, aber die meisten von Ihnen haben keine Präfix :-verbose
,-showversion
, und so für...2. Nicht-Standard-Optionen (mit dem Präfix
-X
)Diese Optionen sind Allzweck-Optionen, die speziell für die Java HotSpot Virtuelle Maschine.
Zum Beispiel :
-Xmssize
,-Xmxsize
3. Advanced-Runtime-Optionen (mit dem Präfix
-XX
)Diese Optionen Steuern das Verhalten zur Laufzeit von der Java HotSpot VM.
4. Erweiterte JIT Compiler-Optionen (mit dem Präfix
-XX
)Diese Optionen Steuern das dynamische just-in-time (JIT) - Kompilierung durchgeführt, die von der Java HotSpot VM.
5. Erweiterte Wartungsfreundlichkeit Optionen (mit dem Präfix
-XX
)Diese Optionen bieten die Möglichkeit zum sammeln von system-Informationen, und führen umfangreiche debugging.
6. Erweiterte Garbage Auflistung Optionen (mit dem Präfix
-XX
)Diese Optionen Steuern, wie garbage collection (GC) erfolgt durch die Java-HotSpot-VM.
"Definieren". Die Bedeutung ist ähnlich wie ein Präprozessor-definition in C. Das -D bedeutet, dass die definition in den Kontext der Anwendung und nicht in der Java-interpreter Kontext wie jede andere option, bevor Sie den Namen der ausführbaren Datei.
Die Verwendung der Buchstaben "D" ist nicht spezifisch erläutert in die Dokumentation, aber der einzige nutzen ist, um zu "definieren", ein Schlüssel in die system-Eigenschaften anzeigen - außer für diese Referenz:
Wenn Sie nicht angeben, so etwas wie -myProp="XYZ" es bedeutet, dass es übergeben wird, als argument an main-Methode des Programms.
-D bedeutet, Sie können diesen Wert mit System.getProperty
-X wird verwendet für die Erweiterung Argumente wie -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
Ja, Sie hätten vertauscht.. das Zeichen; aber diese Zeichen werden verwendet, um festzulegen, welche Art der parameter übergeben wird, und wer ist der Verbraucher.
Ohne die
-D
die Eigenschaften in Konflikt mit der normalen JVM-Optionen. Zum Beispiel, wie würden Sie das Eigentumjar
?Den
-D
wurde wahrscheinlich gewählt (ich kann nur spekulieren), da ist es auch in der C-Präprozessor Symbole definieren, und war somit den meisten Menschen vertraut.