1. Orientation & 개발 환경 설정

header


시작하기 전에

언어를 배우기 전, 가장 중요한 질문이 하나 있습니다. "나는 왜 이것을 배우는가?"

작은 목표라도 좋습니다. 명확한 이유가 있을 때, 배움은 더 즐거워집니다.

당신은 왜 Java를 배우고 싶나요?


Java, 왜 배워야 할까?

Java의 활용 분야

Java는 1995년 Sun Microsystems에서 개발한 프로그래밍 언어로, “Write Once, Run Anywhere”(한 번 작성하면 어디서나 실행)라는 철학을 가지고 있습니다.

Java가 사용되는 곳

  • 안드로이드 앱 개발: 전 세계 모바일 기기의 대부분이 안드로이드
  • 웹 서버 및 백엔드: Spring, Spring Boot를 활용한 기업용 시스템
  • 빅데이터: Hadoop, Spark 등의 핵심 프레임워크
  • IoT 기기: 임베디드 시스템 및 스마트 기기
  • 금융 시스템: 은행, 증권사의 거래 시스템
  • 게임 서버: Minecraft 등의 서버 개발

Java가 중요한 이유

1. 플랫폼 독립성

Java로 작성한 프로그램은 JVM(Java Virtual Machine)이 설치된 모든 운영체제에서 실행됩니다. Windows에서 작성한 코드를 macOS나 Linux에서도 별도의 수정 없이 실행할 수 있습니다.

Java 소스코드 (.java) → 컴파일 → 바이트코드 (.class) → JVM → 모든 OS에서 실행

2. 객체지향 프로그래밍 (OOP)

Java는 철저하게 객체지향 개념을 따르는 언어입니다. 클래스객체를 통해 코드를 구조화하고, 재사용 가능한 소프트웨어를 작성할 수 있습니다.

3. 강력한 생태계

  • Spring Framework: 웹 애플리케이션 개발의 표준
  • Maven/Gradle: 빌드 및 의존성 관리 도구
  • JUnit: 테스트 프레임워크
  • 수많은 라이브러리: Apache, Google 등에서 제공하는 다양한 라이브러리

4. 자동 메모리 관리

Java는 가비지 컬렉션(Garbage Collection)을 통해 메모리를 자동으로 관리합니다. 개발자가 직접 메모리를 할당하고 해제할 필요가 없어 메모리 누수를 방지할 수 있습니다.

5. 강한 타입 시스템

컴파일 시점에 타입 오류를 잡아내어 런타임 오류를 줄일 수 있습니다. 이는 대규모 프로젝트에서 특히 중요합니다.

💡 한 줄 요약

Java는 플랫폼 독립적이고, 강력한 생태계를 가진 객체지향 언어로 안정적이고 확장 가능한 소프트웨어를 만드는 최고의 선택입니다.


개발 환경 설정

Java 프로그래밍을 시작하기 위해서는 코드를 작성하고 실행할 수 있는 환경이 필요합니다.

1. JDK (Java Development Kit) 설치

JDK는 Java 프로그램을 개발하고 실행하는 데 필요한 모든 도구를 포함합니다.

JDK 버전 선택

  • Java 17 LTS (Long Term Support): 장기 지원 버전, 안정성이 중요한 프로젝트에 추천
  • Java 21 LTS: 최신 LTS 버전, 최신 기능 사용 가능

이 강의에서는 Java 21 LTS를 사용합니다.

Windows에서 JDK 설치

  1. Oracle JDK 다운로드 페이지 또는 OpenJDK에 접속합니다.
  2. Java 21 (LTS) 버전을 선택합니다.
  3. Windows용 설치 파일(.exe 또는 .msi)을 다운로드합니다.
  4. 다운로드한 파일을 실행하여 설치를 진행합니다.
  5. 설치 경로를 기억해두세요 (예: C:\Program Files\Java\jdk-21).

macOS에서 JDK 설치

Homebrew를 사용하여 설치하는 방법을 추천합니다.

# Homebrew 설치 (이미 설치되어 있다면 생략)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# JDK 21 설치
brew install openjdk@21

# 심볼릭 링크 생성
sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk

