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

jiyoungdev·2025년 5월 20일
post-thumbnail

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

🎯 학습 목표

  • ✅ 자바 프로젝트 구조(모듈/패키지/클래스)를 이해한다
  • srcbin 디렉토리의 차이를 구분할 수 있다
  • 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개의 댓글