JAVA SERIES · 26

기초부터 Spring Boot까지, Java 26편.

기초 → 객체지향 → 컬렉션/제네릭 → 예외/IO → 모던 자바 → Spring Boot 순으로 한 단원씩 따라가는 26편 학습 트랙. 각 단원은 README + 예제 코드 (`src/*.java`) + 과제(`homework/`) + 정답 코드 한 묶음입니다. JDK 21 LTS 와 IntelliJ IDEA(또는 VS Code) 환경을 기준으로 작성했고, 백엔드 취업·이직을 준비하거나 학교 자바 과목을 본격적으로 이해하려는 학습자에게 적합합니다. 마지막 4편에서는 Spring Boot 로 REST API 와 간단한 CRUD 서비스를 직접 만들어 봅니다.

원본 GitHub 저장소 ↗

기초

5단원 · 시작·변수·연산자·제어문·메서드

#01

01. Java 시작하기

기초 · 선수: 없음

Java 는 1995년 발표 이후 30년째 산업 현장의 주력 언어로 쓰이는 정적 타입·객체지향 프로그래밍 언어입니다. 이번 편에서는 JDK 21 LTS 를 설치하고, IDE 를 정한 뒤, 첫 번째 프로그램을 컴파일·실행해 봅니다.

JavaJDK기초
#02

02. 변수와 타입

기초 · 선수: 이전 단원

변수는 데이터를 담는 "이름표가 붙은 상자" 입니다. Java 는 **정적 타입(static type)** 언어라서 변수마다 어떤 타입의 값을 담을지 선언 시점에 미리 정해야 합니다. 이 단원에서는 Java 의 기본(primitive) 8가지와 형변환, JDK 10+ 의 `var` 키워드를 살펴봅니다.

JavaJDK기초
#03

03. 연산자와 표현식

기초 · 선수: 이전 단원

연산자는 값(피연산자)을 받아 새로운 값을 만드는 기호입니다. Java 의 연산자는 C/C++ 에서 유래해 익숙한 모양이지만, **객체 비교(`==` vs `.equals()`)** 와 **정수/실수 나눗셈** 같은 함정이 있습니다. 이 단원에서 정리합니다.

JavaJDK기초
#04

04. 제어문

기초 · 선수: 이전 단원

코드의 흐름을 갈라거나 반복할 때 쓰는 문장이 **제어문(control flow)** 입니다. Java 의 제어문은 C 와 닮았지만, JDK 14+ 의 **switch expression** 처럼 모던한 형태도 함께 사용합니다.

JavaJDK기초
#05

05. 메서드

기초 · 선수: 이전 단원

메서드는 "이름이 붙은 코드 한 묶음" 입니다. 같은 일을 여러 번 해야 할 때 메서드로 분리하면 가독성과 재사용성이 동시에 좋아집니다. 이 단원에서는 메서드의 선언법, 오버로딩, `static` 의 의미, 가변 인자(`...`) 를 다룹니다.

JavaJDK기초
🧱

객체지향

5단원 · 클래스·캡슐화·상속·다형성·인터페이스

🧱
#06

06. 클래스와 객체

객체지향 · 선수: 이전 단원

Java 는 객체지향(OOP) 언어입니다. 데이터를 **클래스(class)** 로 정의하고, 그 청사진에서 **객체(object, 인스턴스)** 를 찍어 사용합니다. 이 단원에서는 클래스를 정의하고, 객체를 만들어 필드와 메서드를 다루는 가장 기본적인 흐름을 봅니다.

JavaOOP객체지향
🧱
#07

07. 캡슐화

객체지향 · 선수: 이전 단원

캡슐화(encapsulation) 는 객체의 **상태(필드)** 를 외부로부터 숨기고, 정해진 메서드(getter/setter, 또는 도메인 메서드) 로만 접근하게 만드는 OOP 원칙입니다. 이를 통해 잘못된 값으로 객체가 깨지는 것을 막고, 내부 구현을 자유롭게 바꿀 수 있는 여지가 생깁니다.