Homebrew가 없다면 OpenJDK에서 macOS용 JDK 21을 직접 다운로드하여 설치할 수 있습니다.

환경 변수 설정

Windows:

  1. “내 PC” 우클릭 → “속성” → “고급 시스템 설정” → “환경 변수”
  2. 시스템 변수에서 “새로 만들기” 클릭
    • 변수 이름: JAVA_HOME
    • 변수 값: JDK 설치 경로 (예: C:\Program Files\Java\jdk-21)
  3. Path 변수에 %JAVA_HOME%\bin 추가

macOS/Linux:

.zshrc 또는 .bash_profile에 다음 추가:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)
export PATH=$JAVA_HOME/bin:$PATH

터미널 재시작 후:

source ~/.zshrc  # 또는 source ~/.bash_profile

설치 확인

터미널(또는 명령 프롬프트)에서 다음 명령어를 입력합니다:

java -version

javac -version

출력 예시:

openjdk version "21.0.x" 2024-xx-xx
OpenJDK Runtime Environment (build 21.0.x)
OpenJDK 64-Bit Server VM (build 21.0.x, mixed mode, sharing)

javac 21.0.x
체크포인트

java와 javac 명령어가 모두 정상적으로 동작하면 JDK 설치가 완료된 것입니다!


2. IDE (통합 개발 환경) 선택 및 설치

Java 개발을 위한 대표적인 IDE는 다음과 같습니다:

IntelliJ IDEA (추천)

장점:

  • 강력한 코드 자동완성 및 리팩토링 기능
  • 직관적인 UI
  • 커뮤니티 에디션 무료 제공
  • Spring Framework와의 뛰어난 통합

설치 방법:

  1. IntelliJ IDEA 다운로드 페이지에 접속
  2. Community Edition (무료) 다운로드
  3. 설치 파일 실행
  4. 설치 옵션:
    • “Create Desktop Shortcut” 체크
    • “.java” 파일 연결 체크
    • “Add ‘bin’ folder to PATH” 체크

Eclipse

장점:

  • 완전 무료 오픈소스
  • 다양한 플러그인
  • 가볍고 안정적

설치 방법:

  1. Eclipse 다운로드 페이지에 접속
  2. “Eclipse IDE for Java Developers” 다운로드
  3. 압축 해제 후 eclipse.exe 실행

Visual Studio Code

장점:

  • 가볍고 빠름
  • 다양한 언어 지원
  • Extension으로 Java 지원

설치 방법:

  1. VSCode 다운로드
  2. Extension 설치:
    • “Extension Pack for Java” 검색 및 설치 (Microsoft 제공)
🎯 추천

이 강의에서는 IntelliJ IDEA Community Edition을 사용합니다. 초보자에게 가장 사용하기 쉽고, 업계에서도 널리 사용되는 IDE입니다.


Hello World 프로그램 작성

이제 모든 준비가 끝났습니다! 첫 번째 Java 프로그램을 작성해봅시다.

IntelliJ IDEA에서 프로젝트 생성

1. 새 프로젝트 만들기

  1. IntelliJ IDEA 실행
  2. “New Project” 클릭
  3. 프로젝트 설정:
    • Name: HelloJava
    • Location: 원하는 경로 선택
    • Language: Java
    • Build system: IntelliJ
    • JDK: 설치한 JDK 17 선택
    • Add sample code 체크 해제
  4. “Create” 클릭

2. 새 Java 클래스 생성

  1. 프로젝트 창에서 src 폴더 우클릭
  2. “New” → “Java Class” 선택
  3. 클래스 이름: HelloWorld 입력
  4. Enter 키를 눌러 생성

3. 코드 작성

생성된 HelloWorld.java 파일에 다음 코드를 입력합니다:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java World!");
    }
}

4. 실행하기

방법 1: 단축키 사용

  • Windows/Linux: Shift + F10
  • macOS: Control + R

방법 2: 우클릭

  • 코드 편집기에서 우클릭 → “Run ‘HelloWorld.main()’”

방법 3: 재생 버튼

  • 코드 왼쪽의 초록색 재생 버튼 클릭

실행 결과

IntelliJ IDEA 하단의 “Run” 창에 다음과 같이 출력됩니다:

