📌 Tip: Java 21을 설치해도, 컴파일 시 옵션(--release)을 설정하여 8이나 11로 하위 호환 컴파일 가능
자바는 "혼자서 실행이 불가능"한 언어입니다.
즉, 실행 환경(runtime environment)이 반드시 필요합니다.

자바의 실행 구성 요소를 기차 시스템에 비유해 볼게요:
| 구성 요소 | 설명 | 비유 |
|---|---|---|
JVM (Java Virtual Machine) | 바이트코드(.class)를 실행 | 기차 선로 위를 달리는 엔진 |
API (Java Standard API) | 자주 쓰는 기능(입출력, 컬렉션 등) 묶음 | 기차 객차에 실린 도구들 |
JRE (JVM + API) | 자바 프로그램 실행 환경 | 운행 준비된 기차 한 대 |
JDK (JRE + javac + java 등) | 자바 개발 환경 (컴파일, 실행 포함) | 기차를 만드는 공장까지 포함된 전체 세트 |
플랫폼 독립성 (WORA: Write Once, Run Anywhere)

🎭 예시:
마치 모든 나라에서 자국 언어로 번역해주는 통역사(JVM)가 있다면,
우리는 공통 언어(바이트코드)로 말만 하면 어디서든 대화가 가능함
동적 메모리 할당
💡 비유:
마치 사람 수에 맞춰 식탁에 의자를 하나씩 가져다 놓는 식당처럼,
처음부터 모든 자원을 할당하지 않고 필요할 때만 쓰는 구조
보안성
.java → javac → .class (바이트코드) → JVM이 실행🎯 요약:
자바는
.class라는 공통 언어로 말하고, 각 JVM이 해당 운영체제에 맞게 실행시켜주는 다국어 통역기 기반 실행 방식
.class 파일은 Java 8 환경에서 실행 불가 → 포맷 버전이 맞지 않음⚠️ 개발 환경(JDK 버전)과 실행 환경(JRE 버전)이 달라 생기는 대표적인 에러:
"Unsupported major.minor version"또는"class file version X.Y is not supported"
| 용어 | 설명 |
|---|---|
| JDK | 개발 도구 (컴파일러 + 실행기 포함) |
| JRE | 실행만을 위한 환경 (JVM + API) |
| JVM | 바이트코드를 실제로 실행하는 가상 머신 |
| API | 자바 표준 라이브러리 집합 |
| 클래스 포맷 버전 | JVM이 이해할 수 있는 .class 파일의 버전 정보 |
| 자바의 특징 | 플랫폼 독립성, 동적 할당, 보안, 컴파일+인터프리팅 방식 |
| 구분 | 설명 | 비유 |
|---|---|---|
Java | 자바라는 프로그래밍 언어 자체 | 요리의 레시피 |
JDK (Java Development Kit) | 자바를 개발하기 위한 도구 모음 (JRE + 컴파일러 등 포함) | 요리하기 위한 주방 + 조리도구 세트 |
🔑 정리:
자바(JAVA)는 언어고,
JDK는 그 언어를 작성하고, 컴파일하고, 실행할 수 있는 툴킷이다.
자바를 배우는 것과 JDK를 설치하는 것은 다르다!
📌 예시:
JAVA_HOME = C:\Program Files\Java\jdk-21
javac, java 같은 명령어를 터미널(PowerShell)에서 실행할 수 있게 설정/bin 디렉토리를 등록해야 함📌 예시:
Path = %JAVA_HOME%\bin
🧭 비유:
JAVA_HOME은 JDK가 설치된 건물 주소Path는 그 주소 안에 있는 비상 출입문을 터미널이 바로 열 수 있게 등록하는 것
RC는 Run Configuration의 약자로, Eclipse나 IntelliJ 같은 IDE에서 프로젝트를 실행하는 방법을 설정하는 기능입니다.
🧪 비유:
RC는 마치 요리 레시피를 실행할 때 어떤 조리도구와 재료를 쓸지 정리한 실행 순서표 같음



File → New → Java Project
src 폴더 우클릭 → New → ClassMain)public static void main(String[] args) 체크박스 활성화 → 메인 클래스일떄Run As → Java Application
Project → Properties → Java Build Path 설정에서 존재하지 않는 JDK/JRE 버전이 설정되어 있음📦 비유: "없는 공구를 쓰려고 하는 목수"
당신이 목공 작업을 하려고 프로젝트를 열었는데,
작업 도구로 '전기톱 11번 모델'을 쓰겠다고 설정돼 있었어요.
그런데 그 전기톱은 당신의 공방에 존재하지 않아요.
따라서 프로젝트는 "전기톱이 없어서 작업을 못 한다"고 말하며 오류를 냅니다.
이때 이 "전기톱"이 바로 JDK/JRE 버전,
"작업 도구 설정"은 Build Path 설정,
"작업을 못 한다"는 것은 컴파일/실행 오류 발생입니다.
| 원인 | 설명 |
|---|---|
| ❌ 지정된 JDK/JRE가 설치되어 있지 않음 | 예: Java 17이 Build Path에 등록돼 있지만, 실제로는 Java 17이 설치되어 있지 않음 |
| ❌ 프로젝트 설정이 잘못된 위치를 참조 | 경로가 깨진 외부 JRE나 잘못된 라이브러리 설정 등 |
| ❌ 다른 컴퓨터에서 프로젝트 가져왔을 때 | 예전 설정이 남아 있음 (예: .classpath, .project 파일) |
Window → Preferences → Java → Installed JREsProject → Properties → Java Build Path → LibrariesAdd Library → JRE System Library → Workspace default JRE 선택Installed JREs에서 직접 선택