오라클, 자바24 출시

오라클은 자바24(오라클JDK 24) 버전을 출시한다고 19일 밝혔다.

자바 24는 개발자의 생산성 극대화 및 혁신 추진을 지원하는 수천 가지 개선 사항을 포함한다.

오라클JDK14에서 자바 언어는 ‘패턴, 인스턴스오브, 스위치의 기본 유형(JEP 488, 두 번째 미리보기)’을 포함한다. 이는 더 균일하고 표현력이 풍부한 언어를 통해 개발자의 자바 프로그래밍 생산성 증대를 지원한다. 이 기능은 패턴 매칭, 인스턴스오브, 스위치 사용 시 개발자가 직면하는 기본 유형 관련 제한 사항들을 제거함으로써 패턴 매칭을 개선할 수 있게 해 준다. 또한 모든 패턴 컨텍스트에서 기본 유형 패턴을 허용하고 인스턴스오브 및 스위치 확장을 통해 모든 기본 유형과의 호환성을 제공한다. 애플리케이션에 AI 추론을 통합하는 경우 개발자들은 특히 이 기본 유형 지원 기능의 혜택을 누리게 된다.

유연한 생성자 본문(JEP 492, 세 번째 미리보기)은 생성자 본문 내에 별도로 두 개의 프롤로그 및 에필로그 단계를 도입해 개발자가 코드 안정성을 개선할 수 있게 지원한다. 이 기능은 개발자가 현재는 보조 정적 메서드, 보조 중간 생성자 또는 생성자 인수에 반드시 포함시켜야 하는 논리를 보다 자연스럽게 배치할 수 있게 지원한다. 또한 하위 클래스 생성자의 코드가 상위 클래스 인스턴스화를 방해하지 않는다는 기존의 보장을 유지하기 때문에 메서드가 오버라이드된 경우 클래스의 안정성을 향상시킨다.

‘모듈 임포트 선언(JEP 494, 두 번째 미리보기)’은 모듈 자체에 임포팅 코드가 없어도 모듈에서 엑스포트된 모든 패키지를 개발자가 신속하고 손쉽게 임포트할 수 있게 지원함으로써 개발자 생산성 개선을 돕는다. 이 기능은 모든 개발자의 모듈러 라이브러리 재사용을 간소화해 주고, 초보자들이 패키지 계층 내 제3자 라이브러리 및 기본 자바 클래스의 위치를 익히지 않고도 각각을 보다 손쉽게 사용할 수 있게 해 준다. 이 기능은 또한 비즈니스 논리를 네이티브 AI 추론, 라이브러리 또는 서비스 호출에 신속히 통합하고자 하는 개발자들에게 유용하다.

‘간단한 소스 파일 및 인스턴스 기본 메서드(JEP 495, 네 번째 미리보기)’는 학생들에게 자바 프로그래밍에 대한 손쉬운 접근성을 제공함으로써, 대규모 프로그램을 위해 설계된 언어 기능에 대한 이해 없이도 생애 첫 프로그램을 작성할 수 있게 지원한다. 교사 및 강사들은 점진적인 방식으로 관련 개념을 점진적으로 소개할 수 있고, 학생들은 먼저 단일 클래스 프로그램에 대한 간소화된 선언을 작성한 후 프로그래밍 실력이 성장함에 따라 보다 고급 기능을 활용해 프로그램을 원활하게 확장할 수 있게 된다. 숙련된 자바 개발자들 역시 대규모 프로젝트를 위해 설계된 도구를 사용하지 않고도 간결하고 효율적으로 소규모 프로그램을 작성할 수 있다.

자바 라이브러리에 ‘스트림 수집기(JEP 485, Stream Gatherers)’는 스트림 API를 개선해 커스텀 중간 연산을 지원함으로써 스트림 파이프라인이 기존의 내장형 중간 연산으로는 달성하기 어려운 방식으로 데이터를 변환할 수 있도록 지원하고, 결과적으로 개발자가 자바 코드를 보다 효율적으로 읽고, 쓰고, 유지 관리할 수 있게 지원하는 기능이다.

