스프링을 스프링답게 만드는 진짜 이유: IoC·AOP·PSA 삼각형의 정체
·
스프링
0. 들어가며 스프링은 자바 기반의 오픈소스 프레임워크입니다.그리고 스프링은 단순히 편리한 기능을 제공하는 프레임워크가 아니라 자바로 객체지향 프로그래밍을 더 잘 할 수 있도록 도와주는 프레임워크입니다. 그 이유는 스프링의 뼈대에 IoC/DI, AOP, PSA, 그리고 POJO라는 핵심 개념들이 있기 때문입니다.이 개념들은 각각 독립적인 기능처럼 보이지만 결국 공통된 목적을 가지고 있습니다.바로 객체가 자신의 역할과 책임에만 집중할 수 있도록 만드는 것입니다. 그래서 스프링을 제대로 이해하기 위해서는 어노테이션이나 사용법을 익히는 것보다이른바 ‘스프링 삼각형’ 이라 불리는 IoC/DI, AOP, PSA 그리고 POJO를 먼저 이해하는 것이 중요하다고 느꼈습니다. 이 글은 「토비의 스프링」을 읽으며 스프..
SOLID 원칙 - 객제지향을 잘 하려면 SOLID를 기억해라
·
객채지향 개발론
0. 들어가며객체지향의 4대 특성(캡슐화, 상속, 추상화, 다형성)은 요리를 만들기 위한 불, 물, 칼과 같은 주방 도구라고 할 수 있습니다.물의 수압을 높이면 과일이나 채소를 자를 수도 있고 가스레인지 대신 과자 한 봉지의 열량으로도 물을 끓일 수 있으며, 젓가락 대신 나뭇가지를 깎아 사용할 수도 있습니다.하지만 과일이나 채소를 자를 때는 칼을 사용하는 것이 가장 좋은 방법이고, 음식을 조리할 때는 가스레인지와 냄비가 가장 적합합니다.아무리 좋은 도구가 있어도 올바르게 사용하지 않으면 요리를 만드는 과정은 비효율적일 수밖에 없습니다.도구를 올바르게 사용하는 법이 있는 것처럼 객체지향의 특성을 올바르게 사용하는 방법 역시 존재합니다.객체지향 언어를 이용해 객체지향 프로그램을 어떻게 설계해야 하는지에 대한..
Java 개발자가 꼭 알아야 할 버전별 특징 – 8 vs 11 vs 17
·
자바
0. 들어가며 자바는 비교적 역사가 오래된 언어로 1995년에 출시되어 30년에 가까운 오랜 시간 동안 다양한 환경과 요구에 맞추어 꾸준히 발전해 왔습니다.한 번 배우면 오랫동안 사용하게 되는 경우가 많은 만큼 자바를 둘러싼 기술 생태계 역시 한 세대의 변화로 끝나지 않고여러 버전이 공존하는 형태로 유지되고 있습니다.이러한 특성 때문에 자바를 사용하는 프로젝트를 진행할 때마다 어떤 자바 버전을 선택해야 할지에 대한 고민을 많이 하게 되었습니다.최신 버전을 사용하는 것이 최선일지, 아니면 안정성과 호환성을 고려해 기존 버전을 선택하는 것이 더 적절할지에 대해서는상황에 따라 판단이 필요하다고 느꼈습니다. 이 글에서는 자바의 주요 분기점이라 할 수 있는Java 8, Java 11, Java 17을 중심으..
Object가 왜 최상위 부모인지 이제는 알고 쓰자
·
자바
0. 들어가며 자바를 공부하면서 한 가지 궁금증이 생겼습니다.Object 클래스가 모든 클래스의 조상이라는 사실은 알고 있었지만왜 그런 구조로 설계되었는지 그리고Object 안에 정의된 메서드들이 왜 필요한지에 대해 생각해본 적은 없었습니다.그래서 이번 글에서는 JDK 공식 Object 문서를 참고해Object 클래스가 어떤 메서드들을 제공하는지,그리고 그런 메서드들이 자바에서 어떤 역할을 하며 왜 필요한지 정리해 보고자 합니다. 1. Object가 왜 최상위 부모인지 이제는 알고 쓰자Java로 개발을 하다 보면 toString(), equals(), hashCode()와 같은 메서드를 무심코 오버라이딩하며 사용하는 경우가 많습니다.하지만 정작 이 메서드들이 어디서 왔는지 그리고 왜 모든 클래스가 기..
[JVM 완전정복 #4] Garbage Collector 이해하기
·
자바
0. 들어가며지난 글에서 JVM의 Runtime Data Area(런타임 데이터 영역)에 대해 알아보았습니다.이번 글에서는 Java의 Heap영역에서 참조되지 않는 객체들의 메모리를 할당 해제하는 Garbage Collectoion에 대해 자세히 살펴보겠습니다.1.JVM 구성요소2. 자바 프로그램의 첫 관문 - 클래스 로더3.Runtime Data Area 완전분석: 메모리 구조와 각 영역 역할4. Execution Engine 완전정복: 인터프리터와 JIT의 비밀(예정) GC의 기본 작동 원리와 JVM에 탑재된 주요 GC(예: Minor GC, Major GC), 그리고 GC 과정에서 가장 중요한 개념인 Reachability와 Stop-the-World에 대해 다루겠습니다. 1. GC란?GC(Ga..
[JVM 완전정복 #3] Runtime Data Area 완전분석: 메모리 구조와 각 영역 역할
·
자바
0. 들어가며지난 글에서는 JVM의 클래스 로더(Class Loader)에 대해 알아보았습니다.이번 글에서는 JVM 내부에서 프로그램이 실제로 실행될 때 데이터를 어떻게 저장하고 관리하는지 즉 Runtime Data Area(런타임 데이터 영역)에 대해 자세히 살펴보겠습니다.Runtime Data Area는 JVM에서 자바 프로그램이 실행되는 동안 모든 데이터가 저장되고 CPU가 접근하는 핵심 메모리 공간입니다.이 영역을 이해하면 메모리 구조 성능 최적화 스레드 안전 문제 등을 더 깊이 이해할 수 있습니다.이번 글에서는 Runtime Data Area의 구성 요소와 각 역할 그리고 메모리 사용과 관련된 주의점까지 상세히 다루겠습니다.1. Runtime Data Area란?Runtime Data Area는..