Java(38)
-
Spring Boot 3.0 변경점
Java 지원 버전 변화Spring Boot 3.0부터는 Java 17버전 이상만 지원합니다.Java EE -> JakartaEE로 대체GraalVM기반의 Spring Native 공식 지원AOT 컴파일 지원: 기존의 JIT Compiler는 런타임에 바이트코드를 기계어로 변환하지만 AOT 컴파일로 빌드 타임에 정적 컴파일링어플리케이션 시작 시간과 메모리 사용량 감소OS에 맞는 기계어를 빌드타임에 컴파일하기 때문에 독립 실행 파일로 배포/실행 가능(JVM 불필요)'/api/hello'와 '/api/hello/'가 이제 불일치로깅 Datetime의 Default format 변경Logback 및 Log4j2의 default 로그 DatetimeFormatdl ISO-8601 표준에 맞게 변경됩니다.yyyy..
2025.07.17 -
Synchronized & ReentrantLock
SynchronizedSynchronized란 현재 데이터를 사용하고 있는 해당 스레드를 제외하고 나머지 스레드들은 데이터에 접근할 수 없도록 막기 위해 사용하는 키워드입니다.Synchronized 특징스레드가 Synchronized 키워드가 붙은 메서드에 진입하려면 해당 객체의 락을 획득해야합니다.락을 획득하지 못한 스레드는 RUNNABLE 상태에서 BLOCKED 상태로 전환됩니다. 락을 획득할 때까지 대기하며, 이 동안 CPU 실행 스케줄링에서 지외됩니다.여러 스레드가 대기 중일 경우, 락 획득 순서는 보장되지 않습니다.Synchronized 블록 안에서는 변수의 메모리 가시성 문제가 자동으로 해결되므로 별도의 volatile 선언이 필요하지 않습니다.Synchronized의 단점BLOCKED 상태의..
2025.07.15 -
Java Virtual Thread
Virtual ThreadJava 21에서 정식으로 도입된 Virtual Thread는 기존의 Kernel-level thread와 User-level thread를 1:1 매핑하여 사용하는 JVM 스레드 모델을 개선한 여러 개의 가상 스레드를 하나의 네이티브 스레드에 할당하여 사용하는 방법입니다.Java ThreadJava thread는 ExecutorService를 두어 JVM 내부에서 스레드를 관리/실행합니다. 이렇게 ExecutorService를 통해 스케줄링되는 Thread는 JVM을 통해 커널 스레드를 만들어 실행합니다.Virtual Thread란Virtual Thread는 기존 Kernel thread(1) : User thread(1)의 구조가 아니라 Kernel thread(1): Use..
2025.07.12 -
Java 19
레코드 패턴 매칭(프리뷰)기존에는 instanceof를 통해 해당 객체인지 확인 후, 형변환을 통해 객체를 사용해야 했습니다.record Point(int x, int y) {}public void test(Object o) { if (o instanceof Point) { Point p = (Point) o; ... }}하지만 레코드 패턴 매칭을 통해 형변환 로직을 제거하고 record의 구성요소를 직접 추출해서 사용할 수 있습니다.public void test1(Object o) { if (o instanceof Point p) { int sum = p.x + p.y; ... }}public void test2(Object o) ..
2025.05.14 -
Java 18
Java API CharsetJava API의 기본 Charset이 UTF-8로 지정되었습니다.간단한 웹 서버를 제공하는 커맨드라인 툴 제공정적 파일만 제공하는 간단한 웹 서버를 시작할 수 있는 새로운 커맨드라인 툴을 제공합니다.참고로 우리가 일반적으로 사용하고 있는 Apache, Nginx과 같이 실무에 사용할 수 있는 수준의 서버는 아닙니다.해당 서버는 테스트, 개발 및 디버깅 용으로 사용할 수 있습니다.jwebserver -p 9000@Snippet 어노테이션 추가Java Document 주석/** */에 @Snippet 어노테이션이 추가되었습니다.finally 구문 deprecatejava의 에러핸들링을 위한 try ~ catch ~ finally 구문이 있습니다.try { ...} cat..
2025.05.07 -
Spring boot jar 파일 실행시 profile 적용
기존에 제가 담당하던 시스템을 매우 Legacy한 시스템입니다.최근에 spring boot를 적용하고 생성된 jar 파일을 실행시키는데 profile이 제대로 적용되지 않는 상황이 발생했습니다.여러 자료들을 찾아보니 jar 파일을 실행새키면서 profile을 적용하는 방법은 총 2가지가 있었습니다.Java System Propertiesjava -jar -Dspring.profiles.active={프로파일} 파일위치 java option현 구조에서 주의해야할 사항은 -Dspring.profiles.active 옵션이 파일 위치보다 앞에 있어야 합니다. 만약 그렇지 않다면 실행시 profile을 인식하지 못 합니다.Program Argumentsjava -jar 파일 위치 --spring.profiles..
2024.12.21