[Java] 자바 프로젝트 구조와 컴파일 과정

jiyoungdev·2025년 5월 20일
post-thumbnail

📌 본 글은 신세계 I&C 부트캠프에서 배운 내용을 기반으로 정리한 글입니다.

🎯 학습 목표

  • ✅ 자바 프로젝트 구조(모듈/패키지/클래스)를 이해한다
  • ✅ src와 bin 디렉토리의 차이를 구분할 수 있다
  • ✅ javac 명령어로 컴파일 후 실행 흐름을 이해한다
  • ✅ JVM, main(), 패키지 명명 규칙 등을 익힌다

🧱 1. 자바 프로젝트 구조 이해하기

자바 프로젝트는 일반적으로 다음과 같은 구조를 가집니다:

project-name/
├── src/
│   └── main/
│       └── java/
│           └── com/example/
│               └── HelloWorld.java
├── bin/ (또는 build/)

📦 패키지(Package)

자바에서는 관련된 클래스를 묶는 단위로 패키지(package)를 사용합니다.

  • 패키지는 디렉토리 구조와 동일하며 .으로 구분합니다.
  • 클래스 이름은 패키지를 포함하여 정의됩니다:
    com.example.HelloWorld

💡 패키지 이름은 보통 도메인을 뒤집어서 3단계 이상 사용하는 것이 관례입니다.

예:

  • ✅ com.sh.Bar, com.ssg.Bar → 서로 다른 패키지로 구분됨
  • ❌ com.sh.Foo, com.sh.Foo → 이름 충돌 발생

🧠 클래스와 main() 메서드

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
  • 자바에서 클래스(Class)는 소스코드의 기본 단위입니다.
  • 메서드(Method)는 실행 가능한 코드의 가장 작은 단위이며,
    모든 실행 코드는 반드시 메서드 안에 있어야 합니다.
  • main() 메서드는 자바 프로그램의 시작점입니다.
  • 정확히 다음과 같은 형태로 작성해야 실행됩니다:
    public static void main(String[] args) { ... }

    🔁 main()이 종료되면 프로그램도 종료됩니다.


📁 2. src와 bin 디렉토리의 차이

디렉토리설명
src우리가 작성하는 소스 코드(.java)가 들어있는 폴더
bin (또는 build)컴파일 후 생성되는 목적 코드(.class)가 저장되는 폴더

✅ 예시 흐름

HelloWorld.java (in src)
   ↓ javac
HelloWorld.class (in bin)

❗ 왜 따로 구분할까?

  • 소스 코드와 컴파일된 코드는 역할과 목적이 다르기 때문
  • .class 파일을 실수로 수정하지 않도록 분리
  • 빌드 도구와 IDE도 이 구조를 전제로 작동

    ⚠️ bin 폴더의 파일은 직접 수정하지 말고, src의 코드를 수정 후 다시 컴파일하세요.


⚙️ 3. 자바의 컴파일 과정 이해하기

자바는 컴파일 언어입니다. 작성한 코드를 바로 실행하지 않고
먼저 컴파일 → 그다음 실행 단계로 나뉩니다.

🔁 실행 흐름 요약

소스 코드 (.java)
     ↓ [javac]
목적 코드 (.class)
     ↓ [java]
JVM에서 실행

🛠️ javac 명령어 실습

  1. .java 파일 컴파일

    javac HelloWorld.java

    → HelloWorld.class 생성됨 (컴파일 성공 시)

  2. 실행

    java HelloWorld

    → 콘솔에 Hello, Java! 출력


💡 JVM(Java Virtual Machine)이란?

java HelloWorld 명령어를 실행하면,
JVM(Java Virtual Machine)이 .class 파일을 읽고 실행합니다.

역할설명
플랫폼 독립성 제공운영체제에 상관없이 실행 가능
바이트코드 실행.class 파일을 해석하고 동작
메모리 관리 및 보안자동 메모리 해제(GC), 예외 처리 등 지원

자바의 핵심 철학인 "Write Once, Run Anywhere"는
JVM이 운영체제마다 실행 환경을 맞춰주기 때문에 가능한 것입니다.


📌 다시 정리하면,

단계명령어설명
컴파일javac HelloWorld.java.java → .class
실행java HelloWorldJVM이 .class 실행

자바 파일을 수정했다면 반드시 다시 컴파일 후 실행해야 합니다.


🧾 보너스: LTS(Long Term Support)란?

자바는 수시로 버전이 업그레이드되며,
LTS(Long-Term Support) 버전은 장기적으로 안정성을 보장해주는 공식 버전입니다.

버전설명
Java 8널리 쓰였지만 현재는 오래됨
Java 11안정적인 기업용 LTS
Java 17현재 권장 LTS 버전
Java 21최신 LTS (2023 출시)

✅ Java 17은 가장 안정적이고, 교육/기업 환경 모두에서 폭넓게 사용됩니다.


🧪 전체 흐름 요약

항목설명
src소스 코드가 들어 있는 디렉토리
bin컴파일된 .class 파일이 저장되는 디렉토리
javac컴파일 명령어 (.java → .class)
javaJVM을 통해 .class 실행
JVM운영체제 위에서 바이트코드를 실행하는 가상 머신
main()프로그램 시작점
package클래스 이름 충돌 방지용 논리적 폴더 구조
LTS장기 지원 버전 – 안정성과 호환성 중요

✍️ 이 글은 제가 공부하며 직접 정리한 내용입니다.
필요하신 분들과 자유롭게 공유하셔도 좋지만,
출처는 꼭 함께 남겨주시면 감사하겠습니다 :)

🔗 출처: jiyoungdev.log


📄 본 글은 CC BY-NC-ND 4.0 라이선스에 따라 보호됩니다.

저작자 표시 ✧ 비영리 ✧ 변경금지

CC License

profile
"꼼꼼하다, 믿음이 간다"는 말을 자주 듣는 개발자

0개의 댓글