자바 기초
전체 48강 · 7개 Phase. 순서대로 따라오면 돼요.
필수 과정
▸ Phase 1 · 프로그래밍 첫걸음 Hello World부터 메서드까지
Day 1 Day 1 — 개발 환경과 Java 소개개발 도구를 깔고 첫 프로그램을 직접 실행해보기 Day 2 Day 2 — 변수와 자료형데이터를 그릇에 담고 종류별로 다뤄 프로필 카드 만들기 Day 3 Day 3 — 연산자와 조건문상황을 판단해 조건에 따라 다르게 동작하는 프로그램 만들기 Day 4 Day 4 — 반복문복사 대신 같은 작업을 컴퓨터에 반복시키고 표 그래프 격자 만들기 Day 5 Day 5 — 배열같은 종류 데이터 여러 개를 한 이름에 담고 다루기 Day 6 Day 6 — 메서드반복되는 코드를 이름 붙여 묶고 재사용하는 법 Day 7 Day 7 — 첫 미니 프로젝트 — 인스타 사용자 관리 분석기배운 도구를 모아 인스타 분석기 한 프로그램 조립하기
▸ Phase 2 · 객체지향의 세계 클래스 · 상속 · 인터페이스
Day 8 Day 8 — 클래스와 객체 (1) — 흩어진 정보를 하나로 묶기흩어진 데이터를 설계도 하나로 묶어 객체로 다루기 Day 9 Day 9 — 클래스와 객체 (2) — 데이터에 행동을 붙이기데이터에 메서드를 붙여 객체가 자기 일을 직접 하게 만들기 Day 10 Day 10 — 상속 — 이미 만든 설계도를 물려받아 특화하기복붙 대신 부모 클래스를 물려받고 다른 점만 덧붙이기 Day 11 Day 11 — 다형성 — 부모 타입 하나로 여러 자식을 자유자재로 다루기부모 타입 하나로 여러 자식 객체를 골라 다루는 법 Day 12 Day 12 — 추상 클래스 — 직접 만들 수 없는 '뼈대 부모'직접 못 만드는 뼈대 부모로 자식에게 구현을 강제하기 Day 13 Day 13 — 인터페이스 — 여러 역할(약속)을 동시에 입히기한 클래스에 공유 가능 댓글 가능 같은 여러 역할을 동시에 입히기 Day 14 Day 14 — 캡슐화와 설계 원칙 — 좋은 클래스를 짜는 기준고치기 쉽고 안전한 클래스를 짜는 설계 기준 잡기 Day 15 Day 15 — Enum(열거형)과 어노테이션: 정해진 선택지를 코드로정해진 선택지만 안전하게 다루고 코드에 메모 붙이기 Day 16 Day 16 — 종합: 인스타그램 도메인 모델 설계 (Phase 2 캡스톤)흩어진 클래스들을 연관관계로 엮어 도메인 모델 완성하기
▸ Phase 3 · 자바 핵심 라이브러리 String · 컬렉션 · 예외 처리
Day 17 Day 17 — String과 래퍼 클래스문자열 비교와 불변 성질 다루고 숫자를 객체로 감싸기 Day 18 Day 18 — 컬렉션 (1): List와 ArrayList (배열 졸업)크기가 알아서 늘어나는 목록으로 배열의 답답함 졸업하기 Day 19 Day 19 — 컬렉션 (2): Set과 Map (중복 없는 명단, 이름표 사물함)중복을 거르고 이름표로 값을 바로 꺼내는 그릇 다루기 Day 20 Day 20 — 제네릭 (꺾쇠 <>의 정체, 내가 만드는 <T>)형변환 없이 안전한 나만의 타입 그릇 만들기 Day 21 Day 21 — 예외 처리 ① 잡기 (try-catch-finally, 예외의 족보)터진 예외를 try-catch로 잡아 프로그램이 멈추지 않게 하기 Day 22 Day 22 — 예외 처리 ② 던지고 전파 (throw / throws, checked vs unchecked)잘못된 값을 직접 막고 예외를 호출자에게 넘기는 법 Day 23 Day 23 — 예외 처리 ③: 나만의 예외를 설계하다사고 이름으로 구분되는 나만의 예외를 만들고 원인까지 지키기 Day 24 Day 24 — 종합: 인스타그램 서비스 계층을 조립하다저장소와 서비스로 나눠 인스타그램 핵심 기능 조립하기
▸ Phase 4 · 모던 자바 람다 · 스트림 · Record · Gradle · 복습
Day 25 Day 25 — 람다와 함수형 인터페이스: 동작을 인자로 넘기다코드 한 토막을 값처럼 메서드에 넘겨 반복을 줄이기 Day 26 Day 26 — Stream API (1): 데이터를 흐름으로 다루다컬렉션을 흐름으로 다뤄 거르고 바꾸고 줄세우기 Day 27 Day 27 — Stream API (2): 흐름의 결과를 모으다데이터 흐름의 결과를 개수 그룹 통계로 모으는 법 Day 28 Day 28 — Optional: null을 안전하게 다루기값이 없을 수도 있는 상자로 널 사고를 막는 법 Day 29 Day 29 — Record와 Sealed Class: 불변 데이터 클래스를 짧고 안전하게반복 코드 없이 값 객체를 한 줄로 만들고 정해진 종류만 안전하게 분기하기 Day 30 Day 30 — 모던 자바의 마지막 조각들: 텍스트 블록·가드 패턴·이름 없는 변수여러 줄 문자열과 가드 조건 분기로 알림 카드 만들기 Day 31 Day 31 — 빌드 도구 Gradle: IDE 'Run' 버튼 뒤의 비밀명령 한 줄로 라이브러리 받기 컴파일 실행을 자동화하기 Day 32 Day 32 — 전체 복습 + spring-boot 미리보기: 두뇌에 몸을 입히기 전에31일간 배운 조각을 한 프로그램에 엮어 직접 실행하고 spring-boot로 가는 다리 놓기
심화 과정 (선택)
▸ Phase 5 · 동시성과 I/O Thread · Virtual Thread · NIO
Day 33 Day 33 — Thread 기초: 스레드를 만들고 다루기한 프로그램 안 여러 흐름인 스레드를 만들고 멈추고 기다리고 중단하기 Day 34 Day 34 — 동시성의 함정: 경쟁 상태와 동기화동시에 건드리면 값이 꼬이는 경쟁 상태를 synchronized와 volatile로 막고 데드락 풀기 Day 35 Day 35 — java.util.concurrent: 스레드를 관리하자스레드를 직접 만들지 않고 스레드풀에 일을 맡겨 ExecutorService로 관리하기 Day 36 Day 36 — CompletableFuture: 비동기를 조합하자여러 비동기 작업을 CompletableFuture로 이어 붙이고 한꺼번에 병렬로 호출하기 Day 37 Day 37 — 가상 스레드: 막혀도 괜찮은 가벼운 스레드막혀도 부담 없는 가벼운 가상 스레드로 수많은 작업을 동시에 처리하기 Day 38 Day 38 — 파일 입출력: 프로그램에 "기억"을 남기는 java.io프로그램이 꺼져도 남도록 파일에 데이터를 읽고 쓰는 입출력 스트림 다루기 Day 39 Day 39 — 모던 파일 API: 한 줄로 끝내는 java.nioPath와 Files API로 파일 읽기 쓰기와 폴더 순회를 한 줄로 끝내기
▸ Phase 6 · 설계와 깊이 디자인 패턴 · JVM · 테스트
Day 40 Day 40 — 생성 패턴: 객체를 똑똑하게 만들어내기객체를 똑똑하게 찍어내는 싱글톤 빌더 팩토리 생성 패턴 익히기 Day 41 Day 41 — 행동 패턴: 행동을 갈아끼우고, 사건을 구독하기행동을 통째로 갈아끼우는 전략 패턴과 사건을 구독하는 옵저버 패턴 익히기 Day 42 Day 42 — 구조와 행동 패턴: 감싸고, 골격을 나누고, 순회하기기능을 덧입히는 데코레이터와 골격을 나누는 템플릿 메서드 순회까지 다루기 Day 43 Day 43 — JVM 메모리 구조와 가비지 컬렉션객체가 사는 힙과 스택을 들여다보고 가비지 컬렉터가 쓰레기를 치우는 원리 알기 Day 44 Day 44 — 메모리 누수 진단과 JVM 튜닝메모리 옵션과 GC 로그로 누수를 추적하고 VisualVM으로 힙을 들여다보기 Day 45 Day 45 — 클래스 로딩과 리플렉션클래스가 메모리에 올라오는 과정을 보고 리플렉션으로 스프링이 어노테이션 읽는 원리 맛보기