Hello, Java World!

Process finished with exit code 0
🎉 축하합니다!

첫 번째 Java 프로그램을 성공적으로 실행했습니다. 이제 본격적으로 Java를 배울 준비가 완료되었습니다.


Java 프로그램의 구조 이해하기

방금 작성한 Hello World 프로그램을 다시 살펴보면서 Java 프로그램의 기본 구조를 이해해봅시다.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java World!");
    }
}

1. 클래스 (Class)

public class HelloWorld {
    // 클래스 내용
}

Java는 모든 것이 클래스 안에 존재해야 합니다. 클래스는 프로그램의 기본 단위이며, 데이터와 메서드를 담는 틀입니다.

클래스 = 설계도

클래스는 객체를 만들기 위한 설계도와 같습니다. 건물을 짓기 위해 설계도가 필요하듯, Java에서는 클래스를 통해 프로그램을 구성합니다.

클래스 이름 규칙:

  • 파일 이름과 클래스 이름이 반드시 동일해야 합니다
  • 첫 글자는 대문자로 시작 (PascalCase)
  • 예: HelloWorld.javapublic class HelloWorld

2. main 메서드

public static void main(String[] args) {
    // 프로그램 시작점
}

main 메서드는 Java 프로그램의 시작점(Entry Point)입니다. JVM은 프로그램을 실행할 때 가장 먼저 main 메서드를 찾아 실행합니다.

main 메서드 구성 요소:

키워드 의미
public 어디서든 접근 가능 (접근 제어자)
static 객체 생성 없이 호출 가능
void 반환값이 없음
main 메서드 이름 (고정)
String[] args 명령줄 인자를 받는 매개변수
⚠️ 주의

main 메서드의 형식은 반드시 public static void main(String[] args)여야 합니다. 하나라도 다르면 프로그램이 실행되지 않습니다.

3. System.out.println()

System.out.println("Hello, Java World!");

콘솔에 문자열을 출력하는 메서드입니다.

  • System: Java의 표준 시스템 클래스
  • out: 표준 출력 스트림 (콘솔)
  • println: 문자열을 출력하고 줄바꿈 (print + line)

print vs println:

System.out.print("Hello ");     // 줄바꿈 없음
System.out.print("World!");      // 출력: Hello World!

System.out.println("Hello");     // 줄바꿈 있음
System.out.println("World!");    // 출력:
                                  // Hello
                                  // World!

4. 세미콜론 (;)

Java에서 모든 문장(statement)은 세미콜론(;)으로 끝나야 합니다.

System.out.println("Hello");  // ✅ 올바름
System.out.println("World")   // ❌ 오류: 세미콜론 누락

5. 중괄호 ({ })

중괄호는 코드 블록을 정의합니다. 클래스, 메서드, 제어문 등의 범위를 나타냅니다.

public class HelloWorld {        // 클래스 블록 시작
    public static void main(String[] args) {  // 메서드 블록 시작
        System.out.println("Hello!");
    }  // 메서드 블록 끝
}  // 클래스 블록 끝

Java 프로그램 실행 과정

Java 프로그램이 실행되는 과정을 단계별로 살펴봅시다.

1. 컴파일 과정

HelloWorld.java (소스 코드)
        ↓
   [javac 컴파일러]
        ↓
HelloWorld.class (바이트코드)
  • javac (Java Compiler): 소스 코드(.java)를 바이트코드(.class)로 변환
  • 바이트코드: JVM이 이해할 수 있는 중간 언어

2. 실행 과정

HelloWorld.class (바이트코드)
        ↓
     [JVM]
        ↓
   기계어로 변환
        ↓
  운영체제에서 실행
  • JVM은 바이트코드를 읽고 해석하여 실행
  • 운영체제에 관계없이 동일한 바이트코드 실행 가능
Write Once, Run Anywhere (WORA)

Java의 핵심 철학입니다. 한 번 컴파일한 바이트코드는 JVM이 설치된 모든 플랫폼에서 실행할 수 있습니다.

3. 터미널에서 직접 컴파일 및 실행

IntelliJ IDEA 없이 터미널에서 직접 실행할 수도 있습니다.

