java 커맨드는 자바 어플리케이션을 실행한다. JRE를 시작하고, 명시된 클래스를 로딩하고 클래스의 시그니처가 public static void main(String[] args) 인 메서드를 호출한다. 첫번째 인자는 필수 값으로 호출할 클래스의 이름을 나타낸다. 만약 -jar 옵션을 추가하면 첫번째 인자는 클래스와 리소스를 포함하는 JAR 파일명이다. 클래스 혹은 JAR 파일명 뒤의 나머지 인자들은 main 메서드의 인자로 전달된다.

Options

java 커맨드는 다음 범주로 나눌 수 있는 다양한 옵션을 지원한다

Standard options은 모든 JVM에서 지원된다. JRE 버전 확인, 클래스 경로 설정, 상세 출력 등과 같이 공통 액션에 사용된다.

Non-standard options은 Java HotSpot Virtual Machine에 특정 범용 옵션이다. 따라서 모든 JVM이 지원할 수 없고 변경 될 수 있다. 이 옵션은 -X 로 시작한다.

Advanced options 옵션을 대충 사용하는 것은 추천하지 않는다. 이것은 개발자 옵션으로 Java HotSpot VM 작업의 특정 영역을 튜닝하는 데 사용된다. 보통 특정 시스템 요구사항을 가지고, system configuration parameter에 접근할 수 있는 권한이 있어야 한다. 그리고 모든 JVM에 대한 지원이 보장되지 않고, 변경될 수 있다. 이 옵션은 -XX 로 시작된다.

Boolean 옵션은 기본적으로 활성화/비활성화 된 기능을 비활성화/활성화하는데 사용되며, 이러한 옵션에는 매개 변수가 필요하지 않다. Boolean -XX 옵션은 활성화할 때 + 기호를 사용하고(-XX:+OptionName), 비활성화 할 때 - 기호를 사용한다(-XX:-OptionName).

인자가 필요한 옵션의 경우 인자는 공백, :, = 로 이름과 구분된다(정확한 문법은 각 옵션마다 다르다). 만약 크기를 바이트로 지정해야 하는 경우 접미사를 사용하지 않거나 KB를 k 혹은 K, MB를 m 혹은 M, GB를 g 혹은 G 로 사용할 수 있다. 또한 백분율을 지정해야하는 경우에는 0에서 1까지의 숫자를 사용한다(e.g. 25%는 0.25 로 나타낸다).

Reference