‘클래스-파일 API(JEP 484)’는 자바 클래스 파일의 구문 분석(parsing), 생성, 변환용 표준 API를 제공하고 자바 가상 머신(JVM) 사양에 정의된 클래스 파일 포맷을 추적함으로써 개발자의 생산성 향상을 지원한다.

‘범위가 지정된 값(JEP 487, 네 번째 미리보기)’은 스레드 내에서, 그리고 스레드 간에 변경 불가능한 데이터를 공유할 수 있도록 지원함으로써 개발자 프로젝트의 사용 편의성, 이해 가능성, 성능, 견고성을 향상시킨다.

벡터 API(JEP 489, 9차 인큐베이터)는 런타임에서 안정적으로 컴파일 되는, 벡터 연산을 표현하는 API를 지원되는 CPU 아키텍처의 벡터 명령에 도입해 개발자 생산성 향상을 지원한다. 이를 통해 개발자는 AI 추론 및 컴퓨트 시나리오에 자주 사용되는 동등한 스칼라 연산보다 우수한 성능을 확보할 수 있다.

구조화된 동시성(JEP 499, 네 번째 미리보기) API를 통해 동시 프로그래밍을 간소화함으로써 개발자가 동시성 코드의 유지관리 용이성, 안정성, 관찰 가능성을 개선할 수 있도록 한다. 구조화된 동시성은 다양한 스레드에서 실행 중인 관련 작업 그룹을 단일 작업 단위로 취급함으로써 스레드 누수 및 취소 지연 등 취소 및 종료로 인해 흔히 발생하는 위험을 최소화할 수 있게 해 준다.

보안 라이브러리는 키 추출 함수 API(JEP 478, 미리보기)’로 전송 중인 데이터에 대한 암호화 보안 기능을 제공한다. 개발자가 새로운 양자 컴퓨팅 환경에 대비할 수 있게 지원한다. 이 기능은 기밀성 및 커뮤니케이션 무결성을 향상시킨다.

양자 내성 모듈 격자 기반의 키 캡슐화 매커니즘(ML-KEM, JEP 496)의 구현을 제공함으로써 자바 애플리케이션 보안 강화를 지원한다. 이 기능은 자바 플랫폼을 위한 양자 내성 준비 및 궁극적인 양자 내성 암호화(PQC) 제공 지원을 위한 필수적인 단계로, 이는 키 캡슐화 매커니즘이 공용 키 암호화를 통해 비보안 커뮤니케이션 채널에서 대칭 키를 보호하는 데 사용되기 때문이다.

양자 내성 모듈 격자 기반의 디지털 사인 알고리즘(ML-DSA, JEP 497)의 구현을 제공함으로써 자바 애플리케이션 보안 강화를 지원한다. 디지털 사인은 데이터에 대한 무단 수정을 감지하고 서명자의 신원을 인증하는 데 사용되기 때문에 JEP 496과 마찬가지로 이 기능 역시 자바 플랫폼을 위한 양자 내성 준비 및 궁극적인 PQC 제공을 위해 중요한 단계다. ML-DSA는 미래의 양자 컴퓨팅 공격에 대비하기 위해 설계되었으며, 미국 국립표준기술연구소(NIST)의 FIPS 204를 바탕으로 표준화됐다.

도구 측면에서 ‘JMOD 없이 런타임 이미지 연결(JEP 493)’은 제이링크(jlink) 도구가 JDK의 JMOD 파일을 사용하지 않고도 커스텀 런타임 이미지를 생성할 수 있게 함으로써 개발자 효율성 개선을 지원한다. 이 방법으로 JDK의 크기를 약 25% 줄일 수 있다. 이를 통해 개발자는 독립형 JMOD 파일, 모듈식 JAR 파일, 이전에 링크된 런타임 이미지의 일부 등 모듈의 종류와 관계없이 모듈에서 런타임 이미지를 연결할 수 있다. 이 기능은 JDK 구축 단계에서 활성화돼야 하며, 기본으로 활성화되지 않는다. 일부 JDK 제공업체는 이 기능이 비활성화되도록 선택할 수 있다.

