본문 바로가기

Java24

자바 코어 (4) – 예외 처리·버전 변화 프로젝트 중 느낀 자바 기초의 부족함을 보완하고자 핵심 주제를 순차적으로 복습할 예정입니다. 자바 코어 → 자바 스레드 → 자바 OOP → 자바의 예외 → 자바의 컬렉션 → 최대 절전 모드 순으로 정리할 예정입니다. 예외 처리·버전 변화 C++와 Java의 차이점은 무엇일까요?런타임 예외는 확인된 예외와 어떻게 다를까요?Java 5, 7 및 8에 각각 도입된 가장 중요한 기능은 무엇일까요? C++와 Java의 차이점은 무엇입니까? Java는 플랫폼 독립성과 자동 메모리 관리를 지원하는 반면, C++은 명시적인 메모리 관리가 필요하고 운영체제에 종속적입니다. Java는 포인터를 직접 사용할 수 없도록 제한하여 메모리 안전성을 높였으며, 런타임 시 JVM 위에서 동작하기 때문에 실행 속도는 C++에 비해.. 2025. 6. 7.
자바 코어 (3) – JVM과 플랫폼 독립성 프로젝트 중 느낀 자바 기초의 부족함을 보완하고자 핵심 주제를 순차적으로 복습할 예정입니다. 자바 코어 → 자바 스레드 → 자바 OOP → 자바의 예외 → 자바의 컬렉션 → 최대 절전 모드 순으로 정리할 예정입니다. JVM과 플랫폼 독립성 Java 플랫폼이 독립적인 이유는 무엇입니까?Java의 가장 중요한 기능은 무엇입니까?플랫폼 독립성이란 무엇을 의미합니까?JVM이란 무엇입니까?JVM은 플랫폼 독립적입니까?JDK와 JVM의 차이점은 무엇입니까?Java에서 this()와 super()의 차이점은 무엇입니까? Java 플랫폼이 독립적인 이유는 무엇입니까?Java 플랫폼이 독립적인 이유는 자바 프로그램이 직접 운엥체제나 CPU와 대화하지 않고 JVM이라는 가상의 하드웨어 위에서만 동작하도록 설계되었.. 2025. 6. 7.
자바 코어 (2) – OOP 기본 개념 프로젝트 중 느낀 자바 기초의 부족함을 보완하고자 핵심 주제를 순차적으로 복습할 예정입니다. 자바 코어 → 자바 스레드 → 자바 OOP → 자바의 예외 → 자바의 컬렉션 → 최대 절전 모드 순으로 정리할 예정입니다. OOP 기본 개념 목차 메서드 오버로딩과 메서드 재정의의 차이점은 무엇인가요?추상 클래스와 인터페이스의 차이점은 무엇이며 언제 서로를 사용할까요?Java는 다중 상속을 지원할까요?Java는 순수한 객체 지향 언어일까요? 메서드 오버로딩과 메서드 재정의의 차이점은 무엇인가요?메서드 오버로딩(Overloading)은 하나의 클래스 내에서 같은 이름의 메서드를 매개변수의 수나 타입을 다르게 하여 여러 개 정의하는 것을 의미하며, 컴파일 시점에 어떤 메서드가 호출될지 결정됩니다. 이는 컴파일 .. 2025. 6. 5.
자바 코어 (1) – Java 언어 기초 프로젝트를 진행하면서 조금은 소홀했던 자바 기초에 대해서 다시 한번 복습하고자 합니다. 자바 코어 → 자바 스레드 → 자바 OOP → 자바의 예외 → 자바의 컬렉션 → 최대 절전 모드 순으로 정리할 예정입니다. Java 언어 기초 목차자바에서 객체란?자바에서 바이트코드란?포인터란 무엇이며 Java는 포인터를 지원할까요?모든 클래스의 기본 클래스는 무엇일까요?Java는 정적 또는 동적으로 유형이 지정되는언어인가요?Java의 인수는 참조 또는 값으로 전달될까요?유니코드란? 자바에서 객체란? 자바에서 객체란 클래스의 인스턴스로, 현실에 존재하는 사물 또는 개념 등을 추상화한 것입니다. 객체는 상태(field)과 동작(method) 가지는데, 이를 통해 현실에서 존재하는 것들을 소프트웨어적으로 추상화할 수 있.. 2025. 6. 4.
JPA와 @Builder 사용 시 주의할 점 Lombok의 @Builder 어노테이션은 객체 생성 시 필드명을 명시적으로 지정할 수 있어 가독성을 높이고 유지보수를 쉽게 만들어 자주 사용합니다. 하지만 JPA(Entity 클래스)와 함께 사용할 때 몇 가지 주의해야 할 사항이 있습니다. JPA와 @Builder 사용 시 발생하는 문제JPA는 리플렉션(Reflection)을 사용하여 엔티티 객체를 생성합니다. 이 과정에서 기본 생성자(NoArgsConstructor)가 반드시 필요하지만, @Builder는 기본 생성자를 자동으로 생성하지 않습니다.@Builder는 모든 필드를 초기화하는 생성자만 생성하기 때문에, 기본 생성자가 없어 JPA가 엔티티를 인스턴스화할 때 에러가 발생할 수 있습니다. Hibernate 같은 JPA 구현체는 내부적으로 ne.. 2025. 2. 14.
Java CountDownLatch 동작 원리 문제의식동시성 테스트 코드를 작성하다가 여러 스레드를 동시에 실행해야 하는 상황이 있었다. 그때 CountDownLatch를 써서 해결했는데, 쓰다 보니 “도대체 내부에서는 어떻게 동작하지?” 라는 궁금증이 생겼다. 처음에는 그냥 “카운트가 0이 되면 대기 중인 스레드가 풀리는구나” 하고 넘어갔지만, 좀 더 뜯어보고 정리해보기로 했다. 핵심 개념 CountDownLatch는 사실 두 가지 개념으로 돌아간다.state(상태): 현재 남은 카운트 값queue(대기 큐): 기다리는 스레드들을 관리하는 구조state는 countDown() 메서드가 호출될 때마다 1씩 감소하다가, 0이 되면 대기 중인 모든 스레드를 깨운다.queue는 await() 메서드를 호출한 스레드들을 FIFO 방식으로 쌓아 두었다가, .. 2025. 1. 16.