본문 바로가기

JAVA

Java 24 출시! 개발자를 위한 주요 기능 및 예제 정리

728x90
반응형

2024년 3월 18일, **Java 24(Java SE 24)**가 공식 출시되었습니다. 이번 버전에서는 성능, 보안, 개발자 경험을 향상시키는 다양한 기능이 추가되었습니다. 특히, 패턴 매칭의 확장, 생성자 초기화 개선, 스트림 API 향상, 양자 저항 암호화 등 개발자가 주목해야 할 변화가 많습니다.

이 글에서는 Java 24의 주요 기능과 코드 예제를 통해 어떤 점이 개선되었는지 살펴보겠습니다. 또한, 가장 가까운 장기 지원(LTS) 버전인 Java 21과 비교하며, 실무에서 활용할 수 있는 팁도 함께 제공합니다.

반응형

1. Java 24 프리뷰 기능 활성화 방법

Java 24의 새로운 기능 중 일부는 프리뷰 기능으로 제공됩니다. 이를 사용하려면 컴파일 및 실행 시 추가 옵션을 지정해야 합니다.

# 컴파일 시
javac --enable-preview --release 24 YourClass.java

# 실행 시
java --enable-preview YourClass

2. 패턴 매칭: instanceof와 switch에서 기본 타입 지원 (JEP-488, 2차 프리뷰)

기존 문제: Java 22까지는 instanceof 패턴 매칭이 **참조 타입(Object)**에만 적용되었고, switch 문에서는 기본 타입을 지원하지 않았습니다.
Java 24 개선: 이제 기본 타입(primitive type)에서도 패턴 매칭을 사용할 수 있습니다.

🔹 예제 코드

int value = 42;
if (value instanceof int i && i > 5) { // 기본 타입도 instanceof 사용 가능
    System.out.println("5보다 큰 정수: " + i);
}

double d = 3.14;
switch (d) { // 기본 타입 switch 지원
    case 3.14 -> System.out.println("PI 값입니다.");
    case 2.71 -> System.out.println("오일러 수입니다.");
    default -> System.out.println("알 수 없는 상수입니다.");
}

3. 유연한 생성자 본문 (JEP-492, 3차 프리뷰)

기존 문제: 생성자에서 super()나 this() 호출은 반드시 첫 번째 문장이어야 했기 때문에, 검증 로직을 작성하기 어려웠습니다.
Java 24 개선: 생성자 호출 전에 초기화 및 검증 코드를 자유롭게 작성할 수 있습니다.

🔹 예제 코드

class Employee extends Person {
    Employee(String name) {
        if (name == null || name.isBlank()) { // super() 전에 검증 가능
            throw new IllegalArgumentException("이름은 비어 있을 수 없습니다.");
        }
        super(name);
    }
}

4. 모듈 임포트 선언 (JEP-494, 2차 프리뷰)

모듈에서 내보낸 모든 패키지를 단일 선언으로 한 번에 가져올 수 있도록 개선되었습니다.

🔹 예제 코드

import module java.base; // java.util 등 모든 패키지 임포트
public class BaseModuleExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        System.out.println("리스트 생성: " + list);
    }
}

5. 스트림 수집기 (Stream Gatherers, JEP-485)

기존 문제: 복잡한 변환이 필요한 경우 map()과 collect()를 조합해야 했습니다.
Java 24 개선: 새로운 gather() 메서드를 활용하여 더 직관적으로 스트림 변환이 가능합니다.

🔹 예제 코드

Stream<String> stream = Stream.of("a", "b", "c");
Stream<String> modified = stream.gather(
    () -> new StringBuilder(),
    (sb, s) -> sb.append(s.toUpperCase()),
    sb -> sb.toString()
);
modified.forEach(System.out::println); // 출력: A, B, C

6. 클래스 파일 API (JEP-484)

이제 클래스 파일을 분석하고 변환할 수 있는 표준 API를 제공합니다.

🔹 예제 코드

Path path = Path.of("Example.class");
byte[] bytes = Files.readAllBytes(path);
ClassFile cf = ClassFile.read(bytes);
System.out.println("클래스 이름: " + cf.thisClass());

7. 범위 값 (Scoped Values, JEP-487, 4차 프리뷰)

기존 문제: ThreadLocal을 사용할 경우 값이 올바르게 전달되지 않는 경우가 있었습니다.
Java 24 개선: ScopedValue를 활용하여 보다 안전하고 직관적인 방법으로 값을 전달할 수 있습니다.

🔹 예제 코드

private static final ScopedValue<String> USER_ID = ScopedValue.newInstance();
public static void main(String[] args) {
    ScopedValue.where(USER_ID, "user123").run(() -> {
        System.out.println("사용자 ID: " + USER_ID.get());
    });
}

8. 벡터 API (JEP-489, 9차 인큐베이터)

설명: 벡터 연산을 최적화하여 성능을 향상합니다.

🔹 예제 코드

float[] a = {1.0f, 2.0f, 3.0f}, b = {5.0f, 6.0f, 7.0f};
float[] c = new float[3];
var va = FloatVector.fromArray(SPECIES_PREFERRED, a, 0);
var vb = FloatVector.fromArray(SPECIES_PREFERRED, b, 0);
va.add(vb).intoArray(c, 0);

9. 양자 저항 암호화 (JEP-496, JEP-497)

Java 24에서는 양자 컴퓨터 공격에 대비한 보안 알고리즘을 추가했습니다.

🔹 ML-KEM (키 캡슐화) 예제

KeyPairGenerator kpg = KeyPairGenerator.getInstance("ML-KEM");
kpg.initialize(new NamedParameterSpec("ML-KEM-512"));
KeyPair kp = kpg.generateKeyPair();

🔹 ML-DSA (디지털 서명) 예제

Signature sig = Signature.getInstance("ML-DSA");
sig.initSign(kp.getPrivate());
sig.update(data);
byte[] signature = sig.sign();
728x90

📌  Java 24, 실무 개발에 어떻게 활용할까?

Java 24는 코드 가독성을 높이고, 성능을 최적화하며, 보안을 강화하는 데 초점을 맞추고 있습니다.

패턴 매칭 확장으로 instanceof와 switch가 더욱 강력해졌습니다.
생성자 검증 로직을 super() 호출 전에 수행할 수 있습니다.
스트림 API 개선으로 데이터 변환이 간편해졌습니다.
양자 저항 암호화로 미래 보안 위협에 대비할 수 있습니다.

https://javatechonline.com/java-24-new-features-with-examples/?fbclid=IwZXh0bgNhZW0CMTAAAR2LpC4IGZiV5Po_9HZegrs2q_4Rpk1NpNSVULIVf1LFwxWaLv-MlFne6Zg_aem_YOdvehlVYfaDP3WY0OX1Wg#How_to_enable_Preview_Features_of_Java_24

 

https://javatechonline.com/java-24-new-features-with-examples/?fbclid=IwZXh0bgNhZW0CMTAAAR2LpC4IGZiV5Po_9HZegrs2q_4Rpk1NpNSVULIVf1LFwxWaLv-MlFne6Zg_aem_YOdvehlVYfaDP3WY0OX1Wg#How_to_enable_Preview_Features_of_Java_24

Last Updated on March 23rd, 2025 Java Development Kit 24, the next version of Java Standard Edition, is now available as a production release on March 18, 2024. Java 24 introduces several noticeable features intended at enhancing the language’s capabili

javatechonline.com

728x90
반응형