오라클, 자바23 발표…기업 비즈니스 혁신 가속
오라클이 프로그래밍 언어 자바의 최신 버전 자바 23(Java 23)을 출시했다고 24일 밝혔다. 자바 23(오라클 JDK 23)은 개발자 생산성을 개선하고 혁신을 추진하기 위한 수천 가지 개선 사항을 제공한다. 또한, 플랫폼 성능, 안정성 및 보안이 향상되어 기업의 비즈니스 성장 가속화를 지원한다. 자바 23은 자바 관리 서비스(JMS) 9.0의 최신 GA에서 지원된다. 오라클 클라우드 인프라스트럭처(OCI) 네이티브 서비스인 JMS 9.0은 통합 콘솔 및 대시보드를 제공하여 온프레미스 혹은 클라우드 환경에서 자바 런타임 및 애플리케이션을 관리할 수 있다. JMS 9.0은 이외에도 다양한 사용성 개선 사항을 제공하며, 그랄(Graal) 컴파일러가 추가된 오라클 JDK 23는 최고 성능의 미세 조정 및 개선을 위한 더 많은 옵션을 제공한다. 그랄 컴파일러는 바이트코드를 최적화된 머신 코드로 변환해 주는, 자바로 작성된 동적 JIT 컴파일러다. 자바 23은 자바 언어, 런타임, 라이브러리, 자바 개발 키트(JDK)에 포함된 도구 전반에 대한 개선 및 기능 향상을 제공한다. 패턴, 인스턴스오브(instanceof), 스위치의 기본 타입(JEP 455, 미리보기)는 언어를 더욱 일관되고 표현력 있게 만들어 자바 프로그래밍 생산성 향상을 지원한다. 패턴 매칭, 인스턴스오브, 스위치 사용 시 개발자가 직면하는 기본 유형 관련 제한 사항을 제거하고, 모든 패턴 컨텍스트에 대해 기본 유형 패턴을 허용하여 패턴 매칭을 개선한다. 또한 인스턴스오브 및 스위치를 확장해 모든 기본 유형과 호환될 수 있도록 한다. 모듈 가져오기 선언(JEP 476, 미리보기)은 모듈이 내보내는 모든 패키지를 개발자가 신속하고 손쉽게 가져올 수 있도록 지원해 개발자 생산성을 개선한다. 이때 모듈 자체에 코드를 가져올 필요가 없다. 이 기능은 모든 개발자가 모듈러 라이브러리를 간편하게 재사용할 수 있도록 하며, 초보자의 경우 패키지 계층 내 각각의 위치를 익히지 않고도 서드파티 라이브러리와 기본 자바 클래스를 쉽게 사용할 수 있다. 암시적으로 선언된 클래스 및 인스턴스 메인 메서드(JEP 477, 세 번째 미리보기)는 학생들이 대규모 프로그램 개발을 위해 설계된 언어 기능을 이해할 필요 없이 첫 자바 프로그램을 작성할 수 있도록 하여 자바 프로그래밍 진입 장벽을 낮추고 학습 및 기술 개발을 원활하게 해 준다. 이를 통해 교육자는 점진적인 방식으로 관련 개념을 소개할 수 있고, 학생은 먼저 단일 클래스 프로그램에 대한 간소화된 선언을 작성한 후 프로그래밍 실력이 성장함에 따라 보다 고급 기능을 사용해 프로그램을 원활하게 확장할 수 있다. 숙련된 자바 개발자들 역시 대규모 프로젝트를 위해 설계된 도구를 사용하지 않고도 소규모 프로그램을 간결하게 작성할 수 있다. 유연한 생성자 본문(JEP 482, 두 번째 미리보기): 명시적인 생성자 호출 super(..), this(..) 등의 앞에 명령문이 나타나게 해 개발자 생산성을 높여준다. 명령문은 생성 중인 인스턴스를 참조할 수 없지만 다른 생성자를 호출하기 전에 해당 필드를 초기화할 수 있다. 이 과정은 메서드가 재정의될 때 클래스의 안정성을 향상시킨다. 이를 통해 개발자는 생성자의 동작을 보다 자유롭게 표현할 수 있으며, 클래스 인스턴스화 중에 생성자가 하향순으로 실행된다는 기존 보장도 유지할 수 있다. 클래스-파일 API(JEP 466, 두 번째 미리보기)는 자바 클래스 파일의 구문 분석(parsing), 생성, 변환용 표준 API를 제공하여 개발자의 생산성 향상에 도움을 준다. 벡터 API(JEP 469, 8차 인큐베이터)는 지원되는 CPU 아키텍처에서 벡터 명령어로 런타임에 안정적으로 컴파일되는 벡터 계산을 표현하는 API를 도입하여 개발자의 생산성을 향상시킨다. 그 결과, 개발자는 동등한 스칼라 계산보다 우수한 성능을 달성할 수 있다. 스트림 수집기(JEP 473, 두 번째 미리보기)는 스트림 API를 개선해 스트림 파이프라인이 기존의 내장형 중간 연산으로는 달성하기 어려운 방식으로 데이터를 변환할 수 있는 커스텀 중간 연산을 지원하고 개발자의 생산성 향상에 기여한다. 이 기능은 스트림 파이프라인을 더욱 유연하고 표현하기 쉽게 만들고, 커스텀 중간 연산을 통해 무한한 용량의 스트림을 조작할 수 있도록 해 개발자가 보다 효율적으로 자바 코드를 읽고, 쓰며 유지 관리할 수 있도록 한다. 구조화된 동시성(JEP 480, 세 번째 미리보기)는 구조화된 동시성을 위한 새로운 API를 통해 동시 프로그래밍을 간소화하여 개발자가 동시성 코드의 유지관리 용이성, 안정성, 관찰 가능성을 개선할 수 있도록 한다. 구조화된 동시성은 다양한 스레드에서 실행되는 관련 작업 그룹을 단일 작업 단위로 통합하여 스레드 유출 및 취소 지연 등 취소 및 종료로 인해 발생하는 일반적인 위험을 제거한다. 범위가 지정된 값(JEP 481, 세 번째 미리보기)은 스레드 내 또는 스레드 간에 변경 불가능한 데이터를 공유할 수 있도록 지원하여 개발자 프로젝트의 사용 편의성, 이해 가능성, 성능, 견고성을 향상시킨다. ZGC(JEP 474)는 세대별 모드를 기본 모드로 전환: 개발자가Z 가비지 컬렉터(ZGC) 모드의 기본 모드를 세대별 모드로 전환하여 효율성을 높일 수 있도록 지원한다. 모드 전환으로 두 개의 다른 모드 지원에 필요한 리소스 및 유지 관리 비용을 줄일 수 있다. 마크다운 문서화 주석(JEP 467)은 자바독(Javadoc) 문서화 주석을 HTML 및 자바독 @-태그로만 작성하는 대신 마크다운(Markdown)으로 작성할 수 있게 해 개발자의 효율성과 생산성을 높여준다. 마크다운 문법을 문서화 주석에 사용할 수 있게 됨으로써, 개발자는 API 문서화 주석을 소스 형태로 더 쉽게 작성하고 읽을 수 있으며, 기존 문서화 주석의 해석에 부정적인 영향을 미치지 않는다. 향후 삭제를 위한 sun.misc.unsafe의 메모리 접근 메서드 제거(JEP 471)는 향후 릴리스에서 제거될 예정인 sun.misc.unsafe의 메모리 접근 메서드에 애플리케이션이 직간접적으로 의존하는 지점을 파악하여 개발자에게 간소화된 툴셋을 제공한다. 오라클은 최근 개최된 오라클 클라우드월드에서 오라클 코드 어시스트(Oracle Code Assist)가 자바용으로 먼저 최적화될 것이라고 발표했다. 오라클 코드 어시스트는 자바 애플리케이션의 구축을 손쉽게 만들어 주는 AI 코딩 동반 툴이며, OCI에서 실행되는 오라클 코드 어시스트 서비스는 C, C++, 고(Go), 자바스크립트(Javascript), PL/SQL, 파이썬(Python), 루비(Ruby), 러스트(Rust)에서도 곧 이용할 수 있다. 이와 함께 2025년 샌프란시스코 베이 지역에서 글로벌 자바 커뮤니티를 위한 행사인 자바원이 다시 개최될 예정이다. 2025년 3월 18일부터 20일(현지 시각)까지 캘리포니아 레드우드 쇼어(Redwood Shores)에서 진행되는 자바원 2025는 자바 관련 최신 소식을 직접 듣고 오라클의 자바 전문가 및 업계 관계자들이 참석한다. 오라클 조지 사브 자바 플랫폼 부문 수석 부사장 겸 오픈JDK 이사회 의장은 “자바 23에 추가된 새로운 기능은 모든 수준의 개발자가 생산성을 높이고, 안전하며 확장 가능한 고성능 애플리케이션을 간단히 개발할 수 있도록 도와준다”면서 “개발자의 앱 구축 및 제공 속도와 효율성을 높이기 위해 설계된 광범위한 신기능 및 도구들을 통해 개발 팀과 그들이 속한 조직이 혁신을 주도하고 비즈니스 성장을 촉진할 수 있도록 지원한다”고 설명했다.