본문 바로가기

dev/java14

JDK 24 새로운 기능 개요2025/03/18 JDK 24 GA 버전이 출시되었고, 이번 버전에 새롭게 추가된 기능에 대하여 간단히 알아본다. Features488: Primitive Types in Patterns, instanceof and swith (Second Preview)Java 24에서는 instanceof 연산자와 switch 표현식 및 명령문과 같은 모든 패턴 콘텍스트에서 기본 유형을(primitive types) 포함하도록 패턴 매칭을 확장한다. 이번 업데이트를 통해 객체(object) 및 기본 유형(primitive types) 모두에서 작업할 때 더 간결하고 읽기 쉬운 코드를 사용할 수 있다. instanceof 연산자와 switch 표현식 및 명령문은 모든 기본 유형에서 작동하도록 확장된다.Exampl.. 2025. 3. 30.
Using JSpecify Annotations 개요Spring Framework 7.0.0-M2 버전이 2025년 2월 13일에 공개 되었고(https://spring.io/blog/2025/02/13/spring-framework-7-0-0-M2-available-now) M2버전에서는 null safety(null 안정성 : null로부터 안전한 코드를 작성하는 것) 지원을 위해 JSpecify을 사용하도록 적용이 되었다. Spring Framework GIT에 소스 코드를 보면 JSpecity를 사용하여 null처리를 하도록 적용되어 있다.@NullMarkedpackage org.springframework.context;import org.jspecify.annotations.NullMarked;참고 : https://github.com/sp.. 2025. 2. 25.
JSpecify Nullness User Guide @NullMarkedpublic class NumberList implements List {...}개요Java의 타입 시스템은 null 안정성을 표현할 수 없다. 하지만 Spring Framework 코드 베이스는 API, 필드 및 타입 사용 시 nullness를 선언하기 위해 JSpecify 어노테이션을 사용하고 있다. 이러한 어노테이션과 의미에 익숙해지려면 JSpecify 사용자 가이드를 읽어 보는 것이 좋다.이러한 명시적 null 안정성의 주요 목표는 NullPointerException을 빌드 타입에 검사하여 런타임에 throw 되는 것을 방지하고 명시적 nullness를 사용하여 null의 가능성을 표현하는 방법으로 전환하는 것이다. Spring Framework에서 사용하는 JSpecify에.. 2025. 2. 19.
Win10 SDKMAN으로 JAVA 설치하기 개요JDK 설치는 IDE에서도 해주지만 graalvm을 사용한 Native build나 특별한 JDK가 필요한 경우는 별도 설치가 필요한데 SDKMAN을(https://sdkman.io/) 사용하면 원하는 JDK 버전을 쉽게 찾고 설치할 수 있다. Mac에서는 명령하나로 설치할 수 있지만 윈도우에서는 몇가지 설정이 필요하여 간단히 정리해본다. Getting started7-Zip 설치https://www.7-zip.org/ 에서 다운받아 설치해준다. 7-Zip 설치 위치에서 7z.exe 파일을 복사하여 zip.exe 파일로 이름을 변경한다. 시스템 속성에서 환경 변수에 Path항목에 7-Zip 위치를 추가한다. Git 설치https://git-scm.com/downloads/win에서 다운받아 설치한다... 2025. 1. 14.
Building a SpringBoot Monorepo with Gradle 개요Gradle을 사용하여 프로젝트를 Monorepo로 관리하는 방법에 대하여 설명한다. MonorepoMongorepo와 multi-repo에 대하여 장단점이 있지만 어떤 기술이나 그렇지만 프로젝트 상황에 맞게 선택해서 사용하도록 한다.두 방법에 차이와 장담점에 대해서는 아래 링크에 잘 설명되어 있다.https://www.thoughtworks.com/insights/blog/agile-engineering-practices/monorepo-vs-multirepo 개인적인 생각으로는 프로젝트 인원이 적은 경우 Monorepo가 더 효율적이었고, 깃 브랜치 전략에 따라서도 프로젝트 상황에 맞게 선택하면 좋다.  프로젝트 구조Java 프로젝트로 구성할 예정이고 Gradle로 프로젝트를 구성한다. shop .. 2024. 11. 6.
Java 23 : Structured Concurrency 개요Structured Concurrency는 서로 다른 스레드에서 실행되는 관련된 작업 그룹을 하나의 작업 단위로 처리하여 오류 처리와 작업 취소를 간소화하고, 안정성을 향상하며, 관찰성을 강화하는 방식이다. Java에서는 Structured concurrency를 위한 API를 도입하여 동시성 프로그래밍을 간소화함을 목표로 한다. Kotlin에서는 코루틴 구문을 사용하여 Structured Concurrency(구조적 동시성)을 지원하지만 자바에서는 아직 Preview 상태이고 Java 23에서도 아직 Preview 상태다. 하지만 이후 버전에서는 정식 기능으로 나오기를 희망한다. Motivation개발자는 task를 여러 개의 subtask로 나눠서 복잡성을 관리한다. 일반적인 단일 스레드 코드에서.. 2024. 9. 28.