접두사 -D
java -jar -DmyProp="Hello World" myProgram.jar
이처럼 옵션을 줄 때 -D 접두사를 붙여서 주는 이유가 무었일까??
java -jar -myProp="Hello World" myProgram.jar
접두사를 빼는 것이 훨씬 간단해보이는데..
접두사를 붙이지 않는다면 JVM에 설정된 옵션인 표준 JVM 옵션과 구별되는 시스템 속성으로 판단할 수 없기 때문에 붙여서 구별하는 것이다.
아래는 표준 옵션을 정의한 것이다. 이것은 실행할 때 에러를 발생시킨다.
java -jar -client="davidxxx" myProgram.jar -- 표준 옵션 client
인식할 수 없는 옵션: -client=davidxxx
접두사를 사용 하면 표준 JVM 옵션과 구별되는 시스템 속성으로 정의되어 있으므로 -D-client를 설정할 수 있다.
java -jar -D-client="davidxxx" myProgram.jar
-- 두 옵션 모두 사용 가능
java -jar -client -D-client="davidxxx" myProgram.jar
D 가 DEFINE 을 의미한다.
C/C++ 컴파일러에서 동일하게 옵션 설정을 할 때 구분을 위해 접두사를 붙이는 것에서 유래되었다고 한다.
D 만 사용하는 것이 아니라 D, X, XX 여러가지가 있다.