1) 컴파일:

javac HelloWorld.java

HelloWorld.class 파일 생성

2) 실행:

java HelloWorld

→ 출력: Hello, Java World!

💡

실행할 때는 .class 확장자를 붙이지 않습니다. 클래스 이름만 입력합니다.


자주 발생하는 오류와 해결 방법

1. “javac를 인식할 수 없습니다”

원인: JDK가 설치되지 않았거나 환경 변수가 설정되지 않음

해결 방법:

  • JDK 설치 확인: java -version
  • 환경 변수 JAVA_HOMEPATH 설정 확인
  • 터미널 재시작

2. “클래스 이름과 파일 이름이 일치하지 않습니다”

// 파일명: HelloWorld.java
public class Hello {  // ❌ 오류
    // ...
}

해결 방법: 클래스 이름을 파일 이름과 동일하게 수정

// 파일명: HelloWorld.java
public class HelloWorld {  // ✅ 올바름
    // ...
}

3. “main 메서드를 찾을 수 없습니다”

public class HelloWorld {
    public void main(String[] args) {  // ❌ static 누락
        // ...
    }
}

해결 방법: main 메서드는 반드시 public static void main(String[] args) 형식이어야 함

4. “’;’ 필요”

System.out.println("Hello")  // ❌ 세미콜론 누락

해결 방법: 모든 문장 끝에 세미콜론(;) 추가

5. 한글 깨짐 문제

Windows 명령 프롬프트에서 한글이 깨지는 경우:

chcp 65001
javac -encoding UTF-8 HelloWorld.java
java HelloWorld

또는 IntelliJ IDEA 사용 (자동으로 인코딩 처리)


첫 번째 실습: 출력 연습

이제 직접 코드를 작성해봅시다!

실습 1: 여러 줄 출력하기

다음과 같이 출력되도록 프로그램을 작성하세요:

안녕하세요!
Java 프로그래밍을 배우고 있습니다.
열심히 공부하겠습니다!
정답 보기
public class Practice01 {
    public static void main(String[] args) {
        System.out.println("안녕하세요!");
        System.out.println("Java 프로그래밍을 배우고 있습니다.");
        System.out.println("열심히 공부하겠습니다!");
    }
}

실습 2: 특수 문자 출력하기

다음과 같이 출력되도록 프로그램을 작성하세요:

"Java"는 재미있다!
파일 경로: C:\Program Files\Java

힌트:

  • 큰따옴표를 출력하려면: \"
  • 역슬래시를 출력하려면: \\
정답 보기
public class Practice02 {
    public static void main(String[] args) {
        System.out.println("\"Java\"는 재미있다!");
        System.out.println("파일 경로: C:\\Program Files\\Java");
    }
}

이스케이프 시퀀스:

  • \n: 줄바꿈
  • \t: 탭
  • \": 큰따옴표
  • \\: 역슬래시

핵심 요약

이번 챕터에서 배운 내용

  1. Java의 특징
    • 플랫폼 독립성 (Write Once, Run Anywhere)
    • 객체지향 프로그래밍
    • 자동 메모리 관리 (Garbage Collection)
  2. 개발 환경 설정
    • JDK 설치 및 환경 변수 설정
    • IntelliJ IDEA 설치 및 프로젝트 생성
  3. Java 프로그램 구조
    public class ClassName {
        public static void main(String[] args) {
            // 코드 작성
        }
    }
    
  4. 컴파일 및 실행
    • javac FileName.java → 컴파일
    • java ClassName → 실행
  5. 기본 출력
    • System.out.println(): 출력 + 줄바꿈
    • System.out.print(): 출력 (줄바꿈 없음)

다음 챕터 예고

다음 챕터에서는 변수와 자료형을 배웁니다.

  • 변수란 무엇인가?
  • 기본 자료형 (int, double, boolean, char 등)
  • 변수 선언과 초기화
  • 형변환 (Type Casting)
  • 문자열 (String) 다루기

🎯

첫 걸음을 축하합니다!

Java 프로그래밍의 첫 걸음을 성공적으로 마쳤습니다.
이제 본격적으로 Java의 세계로 들어갈 준비가 되었습니다!