Java 명령어

S_H_H·2025년 3월 26일
0
post-thumbnail

JDK의 bin 디렉터리에는 다양한 도구가 있다. 그중 java.exe와 javac.exe는 자바 개발자라면 누구나 알아야 하겠지만, 그 외 도구들의 역할까지 모든 개발자가 알 필요는 없다. JDK 버전이 업그레이드되면서 도구의 수와 기능은 알게 모르게 많아지고 개선되어 왔다. 자바 프로그램을 컴파일하고 실행하는 일 외에도 이 도구들은 패키징, 배포, 서명, 디버깅, 모니터링, 운영, 유지 보수등 다양한 시나리오에 활용된다.

명령어

기본 도구

appletviewer웹 브라우저 없이 애플릿 실행 및 디버깅JDK 버전
extcheckJAR 충돌 검사7~8
jarJAR 파일 생성 및 관리7~
java클래스 파일이나 JAR 파일 실행7~
javac자바 언어용 컴파일러7~
javadoc자바 API 문서 생성기7~
javahJNI 메서드 작성용 C 언어 헤더 파일과 스터브(stub) 파일 생성기7~9
javap자바 바이트코드 분석7~
jlink모듈과 의존성들을 런타임 이미지 파일로 패키징7~
jdbJPDA 프로토콜 기반의 자바 코드 디버거(사용법은 GDB와 비슷)7~
jdeps자바 클래스 의존성 분석기7~
jdeprscanJAR 패키지에서 사용 중인 폐기 대상 클래스 검색7~
jwebserver프로토타이핑, 테스팅, 디버깅용 간단한 웹 서버. HTTP 1.1과 정적 파일만 지원18~

보안 도구

이름주 용도JDK 버전
keytool키 저장소와 인증서 관리7~
jarsignerJAR 서명 생성 및 검증7~
policytool정책 파일 관리용 GUI 도구. 사용자 정책 파일(.java.policy) 관리에 사용한다.7~9

국제화 도구

이름주 용도JDK 버전
native2ascii네이티브→ 아스키 변환기, '지원되는 문자 인코딩'과 해당 '아스키 인코딩 및 유니코드 탈출 문자' 사이를 변환하는 데 사용한다7~8

원격 메서드 호출 도구

이름주 용도JDK 버전
rmic자바 RMI 컴파일러, 스터브와 스켈레톤 그리고 JRMP나 IIOP를 사용하는 원격 객체용 연결(tie) 객체를 생성한다. OMGIDL 생성에도 쓰인다.7-14
miregistry원격 객체 레지스트리 서비스, 포트를 지정하여 현재 호스트에서 원격 객체 레지스트리를 생성하고 시작한다.7~
rmid활성화 시스템 데몬 시작. 가상 머신에서 객체들의 등록과 활성화를 허용한다.7~
serialver명시한 클래스의 직렬화 버전 아이디를 생성해 반환한다.7~16

자바 IDL과 RMI-IIOP11

이름주 용도JDK 버전
tnameserv이름 서비스에 접근7~10
idljIDL→ 자바 컴파일러. OMGIDL 인터페이스에 바인딩되는 자바 소스 파일을 생성해서 자바로 작성된 애플리케이션에서 CORBA 함수를 이용할 수 있게 한다. IDL은 인터페이스 정의 언어(interface definition language)를 뜻한다.7~10
orbd객체 요청 브로커 데몬(object request broker daemon). 클라이언트에서 CORBA 환경의 서버들에 존재하는 영속 객체를 찾고 호출한다. 임시 이름 서비스인 tnameserv 대신 ORBD를 사용하자. ORBD는 임시 이름 서비스와 영구 이름 서비스를 모두 제공한다. orbd는 부트스트랩 서비스, 임시 이름 서비스, 영구 이름 •서비스, 서버 관리자를 통합한 도구다. servertool 도구와 함께 사용하면 클라이언트가 서버를 찾고 등록하고 활성화할 수 있다.7~10
servertool손쉬운 애플리케이션 등록 및 해지, 서버 시작 및 종료 인터페이스를 제공한다.7~10

배포 도구

이름주 용도JDK 버전
javapackager자바 또는 자바FX 애플리케이션 패키징 및 서명7~10
jpackage자족형(self-contained) 자바 애플리케이션 패키징 도구. 자족형 자바 애플리케이션이란 마치 네이티브 애플리케이션처럼 설치/제거할 수 있는 형태를 말한다. 기존 자바 애플리케이션은 JAR 파일을 배포하고 클래스패스를 설정하는식으로 설치했다.14~
pack200자바 GZIP 압축기를 사용하여 JAR 파일을 압축된 Pack200 파일로 변환. Pack200은 고도로 압축된 JAR 파일이며 그대로 배포할 수 있어 네트워크 사용량과 다운로드 시간을 줄여 준다.7~13
unpack200Pack200 파일의 압축을 풀어 JAR 파일로 변환7~13

자바 웹 스타트

이름주 용도JDK 버전
javaws 자바 웹 스타트 프로그램을 시작하고 다양한 옵션 제공7~10

JVM 성능 모니터링 및 문제 해결 도구