JavaOOP객체지향
🧱
#08

08. 상속

객체지향 · 선수: 이전 단원

상속(inheritance) 은 기존 클래스의 필드·메서드를 **물려받아** 새로운 클래스를 정의하는 OOP 메커니즘입니다. 부모(super) 가 정해 놓은 공통 동작을 자식(sub) 에서 그대로 쓰거나 일부만 재정의(`@Override`) 할 수 있어 코드 중복을 줄여 줍니다.

JavaOOP객체지향
🧱
#09

09. 다형성

객체지향 · 선수: 이전 단원

다형성(polymorphism) 은 같은 메시지(메서드 호출) 가 객체 종류에 따라 다른 동작을 하도록 만드는 OOP 의 핵심입니다. 부모 타입 변수에 다양한 자식 객체를 담아 두고, 호출 시점에 알맞은 구현이 자동 선택됩니다.

JavaOOP객체지향
🧱
#10

10. 인터페이스

객체지향 · 선수: 이전 단원

인터페이스(interface) 는 클래스가 "무엇을 할 수 있는지" 만 정한 **계약(contract)** 입니다. Java 의 클래스는 한 부모만 상속할 수 있지만, **인터페이스는 여러 개 구현(`implements`)** 할 수 있어 행위 조합이 자유롭습니다.

JavaOOP객체지향
📦

컬렉션 · 제네릭

4단원 · 배열·List/Set/Map·제네릭·Stream

📂

예외 · 입출력

3단원 · 예외처리·파일 IO·문자열 처리

모던 자바

5단원 · 람다·Optional·Date/Time·Maven/Gradle·JUnit

#18

18. 람다와 함수형

모던 자바 · 선수: 이전 단원

람다(lambda) 는 짧게 표현하는 **익명 함수** 입니다. JDK 8 이후 컬렉션·Stream·Spring 등 거의 모든 곳에서 만나는 핵심 문법입니다. 메서드 참조와 표준 함수형 인터페이스(`Function`/`Predicate`/`Consumer`/`Supplier`) 도 함께 익혀 둡니다.

Java모던함수형
#19

19. Optional

모던 자바 · 선수: 이전 단원

`Optional<T>` 은 "값이 있을 수도, 없을 수도 있다" 는 의미를 **타입** 으로 명시하는 컨테이너입니다. 반환값이 null 일 수 있는 메서드에 사용하면 호출자가 null 체크를 잊지 못하게 강제할 수 있어 NPE 를 줄여 줍니다.

Java모던함수형
#20

20. Date · Time

모던 자바 · 선수: 이전 단원

날짜·시간을 다루는 표준 API 는 JDK 8 부터 `java.time` 패키지로 대대적으로 개편되었습니다. 불변 객체, 명확한 의미, 시간대 처리까지 갖춰 이전의 `Date`/`Calendar` 보다 압도적으로 사용하기 쉽습니다.

Java모던함수형
#21

21. Maven · Gradle

모던 자바 · 선수: 이전 단원

지금까지는 `.java` 파일 한두 개를 직접 `javac` / `java` 로 다뤘습니다. 실무는 **빌드 도구** 가 의존성·컴파일·테스트·배포까지 자동화합니다. Java 진영의 양대 빌드 도구가 **Maven** 과 **Gradle** 입니다.

Java모던함수형
#22

22. JUnit 테스트

모던 자바 · 선수: 이전 단원

코드를 "잘 동작한다" 고 말하려면 **검증** 이 필요합니다. JUnit 5 는 Java 의 사실상 표준 테스트 프레임워크로, 짧고 명확한 어노테이션 기반 API 를 제공합니다.

Java모던함수형
🌱

Spring Boot

4단원 · 시작·REST·서비스 레이어·JPA