Java
운영 방식
- 이 문서는 Java Core 학습 인덱스로만 사용한다.
- 상세 내용은
01-core/java/ 아래 개념별 문서로 나눈다.
- 학습한 내용은 하나의 작은 문서에 정리한다.
- 아직 학습하지 않은 내용을 미리 길게 채우지 않는다.
- 각 개념 문서는 한 줄 정의, 동작 원리, 실무 주의점, 기술 답변을 중심으로 작성한다.
학습 산출물
- 다룰 개념 또는 문제 상황 하나를 고른다.
- 실제 개발자가 마주치는 증상, 원인, 확인 방법을 먼저 쓴다.
- 해결책은 장점과 한계를 같이 적는다.
- 마지막에 핵심 요약과 꼬리 질문을 남긴다.
학습 순서
- Java 언어 기본기
- Java 컬렉션
- Java 버전별 핵심 변화
- Reflection과 프레임워크 기반
- JVM 기본 구조
- Java 동시성 기본
- GC
- 실무 연결
핵심 질문
- Java를 실무에서 왜 사용하는가?
- Java 언어 기능은 어떤 문제를 줄이기 위해 발전해 왔는가?
- 제네릭은 컴파일 타임 타입 안정성을 어떻게 제공하고, 타입 소거는 어떤 한계를 만드는가?
- JVM은 Java 코드를 어떻게 실행하는가?
- Reflection과 Annotation은 Spring, JPA, Jackson에서 어떻게 사용되는가?
- Java Memory Model에서 visibility, atomicity, happens-before는 왜 중요한가?
- Thread pool과 ExecutorService는 왜 직접 Thread 생성보다 실무에 적합한가?
- GC는 언제 성능 문제가 되는가?
- 이 주제의 핵심 동작 원리는 무엇인가?
- 실무에서 자주 발생하는 문제는 무엇인가?
- 어떤 상황에서 주의해야 하는가?
- 질문을 받으면 어떻게 설명할 수 있는가?
실무 관점
- Java는 문법보다 JVM, 메모리, 컬렉션, 동시성 이해가 실무 품질에 더 큰 영향을 준다.
- 버전별 기능은 단순 암기보다 “어떤 코드를 더 안전하고 읽기 쉽게 만드는가”로 정리한다.
- 제네릭, Reflection, Annotation은 Spring/JPA/Jackson 같은 프레임워크 동작 원리를 이해하는 기반이다.
- Java 동시성은
Thread API보다 실행 모델, 공유 상태, visibility, pool 관리 기준을 중심으로 이해한다.
- GC는 대부분 기본 설정으로 충분하지만, 지연 시간, 처리량, 메모리 사용량 문제가 생기면 원리를 알아야 분석할 수 있다.
- Spring, JPA, 동시성, 성능 문제는 Java Core 이해 부족에서 시작되는 경우가 많다.
관련 문서