자바는 어떻게 실행될까? JDK, JVM, 컴파일 그리고 Eclipse
☕ JAVA 공부 기록 01
자바는 어떻게 실행될까? JDK, JVM, 컴파일 그리고 Eclipse
2026.07.22
정보처리산업기사 과정평가형 - 프로그래밍 언어 활용
JAVA 공부 첫날.
본격적으로 문법을 배우기 전에
내가 작성한 JAVA 코드가 어떤 과정을 거쳐 실행되는지부터 공부했다.
처음에는 JDK, JVM, javac, class, Bytecode 같은 단어들이
전부 따로 떨어진 개념처럼 보였다.
하지만 직접 메모장에 JAVA 코드를 작성하고,
명령 프롬프트에서 컴파일과 실행까지 해보니
하나의 과정이라는 것이 조금씩 보이기 시작했다.
━━━━━━━━━━━━━━━━━━━━
📌 오늘 배운 내용
━━━━━━━━━━━━━━━━━━━━
JDK와 환경변수
JAVA 소스코드 작성
javac를 이용한 컴파일
.java 파일과 .class 파일
Bytecode
JVM
System.out.println()
JAVA 주석
Eclipse와 IDE
━━━━━━━━━━━━━━━━━━━━
01. JDK란?
━━━━━━━━━━━━━━━━━━━━
JAVA 프로그램을 개발하려면 먼저 JDK가 필요하다.
JDK는
Java Development Kit
의 약자이다.
쉽게 생각하면
「JAVA 프로그램을 만들기 위한 개발자용 공구상자」
라고 이해하면 된다.
JDK 안에는 JAVA 개발에 필요한 여러 도구가 들어 있다.
이번 수업에서 직접 사용한 대표적인 명령어는
javac
java
두 가지였다.
JDK
│
├─ javac → JAVA 코드 컴파일
│
└─ java → JAVA 프로그램 실행
지금 단계에서는
JDK = JAVA 개발에 필요한 도구 모음
이라고 기억하기로 했다.
━━━━━━━━━━━━━━━━━━━━
02. 환경변수는 왜 설정할까?
━━━━━━━━━━━━━━━━━━━━
JDK를 설치한 뒤
Windows의 Path 환경변수도 설정했다.
JDK의 bin 폴더에는
java
javac
같은 JAVA 관련 실행 프로그램들이 들어 있다.
이 bin 폴더의 위치를 Windows Path에 등록하면
명령 프롬프트에서 JAVA 관련 명령어를 쉽게 사용할 수 있다.
내가 이해한 방식은 이렇다.
JDK의 bin 폴더
↓
Windows Path에 등록
↓
Windows에게
"JAVA 프로그램은 여기 있어!"
라고 위치를 알려준다.
↓
java, javac 명령어 사용
처음에는 '환경변수'라는 단어 자체가 어려웠는데,
직접 설정하고 명령어를 사용해보니
왜 필요한지 조금 이해가 됐다.
JAVA 컴파일러 버전은 다음처럼 확인할 수 있다.
javac -version
━━━━━━━━━━━━━━━━━━━━
03. JAVA 코드를 직접 작성해보기
━━━━━━━━━━━━━━━━━━━━
처음부터 Eclipse를 사용하는 대신
메모장에 JAVA 코드를 직접 작성해보았다.
class FirstJavaProgram {
public static void main(String[] args) {
System.out.println("Welcome to Java");
System.out.println("First Java program");
}
}
처음 코드를 봤을 때는
public
static
void
String[]
args
같은 처음 보는 단어가 한꺼번에 등장해서 복잡해 보였다.
하지만 아직은 모든 것을 외울 필요가 없다.
우선 구조만 보면 된다.
FirstJavaProgram
│
└─ main()
│
├─ Welcome to Java 출력
│
└─ First Java program 출력
지금 단계에서는
main()
을
「JAVA 프로그램이 시작되는 곳」
정도로 이해했다.
━━━━━━━━━━━━━━━━━━━━
04. JAVA 파일은 바로 실행되지 않는다
━━━━━━━━━━━━━━━━━━━━
내가 작성한 파일이
FirstJavaProgram.java
라고 해보자.
.java 파일을 작성했다고 해서
컴퓨터가 이 파일을 그대로 실행하는 것은 아니다.
먼저 컴파일이라는 과정이 필요하다.
명령 프롬프트에서 다음과 같이 입력한다.
javac FirstJavaProgram.java
javac는 JAVA 컴파일러를 실행하는 명령어이다.
컴파일이 정상적으로 완료되면
FirstJavaProgram.class
라는 새로운 파일이 만들어진다.
정리하면
FirstJavaProgram.java
↓
javac
↓
컴파일
↓
FirstJavaProgram.class
이런 흐름이다.
━━━━━━━━━━━━━━━━━━━━
05. .java와 .class의 차이
━━━━━━━━━━━━━━━━━━━━
.java
→ 개발자가 직접 작성하는 JAVA 소스파일
.class
→ JAVA 소스파일을 컴파일한 뒤 생성되는 클래스파일
그래서 전체 흐름은
개발자가 작성
FirstJavaProgram.java
↓
javac로 컴파일
↓
FirstJavaProgram.class
이 된다.
처음에는 확장자만 바뀌는 것처럼 보였지만
두 파일은 역할이 서로 다르다.
━━━━━━━━━━━━━━━━━━━━
06. Bytecode란?
━━━━━━━━━━━━━━━━━━━━
JAVA 소스파일을 javac로 컴파일하면
.class 파일이 만들어진다.
그리고 이 클래스파일 안에는
Bytecode(바이트코드)
가 들어 있다.
내가 이해한 흐름은 다음과 같다.
사람이 작성한 JAVA 코드
.java
↓
javac
↓
컴파일
↓
Bytecode
.class
↓
JVM
↓
프로그램 실행
즉,
내가 작성한 JAVA 코드와 프로그램 실행 사이에
「Bytecode라는 중간 단계가 존재한다」
라고 이해했다.
━━━━━━━━━━━━━━━━━━━━
07. 컴파일한 JAVA 프로그램 실행하기
━━━━━━━━━━━━━━━━━━━━
.class 파일까지 만들어졌다면
이제 프로그램을 실행할 수 있다.
java FirstJavaProgram
여기서 주의할 점.
컴파일할 때는
javac FirstJavaProgram.java
실행할 때는
java FirstJavaProgram
이다.
둘을 한 줄로 정리하면
javac = 컴파일
java = 실행
이라고 기억하면 쉽다.
━━━━━━━━━━━━━━━━━━━━
08. JAVA 실행 과정 한 번에 보기
━━━━━━━━━━━━━━━━━━━━
이번 수업에서 가장 중요한 흐름이다.
① JAVA 코드 작성
FirstJavaProgram.java
↓
② javac로 컴파일
↓
③ .class 파일 생성
FirstJavaProgram.class
↓
④ .class 파일 안에 Bytecode 존재
↓
⑤ java 명령어로 실행
↓
⑥ JVM이 프로그램 실행
↓
⑦ 결과 출력
한 줄로 줄이면
.java
↓
javac
↓
.class
↓
Bytecode
↓
JVM
↓
실행
이 구조다.
━━━━━━━━━━━━━━━━━━━━
09. JVM이란?
━━━━━━━━━━━━━━━━━━━━
JVM은
Java Virtual Machine
의 약자이다.
한국어로는
자바 가상 머신
이라고 한다.
처음에는 이름부터 굉장히 어려워 보였다.
그래서 지금은
「JAVA 프로그램의 실행을 담당하는 가상 머신」
이라고 이해하고 있다.
Windows, Linux, macOS처럼
운영체제는 여러 종류가 있다.
JAVA 프로그램은 JVM을 통해 실행된다.
JAVA 프로그램
│
↓
Bytecode
│
┌─────────────┼─────────────┐
↓ ↓ ↓
Windows JVM Linux JVM macOS JVM
↓ ↓ ↓
Windows Linux macOS
운영체제에 맞는 JVM이 존재하기 때문에
JAVA 프로그램과 운영체제 사이에서
JVM이 중요한 역할을 한다.
━━━━━━━━━━━━━━━━━━━━
10. JVM을 쉽게 비유하면?
━━━━━━━━━━━━━━━━━━━━
처음 개념을 잡기 위해
JVM을 '통역사'처럼 생각해봤다.
JAVA 프로그램
= 내가 하는 말
운영체제
= 서로 다른 언어를 사용하는 사람
JVM
= 중간의 통역사
정확한 내부 구조 전체를 표현하는 비유는 아니지만,
JAVA와 운영체제 사이에 JVM이 있다는 것을
기억하기에는 꽤 이해하기 쉬웠다.
━━━━━━━━━━━━━━━━━━━━
11. System.out.println()
━━━━━━━━━━━━━━━━━━━━
JAVA에서 값을 출력할 때 사용한 코드이다.
System.out.println("Welcome to Java");
문자뿐만 아니라 숫자도 출력할 수 있다.
System.out.println(7);
System.out.println(3.15);
계산도 가능하다.
System.out.println(3 + 5);
이 코드를 실행하면
8
이 출력된다.
즉 JAVA가 먼저
3 + 5 = 8
을 계산한 다음 그 결과를 출력한다.
지금은
System.out.println()
= 콘솔에 값을 출력한다
라고 기억하고 있다.
━━━━━━━━━━━━━━━━━━━━
12. println의 특징
━━━━━━━━━━━━━━━━━━━━
println은 값을 출력한 뒤
다음 줄로 이동한다.
System.out.println("JAVA");
System.out.println("Study");
실행 결과
JAVA
Study
이렇게 한 줄씩 출력된다.
━━━━━━━━━━━━━━━━━━━━
13. JAVA에서 자주 보는 기호
━━━━━━━━━━━━━━━━━━━━
JAVA 코드를 작성하면서
앞으로 계속 등장할 기호도 배웠다.
; 세미콜론
() 소괄호
{} 중괄호
[] 대괄호
특히
;
세미콜론은 JAVA에서 문장이 끝났다는 것을
표현할 때 자주 사용한다.
System.out.println("Hello");
처음 JAVA를 연습할 때는
세미콜론이나 괄호를 하나 빠뜨려서
오류가 발생할 수 있으니 주의해야겠다.
━━━━━━━━━━━━━━━━━━━━
14. JAVA의 주석
━━━━━━━━━━━━━━━━━━━━
코드에 설명을 작성할 때는
주석(Comment)을 사용할 수 있다.
한 줄 주석
// 한 줄 주석
여러 줄 주석
/*
여러 줄에
설명을 작성할 수 있다.
*/
예를 들어
class FirstJavaProgram {
public static void main(String[] args) {
// 첫 번째 문장을 출력
System.out.println("Welcome to Java");
// 두 번째 문장을 출력
System.out.println("First Java program");
}
}
처럼 사용할 수 있다.
주석은 컴퓨터에게 명령하는 코드가 아니라
「사람이 코드를 이해하기 위한 설명」
이라고 생각하면 된다.
프로그램은 혼자 만드는 것이 아니기 때문에
다른 개발자가 코드를 볼 때도
무슨 기능인지 이해할 수 있도록
필요한 설명을 작성할 수 있다.
━━━━━━━━━━━━━━━━━━━━
15. Eclipse 시작하기
━━━━━━━━━━━━━━━━━━━━
명령 프롬프트에서 직접
코드 작성
↓
컴파일
↓
실행
과정을 확인한 다음
Eclipse를 사용하기 시작했다.
Eclipse는
IDE
라고 부르는 개발 도구이다.
IDE는
Integrated Development Environment
즉,
통합 개발 환경이다.
쉽게 생각하면
「개발에 필요한 여러 기능을 한 곳에 모아둔 프로그램」
이다.
━━━━━━━━━━━━━━━━━━━━
16. Eclipse를 사용하면 무엇이 편할까?
━━━━━━━━━━━━━━━━━━━━
Eclipse에서는
프로젝트 관리
JAVA 파일 관리
코드 작성
문법 오류 확인
컴파일
실행
같은 여러 개발 작업을 편하게 할 수 있다.
명령 프롬프트에서 직접 하면
.java 작성
↓
javac
↓
.class 생성
↓
java
↓
실행
과정을 거쳤다.
Eclipse에서는 대부분
코드 작성
↓
실행 버튼 클릭
으로 사용할 수 있다.
즉,
앞에서 직접 했던 여러 작업을
개발 도구가 편리하게 처리해주는 것이다.
━━━━━━━━━━━━━━━━━━━━
17. Eclipse의 Workspace
━━━━━━━━━━━━━━━━━━━━
Eclipse를 처음 실행하면
Workspace
를 지정한다.
Workspace는
「여러 개발 프로젝트를 관리하는 작업 공간」
이라고 생각하면 된다.
구조를 단순하게 그려보면
Workspace
↓
Project
↓
Package
↓
Java Class
이다.
정리하면
Workspace
→ 전체 작업 공간
Project
→ 하나의 개발 프로젝트
Package
→ JAVA 파일을 분류하는 공간
Class
→ JAVA 코드를 작성하는 파일
정도로 먼저 이해했다.
━━━━━━━━━━━━━━━━━━━━
18. 왜 처음부터 Eclipse만 쓰지 않았을까?
━━━━━━━━━━━━━━━━━━━━
Eclipse에서는 실행 버튼만 누르면
프로그램이 실행된다.
그런데 수업에서는
먼저 메모장과 명령 프롬프트를 사용했다.
직접
javac
java
명령어를 사용해보면서
.java
↓
.class
↓
Bytecode
↓
JVM
↓
실행
과정을 직접 확인하기 위해서였다.
그래서 Eclipse를 사용했을 때도
"실행 버튼을 누르면 내부적으로
이런 과정들이 진행되는구나."
라고 조금 더 쉽게 이해할 수 있었다.
━━━━━━━━━━━━━━━━━━━━
🧠 오늘의 핵심 개념도
━━━━━━━━━━━━━━━━━━━━
JAVA 소스코드
.java
↓
javac
↓
컴파일
↓
클래스파일
.class
↓
Bytecode
↓
JVM
↓
프로그램 실행
━━━━━━━━━━━━━━━━━━━━
📌 오늘 이것만은 기억하자
━━━━━━━━━━━━━━━━━━━━
JDK
→ JAVA 개발에 필요한 도구 모음
환경변수 Path
→ JAVA 관련 프로그램의 위치를 찾도록 설정
.java
→ 개발자가 작성하는 JAVA 소스파일
javac
→ JAVA 소스파일 컴파일
.class
→ 컴파일 후 만들어지는 클래스파일
Bytecode
→ 클래스파일 안에 들어 있는 코드
java
→ JAVA 프로그램 실행
JVM
→ JAVA 프로그램 실행을 담당하는 가상 머신
System.out.println()
→ 콘솔에 값을 출력하고 줄바꿈
//
→ 한 줄 주석
/* */
→ 여러 줄 주석
IDE
→ 통합 개발 환경
Eclipse
→ JAVA 개발에 사용할 수 있는 IDE
━━━━━━━━━━━━━━━━━━━━
💭 공부하면서 느낀 점
━━━━━━━━━━━━━━━━━━━━
처음에는
JDK
JVM
javac
java
Bytecode
IDE
라는 용어들이 모두 따로따로 느껴졌다.
그런데 직접 JAVA 코드를 작성하고
컴파일하고 실행해보면서
하나의 과정이라는 것이 보이기 시작했다.
JAVA 코드를 작성한다.
↓
javac가 컴파일한다.
↓
.class 파일이 만들어진다.
↓
그 안에는 Bytecode가 있다.
↓
JVM을 통해 프로그램이 실행된다.
↓
Eclipse 같은 IDE는
이 개발 과정을 편리하게 만들어준다.
아직 JAVA 공부의 시작 단계이지만
문법을 배우기 전에 이 흐름부터 기억해두면
이후 내용을 이해하는 데 도움이 될 것 같다.
━━━━━━━━━━━━━━━━━━━━
🌐 앞으로 웹 개발과 연결하면?
━━━━━━━━━━━━━━━━━━━━
지금은 콘솔에 문장을 출력하는
간단한 JAVA 프로그램을 만들고 있다.
하지만 앞으로 JAVA를 이용해
웹 백엔드 프로그램을 공부하게 되더라도
JAVA 프로그램이 실행되고,
클래스가 만들어지고,
JVM 위에서 프로그램이 동작한다는
기본 개념은 계속 이어진다.
따라서 지금은 우선
코드 작성
→ 컴파일
→ 클래스파일
→ JVM
→ 실행
이 흐름부터 확실하게 기억하려고 한다.
━━━━━━━━━━━━━━━━━━━━
✅ 오늘의 한 줄 정리
━━━━━━━━━━━━━━━━━━━━
JAVA는 .java 소스파일을 javac로 컴파일하여
.class 파일을 만들고,
JVM을 통해 프로그램을 실행한다.
Eclipse와 같은 IDE는
이 개발 과정을 편리하게 도와주는 통합 개발 환경이다.
#JAVA #자바 #JAVA기초 #자바공부
#JDK #JVM #javac #Bytecode
#Eclipse #IDE #정보처리산업기사
#과정평가형 #프로그래밍언어활용
댓글
댓글 쓰기