← SEARCHABLE ARCHIVE
Java · 2026-07-13

Java 기초부터 마스터까지 — 1화

JVM, 클래스, 컬렉션으로 시작하는 Java

INTERACTIVE READING MODE →

본 블로그 작성 글들은, 강의를 목표로 하고 제작되었습니다. 또한 작성된 글의 정보도 틀렸을 수 있으니, 주의해주세요.

Java는 JVM 위에서 실행되는 정적 타입 프로그래밍 언어다. 운영체제마다 JVM이 구현되어 있어서 같은 바이트코드를 여러 환경에서 실행할 수 있다.

소스 코드는 바이트코드가 된다

Java 소스 파일은 컴파일을 거쳐 .class 바이트코드가 된다. JVM은 이 바이트코드를 읽고 현재 환경에서 실행한다.

Main.java
   ↓ javac
Main.class
   ↓ JVM
프로그램 실행

클래스에서 프로그램을 시작한다

public class Main {
    public static void main(String[] args) {
        Player player = new Player("Rose");
        player.takeDamage(25);
        System.out.println(player.getHealth());
    }
}

class Player {
    private final String name;
    private int health = 100;

    Player(String name) {
        this.name = name;
    }

    void takeDamage(int amount) {
        health = Math.max(0, health - amount);
    }

    int getHealth() {
        return health;
    }
}

private 필드는 클래스 내부에서만 직접 접근할 수 있다. 생성자는 객체가 만들어질 때 필요한 초기값을 받고, 메서드는 객체의 동작을 표현한다.

컬렉션에는 타입을 지정한다

List<String> items = new ArrayList<>();
items.add("Potion");
items.add("Key");

for (String item : items) {
    System.out.println(item);
}

제네릭의 String은 리스트에 저장할 값의 타입을 뜻한다. 컴파일러가 잘못된 타입의 값이 들어가는 것을 미리 확인할 수 있다.

Java 객체의 메모리는 Garbage Collector가 정리한다. 하지만 데이터베이스 연결이나 파일처럼 닫아야 하는 자원은 try-with-resources로 수명을 관리한다.

Java를 시작할 때는 JVM의 모든 내부 구조보다 클래스, 메서드, 예외, 컬렉션을 이용해 작은 프로그램 하나를 완성하는 것이 먼저다. 그 뒤 Gradle이나 Maven으로 프로젝트와 외부 라이브러리를 관리하면 된다.