'Java' 카테고리의 글 목록 (2 Page)
jaemeon's note
Java
Java_23) Collections Framework (컬렉션 프레임워크)
2025.12.09
Topic (오늘의 주제)Java Collections Framework의 구조, 주요 컬렉션 타입(List, Set, Map, Queue)의 특징과 사용법, 그리고 각 컬렉션의 선택 기준을 이해한다.Why (왜 사용하는가? 왜 중요한가?)Collections Framework가 없으면 배열만으로 데이터를 관리해야 하며, 동적 크기 조절, 정렬, 검색 등의 기능을 직접 구현해야 합니다. 배열은 크기가 고정되어 있어 삽입/삭제가 비효율적이고, 중복 제거, 정렬, 검색 등의 기능을 매번 구현해야 하므로 코드 중복이 발생하고 유지보수가 어려워집니다.Collections Framework는 다양한 데이터 구조를 표준화된 인터페이스로 제공하여 개발 생산성을 크게 향상시킵니다. List, Set, Map, Queu..
Java
Java_22) SOLID 원칙
2025.12.08
SOLID 원칙의 정의, 각 원칙의 목적과 이유, 그리고 실무에서 어떻게 적용해야 하는지에 대해 개념적으로 이해한다.Why (왜 사용하는가? 왜 중요한가?)SOLID 원칙이 없으면 객체지향 설계의 핵심 가치인 유지보수성, 확장성, 재사용성이 크게 저하됩니다. 단일 책임 원칙 위반으로 인한 거대한 클래스, 개방-폐쇄 원칙 위반으로 인한 기존 코드 수정의 연쇄 반응, 리스코프 치환 원칙 위반으로 인한 상속 계층 구조의 불안정성, 인터페이스 분리 원칙 위반으로 인한 불필요한 의존성, 의존 관계 역전 원칙 위반으로 인한 하위 레벨 변화의 상위 전파 등이 발생하여 코드의 복잡도가 급증하고 변경에 취약한 시스템이 됩니다.SOLID 원칙은 객체지향 설계의 품질을 보장하는 핵심 가이드라인으로, 각 원칙이 서로 연관되어..
Java
Java_21) 상속과 컴포지션 (Inheritance vs Composition)
2025.12.02
Topic (오늘의 주제)상속과 컴포지션의 차이를 이해하고, 언제 어떤 것을 사용해야 하는지 개념적으로 이해한다.Why (왜 사용하는가? 왜 중요한가?)상속을 단순 코드 재사용 목적으로 사용하면 취약한 기본 클래스 문제, 불필요한 메서드 노출 문제 등이 발생합니다. 상속을 남용하면 하위 클래스가 상위 클래스의 구현에 강하게 의존하여 캡슐화가 깨지고, 상위 클래스의 변경이 모든 하위 클래스에 영향을 미칩니다. 또한 클라이언트가 기대하지 않는 메서드까지 노출되어 예상치 못한 버그가 발생할 수 있습니다.컴포지션은 코드 재사용을 위한 더 안전한 방법을 제공합니다. 객체를 포함하는 방식으로 구현하여 캡슐화를 지키고, 내부 구현 변경에 대한 영향을 최소화합니다. 필요한 기능만 선택적으로 노출할 수 있어 인터페이스를..
Java
Java_20) 자바 예외 처리 (Exception)
2025.12.01
Why (왜 사용하는가? 왜 중요한가?)예외 처리를 제대로 하지 않으면 프로그램이 예기치 않게 종료되어 사용자 경험이 나빠지고, 시스템 안정성이 떨어집니다. 네트워크 오류, 파일 I/O 오류, 데이터베이스 연결 실패 등 다양한 예외 상황을 처리하지 못하면 프로덕션 환경에서 심각한 문제가 발생할 수 있습니다. 또한 예외를 적절히 처리하고 로깅하지 않으면 디버깅이 매우 어려워집니다.예외 처리는 프로그램의 안정성과 신뢰성을 보장하는 핵심 메커니즘입니다. 정상적인 실행 흐름과 예외 상황을 분리하여 코드의 가독성과 유지보수성을 높이고, 예외 정보를 통해 문제의 원인을 파악하고 적절한 복구 전략을 수립할 수 있게 합니다. 체크 예외와 언체크 예외의 구분을 통해 컴파일 타임에 예외 처리를 강제하거나 선택적으로 처리할..
Java
Java_19) 자바는 컴파일 언어인가 인터프리터 언어인가?
2025.12.01
Why (왜 사용하는가? 왜 중요한가?)Java의 실행 방식을 이해하지 못하면 성능 최적화, 디버깅, 배포 전략을 수립하기 어렵습니다. 컴파일 언어와 인터프리터 언어의 차이를 모르면 왜 Java가 초기 실행 속도가 느릴 수 있는지, JIT 컴파일러가 왜 중요한지 이해할 수 없습니다. 또한 다른 언어(C/C++, Python, JavaScript)와의 차이점을 명확히 구분하지 못해 적절한 언어 선택을 할 수 없습니다.Java는 컴파일과 인터프리터의 장점을 결합한 하이브리드 방식을 채택하여 플랫폼 독립성과 성능을 동시에 확보합니다. 소스 코드를 바이트코드로 컴파일하여 플랫폼 독립성을 제공하고, 런타임에 JVM이 바이트코드를 해석하거나 JIT 컴파일하여 실행 속도를 최적화합니다. 이는 "Write Once, ..