본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
자바 코드 구조 탐험: 클래스와 클래스패스 파헤치기! 🏗️🗺️

안녕하세요! 자바의 세계에 한 걸음 더 내딛으신 여러분, 다시 만나 반갑습니다! 👋 지난번 'Hello, Java World!'를 외치며 자바와 첫인사를 나눴던 시간, 다들 기억하시나요? 😊
오늘은 지난 시간에 이어 자바 코드가 어떤 약속과 규칙으로 이루어져 있는지, 그 구조를 좀 더 자세히 들여다보는 시간을 가지려고 해요. 마치 건물을 지을 때 설계도가 중요하듯, 자바 프로그래밍에서도 이 '구조'를 이해하는 것이 탄탄한 코드를 만드는 첫걸음이랍니다.
오늘은 클래스(Class)에 대해 좀 더 알아보고, 자바가 우리가 작성한 코드를 어떻게 찾아내는지 알려주는 비밀 지도, 클래스패스(Classpath)에 대해서도 살짝 엿볼 거예요. 자, 준비되셨다면 함께 자바 코드의 내부를 탐험해 볼까요? 🚀

1. 복습 타임! 자바 코드의 기본 뼈대 기억하시나요? 🤔
지난 시간에 우리는 아주 간단한 자바 코드를 만났었죠.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java World!");
}
}
여기서 public class HelloWorld { ... } 부분이 자바 프로그램의 가장 기본 단위인 '클래스'를 정의하는 부분이고, public static void main(String[] args) { ... }은 프로그램이 시작되는 특별한 약속 지점, '메서드' 중 하나라고 말씀드렸어요.
모든 자바 코드는 이 클래스라는 큰 틀 안에 작성되어야 하고, 프로그램 실행은 main 메서드에서 시작된다는 것! ✨ 꼭 기억해주세요.
하지만 이건 정말 기본적인 뼈대일 뿐, 실제 프로그램은 훨씬 더 많은 요소들로 구성된답니다. 이제 그 속을 좀 더 채워나가 볼 시간이에요!

