본문 바로가기

교재 목차

JDK 25를 기준으로 첫 프로그램부터 객체지향, 컬렉션, 동시성, 입출력과 네트워크, 함수형 프로그래밍까지 Java를 순서대로 익힙니다.

Java를 처음 배우면 문법, 객체지향, JVM이라는 세 주제가 한꺼번에 밀려와서 서로 어떻게 이어지는지 놓치기 쉽습니다. 이 교재는 값을 계산하는 작은 프로그램에서 시작해, 그 프로그램을 회원가입과 게시판 기능으로 조금씩 키워 가면서 새 개념이 왜 필요한지를 보여 줍니다. 앞 장에서 만든 클래스와 컬렉션을 뒤의 파일 저장, 네트워크, HTTP 서버에서 다시 쓰므로 처음에는 순서대로 읽는 편이 좋습니다.

예제는 JDK 25를 기준으로 합니다. 코드가 성공하는 경우만 보여 주지 않고, 컴파일 오류와 예외, 동시성 버그도 직접 재현한 뒤 원인을 찾습니다. 실행할 때마다 달라질 수 있는 출력은 본문에서 그 점을 따로 밝혀 둡니다.

글마다 있는 '더 깊이' 절은 내부 동작, 설계 이유, 명세와 버전 차이를 궁금해하는 독자를 위한 내용입니다. 처음 읽을 때는 건너뛰어도 본문을 따라가는 데 문제가 없으니, 한 바퀴 읽은 뒤 다시 펼쳐 볼 때 읽어도 됩니다. 각 글을 마친 뒤에는 예제를 보지 않고 다시 작성해 보고, 입력 하나를 바꾸면 결과가 어떻게 달라질지 먼저 예상한 다음 실행해서 확인해 보세요.


학습 경로

기본 과정은 다섯 단계, 36개 장으로 이루어져 있습니다. 37장과 38장은 기본 과정을 마친 뒤 필요할 때 골라 읽는 선택 심화 과정입니다.

1단계 · 문법과 객체(1–8장)에서는 값과 제어문, 입력과 배열, 메서드에서 시작해 클래스와 참조, 캡슐화, 상속과 다형성을 익힙니다. 회원 정보를 다루는 작은 프로그램이 이 단계를 거치며 객체지향 구조로 바뀝니다.

2단계 · Java 기본 도구(9–17장)에서는 Object와 불변 객체, 래퍼와 열거형, 날짜와 시간 API, 중첩 클래스, 예외, 제네릭을 다룹니다. 이어서 배열 목록, 연결 목록, 해시 집합을 직접 구현해 본 뒤 Java 컬렉션을 용도에 맞게 고르는 방법을 배웁니다.

3단계 · 동시성과 입출력(18–25장)에서는 스레드를 만들고 멈추는 방법부터 가시성과 동기화, 생산자·소비자, 원자 연산, 실행자와 스레드 풀까지 차례로 익힙니다. 그다음 문자 인코딩과 스트림, 파일 저장, TCP 통신으로 넘어가 프로그램 바깥과 데이터를 주고받습니다.

4단계 · 웹과 메타프로그래밍(26–29장)에서는 채팅 서버와 HTTP 서버를 소켓 위에 직접 만들고, 리플렉션과 애노테이션으로 요청을 처리할 메서드를 찾아 호출하는 작은 실행기를 완성합니다. 여기서 직접 만들어 본 구조는 나중에 웹 프레임워크가 내부에서 하는 일을 짐작하는 기준이 됩니다.

5단계 · 현대 Java(30–36장)에서는 람다와 함수형 인터페이스, 스트림과 Collector, Optional, 병렬 스트림과 Fork/Join, 함수형 설계를 다룹니다. 마지막 36장에서는 record, sealed 타입, 패턴 매칭, 모듈, 가상 스레드처럼 JDK 25에서 정식으로 쓸 수 있는 기능을 정리하고 기존 코드를 옮기는 방법을 살펴봅니다.

선택 심화(37–38장)는 JDK 25의 프리뷰 기능을 안전하게 실험하는 방법과, 클래스 로딩, 바이트코드, JIT, GC 로그, JFR, 스레드 덤프로 JVM 안에서 일어나는 일을 확인하는 방법을 다룹니다. 두 장 모두 기본 과정의 내용을 바탕으로 하므로 36장까지 읽은 뒤에 보는 것이 좋습니다.


장별 목차

기본 과정은 1장부터 36장까지 순서대로 읽고, 37장과 38장은 필요할 때 골라 읽으면 됩니다. 다 읽은 뒤에는 문법 이름을 얼마나 외웠는지보다, 값이 언제 만들어지고 사라지는지, 객체가 어떤 일을 맡는지, 여러 스레드가 같은 데이터를 다룰 때 무엇이 안전한지를 코드로 설명할 수 있는지 점검해 보세요.

이 페이지 목차

이 페이지 목차