개발 플랫폼의 성능 향상된 '자바 22' 출시됐다

오라클, 자바 언어 및 API 성능 향상된 신규 버전 공개
12개의 JDK 개선 제안 등으로 명령문, 변수, 패턴 등 추가돼

 

[더테크=전수연 기자] 오라클(Oracle)이 자바 언어, 자바 API·성능, 자바 개발 키트(Java Development Kit, JDK)에 포함된 도구들의 개선 사항을 새롭게 제공한다.

 

오라클은 개발 플랫폼인 자바의 최신 버전 ‘자바 22(Java 22)’를 출시한다고 25일 밝혔다.

 

최신 JDK는 12개의 JDK 개선 제안(JDK Enhancement Proposals, JEPs)을 통한 업데이트, 개선 사항을 제공한다. 

 

JDK 22는 오픈JDK 프로젝트 앰버의 언어 개선 사항(super[…] 앞의 명령문, 언네임드(Unnamed) 변수·패턴, 문자열 템플릿, 암시적으로 선언된 클래스·인스턴스 메인 메서드), 프로젝트 파나마의 개선 사항(외부 함수·메모리 API, 벡터 API), 프로젝트 룸(Loom) 관련 기능(구조화된 동시성, 범위가 지정된 값), 코어 라이브러리·도구 기능(클래스-파일 API, 다중 파일 소스 코드 프로그램 실행·스트림 수집기), 성능 업데이트(G1용 영역 고정) 등을 제공한다.

 

이번 자바 22의 주요 업데이트 내역 중 프로젝트 앰버 기능은 개발자가 생성 중인 인스턴스를 참조하지 않는 명령문을 명시적 생성자 호출 앞에 표시할 수 있도록 허용해 보조 정적 메서드, 보조 중간 생성자, 생성자 인수에 팩토링 돼야 하는 로직을 자연스럽게 배치할 수 있도록 지원한다.

 

클래스 인스턴스화 도중 생성자가 하향식 순서로 실행된다는 기존 보장을 유지해 하위 클래스 생성자의 코드가 슈퍼 클래스 인스턴스화를 방해하지 못하도록 원천 방지한다. 개발자는 생성자 내에서 명시적 생성자 호출 이전에 나타나는 코드를 검증·실행할 수 있는 자바 가상 머신(JVM)의 기능만을 활용해 JVM을 변경할 필요 없이 바로 사용 가능하다.

 

언네임드 변수·패턴은 자바 언어를 개선해 개발자의 생산성을 향상시킬 수 있다. 변수 선언, 중첩 패턴이 요구되지만 실제로는 사용되지 않는 경우에도 활용할 수 있다.

 

JEP 문자열 템플릿은 런타임 시 연산된 값을 포함한 문자열을 쉽게 표현할 수 있게 해 자바 프로그램의 개발을 간소화하고 사용자가 제공한 값으로부터 문자열을 구성해 이를 다른 시스템으로 보낸다.

 

텍스트와 혼합된 표현식의 가독성이 향상됐고 중간 문자열 표현을 통한 변환 없이도 리터럴 텍스트·임베디드 표현식을 통해 연산된 비문자열 값을 생성할 수 있다.

 

클래스·인스턴스 메인 메서드는 자바 프로그래밍에 대한 진입 장벽을 낮춰주는 기술이다. 대규모 프로그램 개발을 위해 설계된 자바의 고급 언어 기능을 모두 알지 못하는 학생들이 자신의 첫 번째 자바 프로그램을 더 일찍 개발할 수 있도록 지원한다.

 

또한 프로젝트 룸 기능은 구조화된 동시성을 제공한다. 이는 개발자가 오류 처리·취소를 간소화하고 관찰 가능성을 개선할 수 있도록 지원한다. 개발자는 취소·종료로 인해 발생하는 위험(스레드 유출, 취소 지연)을 방지할 수 있는 동시성 프로그래밍 방식으로 동시성 코드의 관찰 가능성을 개선할 수 있다.

 

범위가 지정된 값 기능은 스레드 내에서 스레드 간 변경 불가능한 데이터를 공유할 수 있도록 지원함으로써 개발자 프로젝트의 사용 편의성, 이해 가능성, 성능, 견고성을 향상시켜 준다.

 

프로젝트 파나마 기능은 외부 함수·메모리 API 면에서 자바 프로그램이 자바 런타임 외부의 코드·데이터와 상호 운용할 수 있는 API를 도입함으로써 개발자를 위한 향상된 사용 편의성, 유연성, 안전성, 성능을 제공한다.

 

이번 API는 외부 함수(JVM 외부 코드)를 적용하고 외부 메모리(JVM이 관리하지 않는 메모리)에 접근함으로써 자바 프로그램이 자바 네이티브 인터페이스(JNI) 없이도 네이티브 라이브러리를 호출하거나 네이티브 데이터를 처리할 수 있도록 지원한다.

 

벡터 API는 벡터 연산을 표현할 수 있는 API를 제공한다. 개발자는 지원되는 CPU 아키텍처에서 최적의 벡터 명령어로 런타임에 컴피알되는 벡터 계산을 표현함으로써 상응하는 스칼라 연산보다 뛰어난 성능을 얻을 수 있다.

 

코어 라이브러리·도구 기능 중 클래스 파일 API는 자바 클래스 파일의 구문 분석, 생성, 변환용 표준 API를 제공함으로써 개발자의 생산성 향상을 지원한다. 다중 파일 소스 코드 프로그램 실행은 자바 애플리케이션 런처를 개선해 다수의 자바 소스 코드 파일 형식으로 제공되는 프로그램을 실행할 수 있도록 한다. 특히 빌드 도구의 구성 여부·시기를 개발자가 직접 선택할 수 있다.

 

스트림 수집기는 스트림 API를 개선해 커스텀 중간 작업을 지원함으로써 스트림 파이프라인이 기존의 내장형 중간 작업으로는 달성하기 어려운 방식으로 데이터를 변환할 수 있게 하고 결과적으로 개발자의 생산성 향상에 기여하는 기능이다.

 

이 기능은 스트림 파이프라인을 더욱 유연하고 표현하기 쉽게 만들며 커스텀 중간 연산을 통해 무한한 용량의 스트림을 조작할 수 있게 한다.

 

자바 22는 성능면에서 G!용 영역 고정을 지원한다. 이는 수집기를 일시 중지할 필요가 있는 일부 네이티브 라이브러리 호출 중에 일부 가비지 컬렉션을 수행하도록 허용해 지연 시간을 줄여주는 기능이다.

 

이 기능은 해당 네이티브 라이브러리를 호출하는 과정에서 차단해야 하는 오브젝트를 추적하고 해당 오브젝트가 포함된 영역만 고정하는 방식으로 작동한다. 고정되지 않은 영역에서는 정상적으로 가비지 컬렉션을 지속할 수 있으며 네이티브 라이브러리 호출을 차단할 필요가 없다.
 


관련기사

15건의 관련기사 더보기

배너