2. 코드의 집을 짓자! 클래스(Class) 더 깊이 알아보기 🏠
자바에서 '클래스'는 정말 정말 중요해요! 객체 지향 프로그래밍(OOP)의 핵심 개념이기도 한데요 (이건 앞으로 계속 나올 거예요!), 지금은 클래스를 '관련된 데이터와 기능을 함께 묶어놓은 설계도' 정도로 생각하면 이해하기 쉬울 것 같아요.
이 설계도 안에는 크게 두 가지 종류의 멤버를 가질 수 있습니다.
- 필드 (Fields): 클래스에 속한 '데이터'를 저장하는 변수들을 말해요. 마치 설계도에 건물의 '방 개수', '층수' 같은 정보를 적어두는 것과 비슷하죠. 이 필드에 값을 저장하고 관리하면서 프로그램을 동작시킵니다.
- 메서드 (Methods): 클래스가 할 수 있는 '기능'이나 '동작'을 정의하는 코드 묶음이에요. 지난 시간에 봤던 main 메서드도 특별한 역할을 하는 메서드 중 하나였죠? System.out.println()처럼 화면에 글자를 출력하는 기능도 사실은 System이라는 클래스 안에 있는 out이라는 필드가 가진 println이라는 메서드를 사용한 거랍니다! (조금 복잡해 보이지만, '클래스 안에 기능(메서드)들이 들어있다'는 느낌만 기억해 주세요!)
예를 들어 '자동차' 클래스를 만든다고 상상해볼까요?
- 필드(데이터): 자동차의 '색상', '현재 속도', '연료량' 같은 정보
- 메서드(기능): '시동 걸기', '가속하기', '정지하기', '연료 주입하기' 같은 동작
이렇게 관련된 데이터와 기능을 클래스라는 하나의 단위로 묶어서 관리하면 코드를 더 체계적으로 만들고 재사용하기도 쉬워진답니다.
3. 내 코드는 어디에? 클래스패스(Classpath)의 역할 🗺️
우리가 HelloWorld.java 파일을 컴파일하면 HelloWorld.class 파일이 만들어진다고 했죠? 그리고 JVM이 이 .class 파일을 실행시킨다고 했습니다. 그런데 JVM은 수많은 파일 중에서 우리가 실행하려는 HelloWorld.class 파일을 어떻게 찾을 수 있을까요? 🤔
바로 이때 필요한 것이 '클래스패스(Classpath)'입니다!
클래스패스는 JVM이나 자바 컴파일러에게 .class 파일들(우리가 작성한 클래스 또는 다른 사람이 만들어 놓은 라이브러리 클래스들)을 어디서 찾아야 하는지 알려주는 '경로 목록'이에요. 마치 우리가 도서관에서 책을 찾을 때, 어느 서가에 있는지 알아야 쉽게 찾을 수 있듯이, JVM도 클래스패스에 지정된 경로들을 뒤져서 필요한 클래스 파일을 찾는 거죠.
만약 우리가 HelloWorld 클래스 안에서 다른 클래스(예를 들어 MyCalculator라는 클래스)를 사용했는데, JVM이 클래스패스에서 MyCalculator.class 파일을 찾지 못하면 "클래스를 찾을 수 없습니다(ClassNotFoundException)" 같은 무시무시한 오류를 만나게 될 수도 있어요! 😱
지금 당장은 클래스패스를 직접 설정할 일이 많지 않을 수 있지만, 나중에 좀 더 복잡한 프로그램을 만들거나 다른 사람이 만든 코드(라이브러리)를 가져다 쓸 때는 이 클래스패스의 개념을 이해하는 것이 매우 중요해집니다. '아, 자바가 클래스를 찾아가는 길이 있구나!' 정도로 기억해두시면 좋겠습니다.
4. 간단 예제로 보는 클래스와 멤버 👀 (살짝 맛보기)
백문이 불여일견! 아주 간단한 예제로 클래스 안에 필드와 메서드가 어떻게 들어가는지 살짝 볼까요?
public class SimpleBox {
String content; // 필드: 상자 안에 담을 내용물(문자열)을 저장
// 메서드: 상자에 내용물을 넣는 기능
void put(String item) {
content = item; // 필드 'content'에 전달받은 'item' 값을 저장
System.out.println(item + "을(를) 상자에 넣었습니다.");
}
// 메서드: 상자 안의 내용물을 보여주는 기능
void showContent() {
if (content == null) { // 내용물이 없으면
System.out.println("상자가 비어있습니다.");
} else { // 내용물이 있으면
System.out.println("상자 안에는 " + content + "이(가) 들어있습니다.");
}
}
public static void main(String[] args) {
SimpleBox box = new SimpleBox(); // SimpleBox 설계도로 실제 상자(객체) 만들기 (나중에 자세히!)
box.showContent(); // 처음엔 비어있음
box.put("맛있는 쿠키"); // 쿠키를 넣음
box.showContent(); // 쿠키가 들어있음
}
}
이 코드에는 content라는 문자열 데이터를 저장하는 필드와, put (내용물 넣기), showContent (내용물 보여주기) 라는 두 개의 메서드가 SimpleBox 클래스 안에 정의되어 있어요. 그리고 main 메서드 안에서 이 SimpleBox의 기능을 사용하는 것을 볼 수 있습니다. ( new SimpleBox() 같은 부분은 '객체 생성'과 관련된 내용인데, 이건 다음 기회에 더 자세히 알아볼게요!)
와~ 오늘은 자바 코드의 구조를 이루는 핵심 요소인 클래스에 대해 좀 더 알아보고, JVM이 클래스를 찾는 길인 클래스패스까지 살짝 엿봤네요! 🤓
아직 필드니 메서드니 하는 용어들이 조금 낯설 수 있지만, 자꾸 보고 사용하다 보면 금방 익숙해질 거예요. 중요한 것은 자바 코드가 그냥 나열되는 것이 아니라, '클래스'라는 구조 안에서 '필드(데이터)'와 '메서드(기능)'로 체계적으로 구성된다는 점입니다.

오늘 월요일인데 새로운 내용 공부하시느라 정말 수고 많으셨습니다! 😊 꾸준히 한 걸음씩 나아가는 여러분 모두를 응원합니다. 그럼, 내일 또 새로운 내용으로 만나요! 👋
'데이터 엔지니어링' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 23일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.23 |
|---|---|
| 패스트캠퍼스 환급챌린지 22일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.22 |
| 패스트캠퍼스 환급챌린지 20일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.20 |
| 패스트캠퍼스 환급챌린지 19일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.19 |
| 패스트캠퍼스 환급챌린지 18일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.18 |