JVM은 작성한 코드를 직접 실행할 수 없습니다. 바이트코드로 작성된 프로그램을 실행하는 방법만 알고 있습니다. 바이트코드는 기계 코드에 가까운 저수준 언어입니다.

Java의 경우 컴파일은 Java로 작성된 (고수준) 프로그램을 바이트코드로 작성된 동일한 프로그램으로 변환하는 것입니다.

코드는 .java 파일로 컴파일러에 전달됩니다. 컴파일러가 코드에서 오류를 찾지 못하면 새 바이트코드 파일을 반환합니다. 이 파일은 이름은 같지만 확장자가 .class 로 다릅니다 . 코드에 오류가 있으면 컴파일러에서 "프로그램이 컴파일되지 않았습니다"라고 알려줍니다. 그런 다음 각 오류 메시지를 읽고 오류를 수정해야 합니다.

javac 명령을 사용하여 JDK(Java Development Kit)의 일부인 컴파일러를 호출합니다. 즉, JRE(Java Runtime Environment)만 설치하면 컴파일러가 없습니다! 바이트 코드만 실행할 수 있는 JVM만 있습니다. 따라서 JDK를 설치하고 .java 파일을 컴파일러에 전달합니다.

예를 들어 콘솔 출력이 있는 간단한 프로그램을 살펴보겠습니다.


class MySolution {
   public static void main(String[] args) {
      System.out.println("Hi, command line!");
   }
}

이 코드를 D:/temp/MySolution.java 파일에 저장해 보겠습니다 .

명령을 사용하여 코드를 컴파일해 봅시다.


D:\temp>javac MySolution.java

코드에 컴파일 오류가 없으면 임시 폴더에 MySolution.class 파일이 나타납니다 . 또한 코드가 포함된 MySolution.java 파일은 아무데도 가지 않습니다. 원래 있던 자리에 그대로 남아 있습니다. 그러나 이제 MySolution.class는 바이트코드를 포함하며 JVM에서 직접 실행할 준비가 되었습니다.

우리의 예는 가능한 한 간단하지만 가장 크고 가장 복잡한 프로젝트도 javac 명령을 사용합니다. 따라서 작동 방식을 아는 것이 매우 유용합니다.

한 번에 둘 이상의 클래스를 컴파일할 수 있습니다. 예를 들어 임시 폴더 에 다른 파일 Cat.java가 있다고 가정합니다 .


D:\temp>javac MySolution.java Cat.java

아니면 이거:


D:\temp>javac *.java

일단 컴파일되면 .class 파일은 다른 컴퓨터로 편리하게 이동한 다음 실행할 수 있는 jar 파일 로 패키징할 수 있습니다 . 다음은 jar 파일을 만드는 방법의 예입니다 .


D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class

어디:

  • jar 는 JDK에 포함된 .jar 파일 생성 명령입니다.

  • cvfe 는 다음과 같은 의미를 가진 명령줄 옵션입니다.

    • c – 새 jar 파일 생성

    • v – 자세한 정보 표시

    • f – 도구의 출력을 파일( myjar.jar ) 에 넣기를 원함을 나타냅니다.

    • e – 진입점( MySolution ), 즉 기본 메서드를 포함하는 클래스를 나타냅니다.

  • MySolution.java Cat.class – jar 파일 에 압축될 파일의 ​​공백으로 구분된 이름입니다 .

결과 jar 파일을 실행하는 방법은 다음과 같습니다.


D:\temp>java -jar myjar.jar
더 자세한 정보:
javac 및 jar 도구 에는 도움말이 내장되어 있습니다. 표시하려면 명령줄에서 다음을 실행합니다.
  • javac --도움말
  • 항아리 --도움말