
📌 본 글은 신세계 I&C 부트캠프에서 배운 내용을 기반으로 정리한 글입니다.
src와 bin 디렉토리의 차이를 구분할 수 있다javac 명령어로 컴파일 후 실행 흐름을 이해한다자바 프로젝트는 일반적으로 다음과 같은 구조를 가집니다:
project-name/
├── src/
│ └── main/
│ └── java/
│ └── com/example/
│ └── HelloWorld.java
├── bin/ (또는 build/)
자바에서는 관련된 클래스를 묶는 단위로 패키지(package)를 사용합니다.
.으로 구분합니다.com.example.HelloWorld💡 패키지 이름은 보통 도메인을 뒤집어서 3단계 이상 사용하는 것이 관례입니다.
예:
com.sh.Bar, com.ssg.Bar → 서로 다른 패키지로 구분됨com.sh.Foo, com.sh.Foo → 이름 충돌 발생public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
main() 메서드는 자바 프로그램의 시작점입니다.public static void main(String[] args) { ... }🔁 main()이 종료되면 프로그램도 종료됩니다.
| 디렉토리 | 설명 |
|---|---|
src | 우리가 작성하는 소스 코드(.java)가 들어있는 폴더 |
bin (또는 build) | 컴파일 후 생성되는 목적 코드(.class)가 저장되는 폴더 |
HelloWorld.java (in src)
↓ javac
HelloWorld.class (in bin)
.class 파일을 실수로 수정하지 않도록 분리⚠️
bin폴더의 파일은 직접 수정하지 말고,src의 코드를 수정 후 다시 컴파일하세요.
자바는 컴파일 언어입니다. 작성한 코드를 바로 실행하지 않고
먼저 컴파일 → 그다음 실행 단계로 나뉩니다.
소스 코드 (.java)
↓ [javac]
목적 코드 (.class)
↓ [java]
JVM에서 실행
.java 파일 컴파일
javac HelloWorld.java
→ HelloWorld.class 생성됨 (컴파일 성공 시)
실행
java HelloWorld
→ 콘솔에 Hello, Java! 출력
java HelloWorld 명령어를 실행하면,
JVM(Java Virtual Machine)이 .class 파일을 읽고 실행합니다.
| 역할 | 설명 |
|---|---|
| 플랫폼 독립성 제공 | 운영체제에 상관없이 실행 가능 |
| 바이트코드 실행 | .class 파일을 해석하고 동작 |
| 메모리 관리 및 보안 | 자동 메모리 해제(GC), 예외 처리 등 지원 |
자바의 핵심 철학인 "Write Once, Run Anywhere"는
JVM이 운영체제마다 실행 환경을 맞춰주기 때문에 가능한 것입니다.
| 단계 | 명령어 | 설명 |
|---|---|---|
| 컴파일 | javac HelloWorld.java | .java → .class |
| 실행 | java HelloWorld | JVM이 .class 실행 |
자바 파일을 수정했다면 반드시 다시 컴파일 후 실행해야 합니다.
자바는 수시로 버전이 업그레이드되며,
LTS(Long-Term Support) 버전은 장기적으로 안정성을 보장해주는 공식 버전입니다.
| 버전 | 설명 |
|---|---|
| Java 8 | 널리 쓰였지만 현재는 오래됨 |
| Java 11 | 안정적인 기업용 LTS |
| Java 17 | 현재 권장 LTS 버전 |
| Java 21 | 최신 LTS (2023 출시) |
✅ Java 17은 가장 안정적이고, 교육/기업 환경 모두에서 폭넓게 사용됩니다.
| 항목 | 설명 |
|---|---|
src | 소스 코드가 들어 있는 디렉토리 |
bin | 컴파일된 .class 파일이 저장되는 디렉토리 |
javac | 컴파일 명령어 (.java → .class) |
java | JVM을 통해 .class 실행 |
JVM | 운영체제 위에서 바이트코드를 실행하는 가상 머신 |
main() | 프로그램 시작점 |
package | 클래스 이름 충돌 방지용 논리적 폴더 구조 |
LTS | 장기 지원 버전 – 안정성과 호환성 중요 |
✍️ 이 글은 제가 공부하며 직접 정리한 내용입니다.
필요하신 분들과 자유롭게 공유하셔도 좋지만,
출처는 꼭 함께 남겨주시면 감사하겠습니다 :)
🔗 출처: jiyoungdev.log
📄 본 글은 CC BY-NC-ND 4.0 라이선스에 따라 보호됩니다.
저작자 표시 ✧ 비영리 ✧ 변경금지
