본문 바로가기

JAVA

Java 21의 새로운 기능

728x90
반응형

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에서 레코드 패턴 기능이 정식으로 도입되었습니다. 이 기능은 레코드 클래스 인스턴스를 구조화해 보다 복잡한 데이터 쿼리를 작성할 수 있게 합니다. 또한, 중첩 패턴을 지원하여 데이터 쿼리를 더 유연하게 구성할 수 있습니다.

record Point(int x, int y) {}

public static int afterRecordPattern(Object obj) {
    if(obj instanceof Point(int x, int y)) {
        return x + y;
    }
    return 0;
}

위 코드에서 Point 객체를 패턴 매칭하여 더 간결한 코드를 작성할 수 있습니다.

2.2 스위치 패턴 매칭 (JEP 441)

스위치 패턴 매칭은 스위치 케이스 레이블에서 패턴을 사용할 수 있게 하여 스위치 문과 표현식의 표현력을 개선합니다. 특히, 널 포인터 예외를 처리하기 위해 null 케이스 레이블을 허용하는 기능이 추가되었습니다.

switch (account) {
    case null -> throw new RuntimeException("계정이 null입니다");
    case SavingsAccount sa -> result = sa.getSavings();
    case TermAccount ta -> result = ta.getTermAccount();
    case CurrentAccount ca -> result = ca.getCurrentAccount();
    default -> result = account.getBalance();
}

이 코드에서는 각 계정 유형에 따라 다른 로직을 간결하게 처리할 수 있습니다.

반응형

2.3 문자열 템플릿 (JEP 430)

Java 21에서는 문자열 템플릿 기능이 도입되었습니다. 이 기능은 문자열 리터럴과 표현식을 결합하여 원하는 결과를 생성할 수 있도록 합니다.

String name = "Baeldung";
String welcomeText = STR."Welcome to \{name}";
System.out.println(welcomeText);

위 코드에서 템플릿 프로세서(STR)를 사용하여 텍스트와 변수를 결합한 결과를 출력할 수 있습니다.

2.4 가상 스레드 (JEP 444)

가상 스레드는 Java 19에서 미리보기 기능으로 소개되었으며, Java 21에서 개선된 기능입니다. 가상 스레드는 경량 스레드로, 고성능의 동시성 애플리케이션을 개발하는데 도움을 줍니다. 가상 스레드는 특정 OS 스레드에 얽매이지 않고, 많은 가상 스레드가 OS 스레드를 공유하여 코드를 실행할 수 있습니다.

Runnable task = () -> System.out.println("Hello from a virtual thread!");
Thread vThread = Thread.ofVirtual().start(task);
vThread.join();

이 코드는 가상 스레드를 사용하여 태스크를 실행하는 예시입니다.

728x90

 

728x90
반응형