본문 바로가기

JAVA

(32)
Java 21의 새로운 기능 Java 21의 새로운 기능Java 21은 2023년 9월 19일에 출시된 LTS(장기 지원) 버전으로, 이전 버전인 Java 17 이후 새롭게 추가된 여러 기능과 개선사항을 포함하고 있습니다. 이 글에서는 Java 21의 주요 기능을 살펴보겠습니다.1. 개요Java 21은 새로운 기능과 언어 개선을 통해 개발자의 생산성을 높이고 코드의 가독성을 향상시키는 것을 목표로 합니다. 특히, **Java Enhancement Proposals (JEPs)**을 통해 추가된 여러 기능이 주목할 만합니다.2. 주요 기능2.1 레코드 패턴 (JEP 440)Java 21에서 레코드 패턴 기능이 정식으로 도입되었습니다. 이 기능은 레코드 클래스 인스턴스를 구조화해 보다 복잡한 데이터 쿼리를 작성할 수 있게 합니다. 또한..
Zulu JDK: 무료로 장기 지원을 받을 수 있는 최고의 Java JDK Zulu JDK는 Azul Systems에서 제공하는 무료 오픈 소스 JDK(자바 개발 키트)입니다. Zulu JDK는 OpenJDK 기반으로 만들어졌으며, Java SE(Standard Edition) 규격을 준수합니다. 이 JDK는 다양한 운영체제와 플랫폼에서 사용할 수 있으며, 상업적인 용도로도 자유롭게 사용할 수 있습니다.Zulu JDK의 주요 특징상업적 사용 가능: Zulu JDK는 기업에서 상업적으로 자유롭게 사용할 수 있습니다. 이는 상업적 지원이 필요한 회사들에게 유용합니다.장기 지원(LTS) 버전 제공: Azul은 Zulu JDK에 대해 장기 지원(LTS) 버전을 제공하여, 오랜 기간 동안 안정적인 업데이트와 보안 패치를 받을 수 있도록 합니다.다양한 플랫폼 지원: Zulu JDK는 다양..
HikariCP Oracle 데이터베이스와의 커넥션 유효성을 검사 성능 최적화!! oracle.jdbc.defaultConnectionValidation 설정은 HikariCP (JDBC 커넥션 풀링 라이브러리)에서 Oracle 데이터베이스와의 커넥션 유효성을 검사할 때 사용하는 설정 입니다. 기본적으로, HikariCP는 커넥션 풀에 있는 커넥션이 여전히 유효한지 확인하기 위해 여러 방법을 제공합니다. SOCKET: 소켓을 통해 연결 상태를 검사합니다.FAST: 기본적인 유효성 검사로, 연결이 유효한지 간단히 확인합니다.METADATA: 메타데이터를 사용하여 연결을 검사합니다.TABLE: 특정 테이블에 대해 간단한 쿼리를 실행하여 연결을 검사합니다.설정 방법구분내용 SOCKET 위에서 설명한 것처럼, SOCKET은 소켓을 통해 연결 상태를 검사합니다. 이는 네트워크 레벨에서 연결이 ..
ZGC 기본 개념 알아보기 ZGC (Z Garbage Collector)는 Java Virtual Machine (JVM)에서 사용되는 최신의 가비지 컬렉터 중 하나로, 대규모 애플리케이션에서의 낮은 지연 시간과 높은 처리량을 목표로 설계되었습니다. ZGC는 Java 11에 처음 도입되었으며, 계속해서 개선되고 있습니다. ZGC의 주요 특징과 작동 방식을 상세히 설명드리겠습니다.ZGC의 주요 특징저지연(Garbage Collection Pause Time): ZGC는 가비지 컬렉션으로 인한 지연 시간을 매우 짧게 유지하는 것이 특징입니다. 일반적으로 수 밀리초 이내로 유지되며, 이는 대규모 애플리케이션에서 매우 중요한 성능 요소입니다.대규모 힙 지원: ZGC는 테라바이트 단위의 대규모 힙 메모리까지 지원합니다. 이는 대용량 데이터..
[테스트] JaCoCo란 무엇인가? JaCoCo(Java Code Coverage)는 Java 애플리케이션의 코드 커버리지를 측정하는 데 사용되는 오픈 소스 도구입니다. JaCoCo는 코드의 어느 부분이 테스트되고, 어느 부분이 테스트되지 않는지에 대한 정보를 제공합니다. 이를 통해 테스트의 완성도를 평가하고, 테스트 커버리지를 개선할 수 있습니다.JaCoCo의 주요 기능코드 커버리지 측정: JaCoCo는 클래스, 메서드, 라인, 분기, 명령어 수준에서 코드 커버리지를 측정합니다.리포트 생성: HTML, XML, CSV 형식의 다양한 리포트를 생성하여 코드 커버리지 결과를 시각적으로 제공합니다.통합: Maven, Gradle, Ant, Jenkins와 같은 빌드 도구 및 CI/CD 시스템과 쉽게 통합할 수 있습니다.바이트코드 계측: JaC..
[TDD] UnitTest(단위 테스트)란 무엇인가? 단위 테스트(Unit Test)는 소프트웨어 개발 과정에서 개별적인 작은 코드 단위, 즉 "유닛(Unit)"을 독립적으로 검증하는 테스트 방법입니다. 여기서 유닛은 일반적으로 하나의 함수, 메서드, 클래스 또는 모듈을 의미합니다. 단위 테스트는 해당 유닛이 올바르게 작동하는지 확인하는 데 중점을 두며, 소프트웨어 품질을 유지하고 버그를 조기에 발견하는 데 중요한 역할을 합니다.단위 테스트의 주요 특징독립성:단위 테스트는 독립적으로 실행되어야 하며, 다른 테스트나 외부 시스템(예: 데이터베이스, 네트워크 등)에 의존하지 않아야 합니다.작은 범위:하나의 작은 코드 단위에 집중하여 테스트합니다. 이는 큰 시스템의 복잡성을 줄이고, 버그를 쉽게 식별할 수 있도록 돕습니다.자동화:단위 테스트는 자동화되어 자주 반..
[JAVA] Thread Local이란 무엇인가? 기본 개념부터 활용까지! Thread Local이란 무엇인가?ThreadLocal은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스입니다. 각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는 문제를 피할 수 있습니다.일반적으로 멀티스레딩 환경에서 공유 변수는 동기화가 필요합니다. 하지만 동기화는 성능에 영향을 미칠 수 있습니다. ThreadLocal을 사용하면 스레드마다 고유한 변수를 가질 수 있기 때문에 동기화가 필요 없습니다.ThreadLocal의 주요 메서드는 다음과 같습니다:get(): 현재 스레드의 값을 반환합니다.set(T value): 현재 스레드의 값을 설정합니다.remove(): 현재 스레드의 값을 삭제합니다.public class ThreadLoca..
[JAVA] JVM GC(Garbage Collection)이란 무엇인가? 대표 알고리즘 알아보기! JVM GC(가비지 컬렉션)의 개념**가비지 컬렉션(GC)**는 JVM(Java Virtual Machine)이 동적으로 할당된 메모리 중 더 이상 사용되지 않는 객체를 자동으로 식별하고 회수하는 메커니즘입니다. 이는 개발자가 명시적으로 메모리를 해제하는 번거로움을 덜어주며, 메모리 누수를 방지합니다.주요 개념과 단계힙(Heap) 메모리 관리JVM의 힙은 크게 Young Generation, Old Generation, 그리고 Permanent Generation (또는 Metaspace)으로 나뉩니다.Young Generation: 새로 생성된 객체가 저장되는 공간. 대부분의 객체는 여기에 생성되며, 수명이 짧습니다.Old Generation: Young Generation에서 살아남은 객체들이 이동되..