본문 바로가기
IT/JAVA

Java 24 주요 기능 및 개선 사항

by 최고영회 2025. 4. 29.
728x90
반응형
SMALL

 

JDK 24는 성능 최적화, 언어 기능 개선, AI 및 시스템 프로그래밍 지원 강화 등 다양한 기능을 통해

Java 개발 환경을 더욱 향상시켰습니다.

특히, AI 애플리케이션 개발에 필요한 기능들이 추가되어,

최신 기술 트렌드에 부합하는 발전을 이루었습니다.

 

출처: oracle

 

주요 기능 및 개선 사항

1. JEP 483: Ahead-of-Time Class Loading & Linking

Java 애플리케이션의 시작 시간을 단축시키기 위해, 클래스 로딩과 링크 과정을 Ahead-of-Time(AOT) 방식으로 처리하는 기능입니다. 이를 통해 JVM 시작 시 클래스가 즉시 로드되고 링크되어 초기화 시간이 단축됩니다.

// 클래스를 AOT 컴파일하여 실행 속도 향상
// JVM 옵션을 통해 AOT 컴파일을 활성화
// 예: java -XX:AOTCompile=classes -cp . MyApp

public class MyApp {
    public static void main(String[] args) {
        System.out.println("Hello from AOT compiled Java");
    }
}
 

이렇게 클래스를 AOT 컴파일한 후, 애플리케이션을 실행하면 더 빠른 시작 시간을 경험할 수 있습니다.(실제로는 javac 및 java 명령어에서 -XX:AOTCompile 옵션을 설정해줘야함.)

 

 

2. JEP 485: Stream Gatherers

Stream API에 새로운 수집기(Collector)를 추가하여, 스트림의 요소를 더 효율적으로 수집할 수 있게 되었습니다. 이는 특히 대용량 데이터 처리 시 성능 향상에 기여합니다. ​

병렬 스트림이 최적화 되어 큰 데이터셋에 대해 더 효율적으로 처리할 수 있게 되었고 Stream 수집 시에 발생할 수 있는 불필요한 메모리 할당을 줄여 성능이 개선되었습니다.

 

 

3. JEP 491: Synchronize Virtual Threads without Pinning

가상 스레드의 동기화를 개선하여, 스레드가 특정 CPU 코어에 고정되지 않고 자유롭게 이동할 수 있도록 하여, 멀티코어 시스템에서의 성능을 최적화합니다.

public class VirtualThreadExample {
    public static void main(String[] args) {
        // 가상 스레드를 생성
        Runnable task = () -> {
            System.out.println("Running in virtual thread: " + Thread.currentThread().getName());
        };

        Thread virtualThread = Thread.ofVirtual().start(task);
        virtualThread.join(); // 메인 스레드가 종료될 때까지 기다림
    }
}
 

 

 

4. JEP 490: ZGC: Remove the Non-Generational Mode

ZGC(Garbage Collector)의 비세대 모드를 제거하여, 가비지 컬렉션의 효율성을 높이고, 메모리 관리 성능을 향상시켰습니다. ​

// ZGC를 활성화하여 메모리 성능 최적화

public class ZGCExample {
    public static void main(String[] args) {
        // JVM 옵션을 통해 ZGC를 활성화
        // 예: java -XX:+UseZGC -Xmx4g -Xms4g ZGCExample

        System.out.println("ZGC Garbage Collector Test");
    }
}
 

 

5. JEP 486: Permanently Disable the Security Manager

보안 관리자의 사용을 영구적으로 비활성화하여, 보안 정책을 대체할 수 있는 새로운 메커니즘을 도입하였습니다. 이는 보안 관리자의 복잡성을 줄이고, 더 나은 보안 모델을 제공합니다. ​

 

 

6. JEP 494: Module Import Declarations (Second Preview)

모듈 시스템에 import 선언 기능을 추가하여, 모듈 간 의존성을 명시적으로 관리할 수 있게 되었습니다. 이는 모듈화된 애플리케이션의 유지보수성을 향상시킵니다. ​

// 모듈 시스템에서 import 선언을 사용하여 모듈 의존성 명시

module mymodule {
    requires java.base;
    exports com.example;

    // 새로운 import 선언 기능
    import com.othermodule; // 다른 모듈에서 클래스 가져오기
}
 

 

 

7. JEP 495: Simple Source Files and Instance Main Methods (Fourth Preview)

Java 소스 파일의 구조를 단순화하고, 인스턴스 메인 메서드를 지원하여, 스크립트 기반 개발 환경에서의 Java 사용을 용이하게 만들었습니다.

// 인스턴스 메인 메서드를 사용하는 예시

public class InstanceMainExample {
    public void main(String[] args) {
        System.out.println("Running instance main method in JDK 24!");
    }

    public static void main(String[] args) {
        // 클래스의 main 메서드에서 인스턴스 메인 메서드를 호출
        new InstanceMainExample().main(args);
    }
}
 

 

AI 및 시스템 프로그래밍 지원 강화

JDK 24는 AI 애플리케이션 개발을 위한 기능도 강화되었습니다. 예를 들어, 원시 타입을 패턴 매칭 및 switch 문에서 사용할 수 있게 되어, AI 추론 결과와의 통합이 용이해졌습니다. 또한, 벡터 API(Vector API)가 9번째 인큐베이터 단계로 진입하여, AI 계산 시 성능을 최적화할 수 있습니다. ​

 

 

미리보기 및 실험적 기능

JDK 24에는 여러 미리보기 및 실험적 기능이 포함되어 있습니다:​

  • Flexible Constructor Bodies (Third Preview): 생성자의 본문을 더 유연하게 정의할 수 있는 기능입니다.
  • Scoped Values (Fourth Preview): 스코프 기반 값을 도입하여, 멀티스레딩 환경에서의 데이터 공유를 안전하게 처리할 수 있습니다.
  • Primitive Types in Patterns, instanceof, and switch (Second Preview): 패턴 매칭, instanceof, switch 문에서 원시 타입을 사용할 수 있게 되어, 코드의 간결성과 성능을 향상시킵니다.​
 

제거 및 변경된 기능

  • Windows 32-bit x86 포트 제거: 32비트 Windows 플랫폼에 대한 지원이 종료되었습니다.
  • Security Manager 영구 비활성화: 보안 관리자의 사용이 영구적으로 비활성화되어, 새로운 보안 모델로의 전환이 필요합니다.
  • Thread.countStackFrames 메서드 제거: 스레드의 스택 프레임 수를 반환하는 메서드가 제거되었습니다.​

 

 

다운로드 및 설치

JDK 24는 Oracle 공식 웹사이트에서 다운로드할 수 있습니다. 또한, OpenJDK 프로젝트 페이지를 통해 오픈 소스 빌드를 확인할 수 있습니다.​

 

 

향후 계획

JDK 25는 2025년 9월에 출시될 예정이며, 이는 Long-Term Support(LTS) 버전으로 제공될 계획입니다.

 

728x90
반응형
LIST