성능 및 런타임은 96에서 128비트 사이의 핫스팟 JVM 객체 헤더 크기를 64비트 아키텍처의 64비트로 줄임으로써 개발자가 생산성을 높일 수 있게 지원한다(JEP 450). 이를 통해 힙(heap) 크기를 줄이고, 배포 밀도를 개선하고, 데이터 지역성을 높일 수 있다. G1 가비지 컬렉터 장벽 확장을 C2 JIT 컴파일 파이프라인의 초반에서 후반으로 변경해 개발자 효율성을 높인다. 변경이 플랫폼별 최적화 및 레지스터 할당 후 이뤄지는 경우 오버헤드를 줄일 수 있다. 이 기능은 G1 가비지 컬렉터의 장벽 구현을 간소화함으로써 C2 생성 코드의 효율성, 이해가능성, 복원력, 품질 개선을 지원한다.

AOT 클래스 로딩 및 연결(JEP 483)을 제공한다. 핫스팟 자바 가상 머신 시동 시 애플리케이션의 클래스를 로딩 및 연결 상태에서 즉시 가용하게 함으로써 개발자의 생산성 증가 및 시동 시간 개선을 지원한다. 이 기능은 제이링크 또는 제이패키지(jpackage) 도구가 필요없으며, 명령줄을 통해 애플리케이션 시동 방식을 변경하거나 애플리케이션, 라이브러리, 프레임워크를 변경할 필요가 없다. 결과적으로 지속적인 시동 및 예열 시간 개선을 위한 기반 마련에 도움이 된다.

이밖에 ZGC: 비세대 모드 제거(JEP 490), 고정 없이 가상 스레드 동기화(JEP 491) 등도 포함한다.

소스 코드에서 세대별 컬렉션 기능을 통해 셴언도우(Shenandoah) 가비지 컬렉터를 개선했다. 윈도우 32비트 x86 포트를 제거했다.

오라클은 최신 보안 기능들을 도입하면서 안전하지 않은 기능들을 점진적으로 제거 및 지원 중단하고 있다. 오라클은 향후 자바 릴리즈에서 제거될 세 개의 기능(JEP 472: JNI 사용 제한 준비, JEP 486: 보안 관리자 영구 비활성화, JEP 498: sun.misc.Unsafe에서 메모리 액세스 메서드 사용 시 경고)을 지정했다.

자바 24를 오라클 클라우드 인프라스트럭처(OCI)의 자바 애플리케이션을 배포하면 더욱 향상된 혁신 기술, 성능, 효율성, 비용 절감 효과 등을 누릴 수 있다고 오라클은 강조한다. 오라클은 오라클 자바 SE, 오라클 그랄VM, 자바 SE 서브스크립션 엔터프라이즈 퍼포먼스 팩 등을 추가 비용 없이 OCI를 통해 제공한다.

오라클 자바 유니버설 SE 구독은 고객 지원 서비스로 자바 SE 서브스크립션 엔터프라이즈 퍼포먼스 팩, 전체 자바 포트폴리오에 대한 우선순위 기반 지원, 오라클 그랄VM 사용 권한, 자바 관리 서비스의 고급 기능에 대한 액세스, 고객사가 비즈니스 현황에 비례해 업그레이드할 수 있는 유연성 등을 포함한다.

조지 사브 오라클 자바 플랫폼 부문 수석 부사장 겸 오픈JDK(OpenJDK) 이사회 의장은 “지난 30년간 자바는 개발자들에게 종합 플랫폼을 제공해 광범위한 사용 사례를 다루는 애플리케이션의 구축 및 배포를 지원했다”며 “새로운 AI, 양자 내성 암호화 기능 등 자바의 모든 요소를 아우르는 20여 개 이상의 새로운 기능들을 통해 자바 24 릴리스는 혁신적인 AI 기반 애플리케이션 구축에 필요한 도구들을 개발자들에게 제공한다”고 밝혔다.

그는 “전 세계 자바 공동체와의 협업을 통해 6개월 주기의 예측 가능한 정기 릴리스 일정을 기반으로 새로운 기능들을 꾸준히 제공할 수 있어 기쁘다”고 강조했다.

글. 바이라인네트워크
<김우용 기자>yong2@byline.network

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다