
Java Virtual Machine(자바 가상 머신)으로 나무위키에는 Java 컴파일러가 프론트엔드를 담당한다면 Java 가상머신은 코드 최적화와 백엔드를 담당한다고 쓰여있다.
그렇다면 컴파일러는 무엇일까 ?

작성한 Java 소스코드는 javac 컴파일러를 거쳐 바이트코드로 변환되고, 이 바이트 코드는 JRE(Java Runtime Environment)에 들어있는 java classloader에 의해 JVM으로 적재되고 JVM에 적재된 바이트코드를 JIT(Just In Time)컴파일 방식으로 실행하는 컴퓨터의 OS 및 CPU 아키텍처용 기계어로 번역되어 수행된다.
JVM의 강점은 '플랫폼 독립'적으로 JVM이 실행가능한 환경이라면 어디서든 Java 프로그램이 실행될 수 있도록 하는 것이다.
"Write Once, Run Anywhere"
단, 특정 운영체제의 특수한 기능을 호출하거나 하드웨어를 제어하는 등의 일은 JVM으로 할 수 없으며, JNI 같은 Navite 코드를 호출하기 위한 인터페이스를 거쳐야 한다. (이 부분에 대해 찾아볼 것 !)
또 Java 가상머신이라고 Java 바이트 코드만 인식하는 것이 아니라, Kotlin, Scala, Groovy처럼 Java에서 파생된 언어들의 바이트 코드 또한 인식할 수 있다.
다만, 이 바이트 코드가 실제 기계에서 실행되는 것이 아니라, JVM의 해석단계를 거치므로 같은 기능의 네이티브 언어(C, C++, Rust, Go 등)보다 실행속도가 느리다고 한다.
(현재는 JIT 컴파일의 도입과 하드웨어 발전으로 성능이 개선되었다고 한다 !)
가비지 콜렉션(GC: Garbage Collection) 또한 Java 계열의 강력한 무기라고 할 수 있을까?
JVM은 가비지 컬렉션을 수행하여 할당되었다가 더 이상 쓰이지 않는 메모리를 자동으로 회수한다.
Garbage Collection 알아보기 →(미완)
Java Class 파일 단독으로 실행시켜보기
국비학원에서 수업을 들을 때, JRE, JDK를 설치하고나서 강사님께서 가장 먼저 메모장에 클래스파일을 간단하게 작성해서 javac명령어를 사용해 클래스 파일 실행을 보여주신 적이 있다. 그땐 몰랐지만 지금은 알 수 있다 😁
public class test {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
test.txt 메모장 파일을 생성해서 위와 같이 코드를 작성한다, 이후 저장하고 확장자명을 .java로 변경한다.
cmd 또는 powershell 명령 프롬프트를 열어, 메모장이 있는 폴더로 이동해
javac test.java 명령어를 입력한다.
그러면 같은 폴더에 test.class 파일이 생성된다.
다시 명령 프롬프트에 java test 명령어를 입력하면, 프롬프트에 Hello World가 출력되며 Class 파일이 실행된다.
이것으로 Java 소스파일의 컴파일 후 실행 과정을 간단하게 진행해 보았다.
'Java > Basic' 카테고리의 다른 글
| Scanner VS Buffered 의 차이 (1) | 2025.08.07 |
|---|---|
| 인텔리제이 환경에서 인풋데이터 메모장으로 처리하기 (0) | 2025.03.04 |
| Jar 파일과 War 파일 알아보기 (1) | 2025.01.20 |
| Garbage Collection 알아보기(작성 중) (3) | 2025.01.08 |