Java와 JVM의 역할: 왜 한 번 작성한 코드가 여러 환경에서 실행될까?
1강. Java와 JVM의 역할: 왜 한 번 작성한 코드가 여러 환경에서 실행될까?
1. 이번 강의에서 해결할 문제
Java를 운영체제와 무관한 언어라고만 외우면 javac와 java가 각각 무엇을 만들고 실행하는지 이해하기 어렵습니다. 소스에서 JVM 실행까지의 단계를 분리해야 합니다.
2. 학습 목표
3. 핵심 개념
JDK는 컴파일러 javac, 실행기 java와 개발 도구를 포함합니다. JVM은 바이트코드를 로드·검증·실행하며 운영체제별 JVM 구현이 플랫폼 차이를 흡수합니다. JRE는 JVM과 실행 라이브러리를 묶은 실행 환경을 뜻하지만, 현대 JDK 배포에서는 별도 JRE 설치보다 JDK 또는 애플리케이션별 런타임 이미지를 사용하는 흐름이 일반적입니다.
4. 단계별 실습
1. src/RuntimeInfo.java 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-records
실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.
대상 파일: src/RuntimeInfo.java
public class RuntimeInfo {
public static void main(String[] args) {
System.out.println("Java: " + System.getProperty("java.version"));
System.out.println("JVM: " + System.getProperty("java.vm.name"));
System.out.println("OS: " + System.getProperty("os.name"));
}
}
2. PowerShell에서 컴파일·실행
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-records
실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.
대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일
New-Item -ItemType Directory -Force C:\dev\game-records\src,C:\dev\game-records\out
Set-Location C:\dev\game-records
javac -d out .\src\RuntimeInfo.java
java -cp out RuntimeInfo
예상 결과: Java·JVM·운영체제 정보가 출력되고 out에 RuntimeInfo.class가 생성됩니다.
5. 코드가 동작하는 이유
javac는 사람이 읽는 선언을 JVM 명령인 바이트코드로 변환하고 -d out은 결과를 소스와 분리합니다. java는 지정한 classpath에서 클래스를 찾아 JVM을 시작하고 main 메서드를 호출합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
Java와 JVM의 역할: 왜 한 번 작성한 코드가 여러 환경에서 실행될까? 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.