Java Virtual Machine (JVM)은 OS에 상관없이 CPU가 자바를 실행할 수 있게 해주는 가상 컴퓨터이다. 컴파일 .java 확장자를 가진 소스 코드는 CPU가 직접 이해할 수 없는 형태이기 때문에, 실행 전에 기계어로의 변환 과정이 필요하다. 그러나
자바8 버전을 기점으로 힙메모리 구조가 변경되었다. 어떠한 점이 변경되었는지, 각 구조의 역할은 무엇인지 알아보자.메모리에 객체가 생성되면 end 영역에 객체가 지정된다.eden 영역에 객체가 가득 차면 eden에 있던 객체가 s0 또는 s1에 옮겨진다. 두 영역의 우
자바에서 아래와 같은 JSON 데이터를 파싱하는 메서드를 구현하는 도중 IDE에서 다음과 같은 알림?이 왔다. 내용을 해석해 보면 "이 메서드는 예외가 발생할 수 있으니까 네가 반드시 처리해줘야 해" 이런 의미인데 찾아보니 다음과 같은 예외들을 검색해보니 체크 에러라
어플리케이션 레이어의 유스케이스에서 비즈니스 로직을 처리한 뒤, 도메인 객체를 반환하는 과정에서 흥미로운 상황이 발생했다. 내가 정의한 도메인 엔티티는 생성자의 접근 제어자가 private으로 설정되어 있어서, 외부에서 직접 인스턴스를 생성할 수 없었다. 그래서 아래 이미지처럼, 해당 엔티티 내부에 정적(static) 팩토리 메서드를 정의해 외부에서 인...
클래스 기반 언어로 개발을 진행하면서 클래스를 이해하기 위해 사용했던 비유들을 정리한다. 클래스와 객체 | 개념 | 비유 설명 | |--------|--------------------------------
개발을 진행하다 보면 프로그램 전반에서 공유되는 전역 객체를 만들어야 할 때가 있다. 이때 static으로 할지, Singleton으로 할지 고민하는 경우가 많지만 실제로는 명확한 기준 없이 느낌에 따라 결정하는 경우가 많다. 개인적으로 프로그래밍에서 근거 있는 선택은 매우 중요하다고 생각한다.. 그래서 이번 기회에 static과 Singleton의 ...