JDK를 설치하고, bin 디렉토리를 확인해보자. 다음과 같이 JDK가 제공하는 기본 개발 도구들을 볼 수 있다.
이 도구 들의 기능을 직접 사용해보고, 어떠한 기능을 하는지 알아보자.
* 다음 예시들은 JDK 11 버전을 기준으로 작성했습니다.
javac
· 자바 코드로 작성된 파일(.java)을 JVM이 실행 가능한 파일(.class)로 컴파일하는 명령어
- .class 파일은 자바 바이트코드로 구성된 파일이다.
· 사용법: javac [파일명.java]
사용 예시
명령어를 사용하기전, 명령어를 적용할 HelloWorld.java 파일을 생성하고, 아래와 같이 작성한다.
HelloWord.java
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World");
}
}
그리고 터미널을 통해 HelloWorld.java 파일이 있는 경로에서 다음 명령어를 실행한다.
javac HelloWorld.java
그러면, 다음과 같이 HelloWorld.class 파일이 생성된다.
java
· 컴파일된 자바 바이트 코드 파일(.class)를 실행하는 명령어
· 사용법: javac [클래스명]
사용 예시
위에서 javac 명령어를 통해 컴파일한 클래스이름과 함께 java 명려어를 입력한다.
java HelloWorld
다음과 같이 HelloWorld.java 파일에 작성한 코드가 실행되는 것을 볼 수 있다.
jar
· 자바에서 사용되는 묶음 파일인 Jar 파일을 다루기 위한 명령어다.
- JAR: Java Archive, 파일 확장자는 .jar이다.
- Jar 파일은 클래스 파일들을 편리하게 배포하기 위해 실행에 필요한 여러 파일들(클래스, 텍스트, 그림, 메타데이터 등)을
묶어 하나의 파일로 만든 것이다.
· 사용법:
- 파일 묶기: jar -cvmf 메니페스트파일.MF 생성할파일이름.jar 묶을파일이름.class
- 파일 풀기: jar -xvf 묶음파일이름.jar
- 자세한 옵션: https://ohgyun.com/36
사용 예시
명령어를 실행하지 전 'HelloWord2.java'라는 파일을 생성하고, 컴파일(javac)하여 HelloWorld2.class 파일을 만든다.
HelloWorld.java
public class HelloWorld2 {
}
Manifest.txt라는 메니페스트파일을 아래와 같이 만든다. 여기서 추가하는 데이터는 jar 파일의 메인 클래스를 지정한다.
- 메니페스트 파일은 메타데이터 정보를 포함한다.
- 메타데이터 정보에는 확장 정보 및 패키지 관련 데이터가 기술되어 있으며, 키-값 형태의 문자열로 구성된다.
Manifest.MF
Main-Class: HelloWorld
HelloWorld.class 파일과 HelloWold2.class 파일의 메타데이터를 Manifest.MF로 설정하여, abc.jar 파일로 묶는 다음 명령어를 실행한다.
jar -cvmf Manifest.MF abc.jar HelloWorld.class HelloWorld2.class
위 이미지를 보면 abc.jar 파일이 생성된 걸 확인할 수 있다. 이렇게 생성한 jar 파일은 위에서 학습한 'java' 명령어로 실행할 수 있다.
java -jar abc.jar
이번에는 생성한 jar 파일을 다시 여러 개의 파일로 풀어보자.
먼저 'jarDir'이라는 디렉터리를 만들고, 해당 디렉터리에 abc.jar 파일을 옮긴다. 그리고 해당 위치에서 다음 명령어를 입력한다.
jar -xvf abc.jar
다음과 같이 기존에 묶은 파일들이 다시 풀어지는 걸 확인할 수 있다.
javadoc
· 자바 코드를 문서화하는 명령어
· 문서화할 클래스, 필드, 메서드, 애노테이션, 인터페이스 등에 주석 및 어노테이션으로 문서를 작성하면, HTML 등 다양한 포맷으로 export 할 수 있다.
· 사용법: javadoc 문서화할파일.jar
사용 예시
기존에 생성한 HelloWorld.java 파일을 대상으로 javadoc 명령어를 적용한다.
javadoc HelloWorld.java
문서화를 위한 다양한 파일이 생성되는 걸 볼 수 있다.
여기서 javadoc 명령어의 대상파일이름.html의 파일을 브라우저로 클릭하면, 해당 클래스 정보를 아래와 같이 볼 수 있다.
jps
· 현재 실행 중인 자바 프로세스들의 이름과 프로세스 ID를 보여주는 명령어
· 사용법: jps
사용 예시
jmap
· 현재 실행 중인 자바 프로세스들의 메모리관련 통계를 보여주는 명령어다.
· jps, jmap은 에러 원인 분석이나 JVM 사애를 모니터링 하기 위해 사용한다.
· 사용법:
● jamp -clstats <pid> : 실행중인 프로세스와 연결하고, 클래스 로더의 통계를 출력한다.
● jmap -finalizerinfo <pid> : 실행중인 프로세스와 연결하고, 소멸을 기다리는 객체의 정보를 출력한다.
● jmap -histo[:[<histo-options>]] <pid> : 실행중인 프로세스와 연결하고, 자바 객체 힙의 히스토그램(도수분포표 그래프)을 출력한다.
● jmap -dump:<dump-options> <pid> : 실행중인 프로세스와 연결하고, 자바 힙 덤프를 뜬다.
사용 예시
위의 jps로 확인한 프로세스id(pid)를 타켓으로 명령어를 적용해보자. 다음 명령어로 클래스 로더의 통계를 출력한다.
jmap -clstats 20932
자바 객체 힙의 히스토그램을 출력한다. (길어서 결과 생략)
jmap -histo 95689
출처
https://blog.live2skull.kr/javadoc/java/java-javadoc/
'자바' 카테고리의 다른 글
[Java] 자바8의 새로운 날짜 관련 클래스들 - java.time 패키지 (LocalDate, LocalTime, LocalDateTime, ZonedDateTime) (0) | 2021.12.13 |
---|---|
[Java] 런타임에 자바 코드를 조작하는 방법: 리플렉션(Reflection) (0) | 2021.12.10 |
J2EE 디자인 패턴 - Session Facade Pattern (0) | 2021.12.06 |
[Java] if-else vs switch, 조건문의 속도 차이와 그 이유 (0) | 2021.12.05 |
J2EE 디자인 패턴 - Data Access Object Pattern (0) | 2021.12.05 |
댓글