이름주 용도JDK 버전
jpsJVM 프로세스 상태 도구. 지정한 시스템의 모든 핫스팟 가상 머신 프로세스를 출력한다.7~
jstatJVM 통계적 모니터링 도구. 핫스팟 가상 머신의 다양한 런타임 데이터를 수집한다.7~
jstatdJVM 통계적 모니터링 도구 데몬. jstat의 데몬이다. 테스트할 핫스팟 가상 머신의 생성과 종료를 모니터링하기 위한 RMI 서버 애플리케이션을 띄운다. 또한 로컬 시스템에서 실행 중인 가상 머신에 원격 모니터링 도구를 연결할 수 있는 인터페이스를 제공한다.7~
jinfo가상 머신의 설정 정보를 출력한다.7~
jmap가상 머신의 메모리 덤프 스냅숏(heapdump 파일)을 생성한다.7~
jfr자바 애플리케이션의 런타임 진단 및 프로파일링13~
jhat힙 덤프 스냅숏 분석에 쓰인다. HTTP-웹 서버를 내장하여 사용자가 웹 브라우저로 분석 결과를 확인할 수 있다.7~8(※JDK9에서 jhsdb로 대체)
jstack가상 머신의 스레드 스냅숏을 보여 준다.7~
jhsdbSA 기반의 핫스팟 프로세스 디버거9~
jsadebugdSA 기반의 디버거 데몬, 명시한 자바 프로세스에 SA를 부착하거나, 사후에 디버거를 실행하여 코어 덤프의 내용을 분석한다. 또는 디버그 서버로 동작한다.7~8
jcmd가상 머신 진단용 명령 줄 도구. 실행 중인 자바 가상 머신에 진단 명령을 보낸다.7~
jconsole자바 가상 머신 모니터링용 GUI 도구. JMX 명세를 따른다. 로컬/원격 가상 머신을 모니터링할 수 있고 애플리케이션들을 모니터링, 관리할 수 있다.7~
jmc성능 오버헤드 없이 자바 애플리케이션을 모니터링하고 관리한다.7~10(※JDK 11부터 별도 제공)
jvisualvm자바 VisualVM. 자바 가상 머신에서 실행 중인 자바 애플리케이션에 대한 상세 정보를 제공하는 GUI 도구다. 메모리와 CPU 분석, 힙 덤프 분석, 메모리 누수 검출, MBean 접근, 가비지 컬렉션 등의 정보를 제공한다.7~8(※JDK 9부터 별도 제공)

웹 서비스 도구

이름주 용도JDK 버전
schemagenXML 바인딩용 스키마 생성기. XML 스키마 파일을 생성한다.7~10
wsgenXML 웹 서비스 2.0용 자바 API. JAX-WS 웹 서비스에서 쓰이는 JAX-WS 아티팩트를 생성한다.7~10
wsimportXML 웹 서비스 2.0용 자바 API. 주로 서버에서 게시한 WSDL 파일을 기반으로 클라이언트를 생성하는 데 사용한다.7~10
xjc주로 XML 스키마 파일을 기반으로 자바 클래스 파일을 생성한다.7~10

REPL과 스크립트 도구

이름주 용도JDK 버전
jshell자바 기반 셸 REPL 도구9~
jjs나스혼(Nashorn) 엔진 기반 명령 줄 도구. 나스혼은 자바로 만든 자바스크립트 실행 환경으로 가볍고 빠르다.7~14
jrunscript자바 명령 줄 스크립트 셸. 자바스크립트, 그루비, 루비 등의 스크립트 언어를 해석하고 실행한다.7~

GUI 도구

명령 주 도구 외에도 JDK는 더 많은 기능을 통합한 GUI 도구도 몇 가지 제공한다. 대체로 GUI 도구로 프로세스 오류를 더 쉽게 진단하고 디버깅할 수 있다. 가상 머신 문제 해결용 GUI 도구로는 JConsole, JHSDB, VisualVM, JMC가 대표적이다.

사용하고 싶은 GUI 도구에 대해서는 찾아서 사용해보기를 추천한다.

HotSpot JVM 플러그인

핫스팟 소스 코드를 깊게 들여다보면 핫스팟 개발 과정에서 많은 플러그인과 보조 도구가 제작되어 왔음을 알 수 있다. 실제로 JDK_SRC_HOME/src/utils/에서 다음 도구들을 찾아볼 수 있다.

  • IGV : C2 JIT 컴파일러가 바이트코드를 아이디얼 그래피로 변환한 후 다시 기계어 코드로 변환하는 과정을 시각화해 준다.
  • CCV : C1 JIT 컴파일러가 HIR을 생성하고 저수준 중간 표현으로 변환한 후 물리 레지스터를 할당하는 과정을 보여준다.
  • Project Creator : Visul Studio용 .project 파일 생성을 도와준다 (JDK 9 제거)
  • LogCompilation : -XX:+LogCompilation 옵션으로 출력된 로그를 더 일기 편한 포맷으로 변환한다.
  • HSDIS : JIT 컴파일러용 디스어셈블러
profile
LEVEL UP

0개의 댓글