[Java 기초 00] 자바의 구동방식(JVM)

자바 실행 과정

1. 자바 컴파일러를 통해 자바 소스 파일(.java)를 바이트코드(.class)로 변환 ➡️ 1차 컴파일

컴파일 명령어 : "javac 파일명.java"

 

2. JVM에 의해 바이트코드(.class) 파일을 메모리에 로딩하고 그와 동시에 운영체제 플랫폼에 맞게 리소스들을 다시 재컴파일 하여 실행 ➡️ 2차 컴파일

바이트코드 변환 후 실행 명령어 : "java 파일명"

 

JVM(Java Virtual Machine)

❓Java 프로그램을 컴파일하여 만들어지는 바이트코드(.class)를 실행시키기 위한 가상 머신

 

  • 자바 프로그램을 운영체제에 상관없이 실행할 수 있게 해주고 프로그램 메모리를 관리하고 최적화해줌.
  • 자바는 exe가 아니기 때문에 더블 클릭하여 실행할 수 없음.
  • 자바 소스 파일을 1차 컴파일한 바이트코드를 실행해 주는 실행 엔진이 필요하고 그 실행 엔진이 JVM
  • JVM에 의해 바이트코드(.class) 파일을 메모리에 로딩을 하고 그와 동시에 운영체제 플랫폼에 맞게 resource들을 다시 재컴파일을 해서 실행함. ➡️ 즉, 내부적으로 2번의 컴파일이 일어남.
  • 자바는 JVM이 있으면 어떤 운영체제에서든 상관없이 구동이 되기 때문에 자바 프로그램을 어떤 운영체제에 상관없이 독립적으로 구동시킬 수 있음.
  • 그러나 가상 머신에 의해서 실행이 되기 때문에 .exe 파일처럼 더블 클릭으로 바로 실행되는 다른 언어보다는 느릴 수 있음.
  • 만약 내가 작업한 Java 파일을 다른 사람에게 보냈을 때 받은 사람의 PC에 JVM이 설치되어 있지 않으면 JRE(Java Runtime Environment)라는 실행환경을 설치해야 한다는 단점도 있음.
  • 각 운영체제에 맞는 JDK를 다운받아 설치하면 os 메모리 위에 JVM이 메모리에 탑재되어 있게 됨.
  • JDK(Java Development Kit)는 명령어들의 집합이라고 볼 수 있으며 이를 설치해야 javac 같은 명령어 사용할 수 있음.

 

자바 프로그램 폴더 기본 구조

 

 

1. bin

java 소스 파일을 1차 컴파일한 byte code 파일이 있음.

바이트 코드의 확장자는 .class

 

2. src

작성한 java 소스 파일이 있음.

소스 파일의 확장자는 .java


 

✔️ 참고

Java TPC (생각하고, 표현하고, 코딩하고) - 자바의 구동 방식

https://velog.io/@pond1029/JVM