자바를 공부하다 보면 JVM 구조, JVM 메모리 영역, Runtime Data Area 같은 말을 정말 자주 보게 됩니다. 그런데 막상 설명을 읽어보면 용어가 비슷해서 Heap이 뭔지, Stack은 왜 필요한지, Method Area는 정확히 어디에 쓰이는지 한 번에 정리가 잘 안 되는 경우가 많습니다.특히 면접 준비나 실무 학습을 하다 보면 "JVM 메모리 구조 설명해보세요" 같은 질문을 자주 만나는데, 단순히 이름만 외우면 금방 헷갈립니다. 각 영역에 무엇이 저장되고, 언제 생성되고, 어떤 문제가 자주 발생하는지까지 같이 이해해야 제대로 기억에 남습니다.그래서 이번 글에서는 JVM의 전체 구조를 먼저 아주 쉽게 잡고, 그다음 Runtime Data Area를 기준으로 Method Area, Heap..
자바를 공부하다 보면 운영체제 개념처럼 보이던 프로세스(Process)와 스레드(Thread)가 갑자기 코드와 연결되기 시작합니다. 처음에는 둘 다 그냥 "동시에 뭔가 실행되는 것"처럼 느껴지지만, 막상 면접 질문이나 실무 코드로 들어가면 프로세스와 스레드의 차이, 자바에서 멀티스레딩을 왜 쓰는지, 그리고 어디서 위험해지는지까지 함께 이해해야 합니다.특히 자바에서는 Thread, Runnable, synchronized, ExecutorService 같은 키워드가 이어서 나오기 때문에, 프로세스/스레드 개념을 애매하게 잡아두면 그다음부터 계속 헷갈리기 쉽습니다. 게다가 실무에서는 단순히 스레드를 "만드는 법"보다, 스레드 풀을 어떻게 관리하는지, 공유 자원을 어떻게 안전하게 다루는지, 서버에서 어느 구간..
자바를 공부하다 보면 생각보다 빨리 마주치는 주제가 바로 컬렉션 프레임워크입니다. 데이터를 여러 개 저장해야 할 때 배열만으로는 불편한 경우가 많고, 그때부터 List, Set, Map 같은 타입이 본격적으로 등장하기 때문입니다.문제는 여기서부터 시작됩니다. List는 순서가 있다고 하고, Set은 중복이 없다고 하고, Map은 key와 value로 저장한다고 하는데, 막상 코드를 짤 때는 언제 무엇을 써야 하는지, ArrayList와 HashSet, HashMap은 어떤 차이인지, 실무에서 어떤 기준으로 선택하는지가 헷갈리기 쉽습니다.그래서 이 글에서는 자바 컬렉션 프레임워크를 처음 보는 사람도 이해할 수 있게 Collection Framework의 전체 구조부터, List, Set, Map 차이, 그..
REST API란 무엇일까?백엔드나 Java 웹 개발을 공부하다 보면 REST API, RESTful API라는 표현을 정말 자주 보게 됩니다. 특히 Spring Boot로 프로젝트를 시작하면 거의 기본처럼 등장하죠.그런데 처음 접하면 이런 생각이 듭니다.API는 알겠는데 REST는 뭐지?URL만 예쁘게 만들면 RESTful한 걸까?GET, POST만 잘 쓰면 되는 걸까?이번 글에서는 Java 기준으로 REST API가 무엇인지, 왜 쓰는지, 그리고 RESTful하게 설계할 때 어떤 원칙을 봐야 하는지를 쉽게 정리해보겠습니다.1. API와 REST를 먼저 구분해보자API란?API(Application Programming Interface)는 프로그램끼리 대화하는 창구라고 보면 됩니다.예를 들어,프론트엔..
SOLID란 무엇일까?Java를 공부하다 보면 객체지향 설계 원칙으로 SOLID라는 단어를 자주 보게 됩니다. 처음에는 영어 약자라서 어렵게 느껴지지만, 사실은 유지보수하기 좋은 코드를 만들기 위한 5가지 기준이라고 이해하면 됩니다.이번 글에서는 Java 기준으로 SOLID가 무엇인지, 왜 중요한지, 그리고 각 원칙을 예시와 함께 쉽게 정리해보겠습니다.1. SOLID란?SOLID는 객체지향 설계의 5가지 핵심 원칙의 앞글자를 모은 말입니다.S: SRP, 단일 책임 원칙O: OCP, 개방-폐쇄 원칙L: LSP, 리스코프 치환 원칙I: ISP, 인터페이스 분리 원칙D: DIP, 의존 역전 원칙이 원칙들은 복잡해 보이지만 결국 한 방향을 가리킵니다.코드를 수정하기 쉽고, 확장하기 쉽고, 덜 깨지게 만들자즉, ..
