곧 출시될 표준 Java의 장기 지원 릴리스인 JDK(Java Development Kit) 21은 9월로 예정되어 있으며 시퀀스 컬렉션, 가상 스레드, 문자열 템플릿, 외부 함수 및 메모리 API(프리뷰)를 포함합니다. 이러한 기능은 쓰기에서 처리량이 많은 동시 응용 프로그램 유지 및 모니터링에 이르는 영역에서 개발자의 경험을 향상하도록 설정되었습니다.
아직 JDK 21의 릴리스 페이지에 공식적으로 나열되지는 않았지만 최근 외부 기능 및 메모리 API 프리뷰가 추가된 것으로 추정됩니다. 이 API를 사용하면 Java 프로그램이 Java 런타임 이외의 코드 및 데이터와 원활하게 상호 운용할 수 있습니다. 외부 기능과의 효율적인 통신 및 외부 메모리에 대한 안전한 액세스를 허용하여 Java 프로그램이 JNI(Java Native Interface)로 인한 취약성과 위험 없이 네이티브 라이브러리와 상호 작용하고 네이티브 데이터를 처리할 수 있도록 합니다.
앞서 외부 함수와 메모리 API는 지난해 3월과 9월 각각 출시된 JDK 20과 JDK 19에서 프리뷰된 바 있다. 최신 프리뷰에는 향상된 레이아웃 경로, Arena 인터페이스에서 네이티브 세그먼트 수명의 중앙 집중식 관리, 폴백 네이티브 링커 구현 및 VaList 제거와 같은 개선 사항이 포함되어 있습니다. 이 API의 목표는 사용 용이성, 성능, 일반성 및 안전성을 포함합니다. 그러나 JNI를 대체하거나 어떤 식으로든 변경하는 것을 목표로 하지 않습니다.
JDK 21은 또한 처리량이 많은 동시 애플리케이션을 작성, 유지 관리 및 관찰하는 문제를 크게 줄일 수 있는 경량 스레드인 최종 가상 스레드를 제공합니다. 이 기능의 이면에는 서버 애플리케이션이 최적의 하드웨어 활용으로 효과적으로 확장할 수 있도록 하고, 기존 lang.Thread API 코드에 대한 최소한의 변경으로 가상 스레드 채택을 촉진하고, 현재 JDK 도구를 사용하여 가상 스레드의 디버깅 및 프로파일링을 단순화하는 것이 포함됩니다. JDK 21은 가상 스레드가 있는 스레드 로컬 변수를 완벽하게 지원하여 기존 라이브러리와의 호환성을 높이고 가상 스레드를 사용하도록 작업 기반 코드의 마이그레이션을 지원합니다.
시퀀스 컬렉션은 JDK 21과 함께 제공되는 또 다른 기능입니다. 이러한 인터페이스를 사용하면 명확한 발생 순서로 컬렉션을 표현할 수 있으며 각 컬렉션에는 잘 정의된 첫 번째 및 두 번째 요소 등이 있습니다. 첫 번째 요소와 마지막 요소에 쉽게 액세스하고 요소의 처리 순서를 뒤집을 수 있도록 균일한 API가 제공됩니다. 컬렉션, 세트 및 맵에 대한 시퀀싱 인터페이스를 정의함으로써 이 제안은 Java 컬렉션 프레임워크의 격차를 메우고 오랜 사용자 요구를 충족시키는 것을 목표로 합니다.
문자열 템플릿은 JDK 21의 프리뷰 기능으로 데뷔하여 리터럴 텍스트를 포함된 표현식 및 프로세서와 병합하여 특수한 결과를 생성함으로써 Java의 기존 문자열 리터럴 및 텍스트 블록을 향상시킵니다. 이 기능의 기본 의도는 런타임 계산 값을 통합하는 문자열을 쉽게 표현할 수 있도록 하여 Java 프로그래밍을 단순화하는 것입니다. 문자열 템플릿은 표현식의 가독성을 높이고, 프로그램 보안을 강화하고, 유연성을 유지하고, Java 이외의 언어로 작성된 문자열을 허용하는 API 작업을 보다 쉽게 하도록 설계되었습니다.
JDK 21에 대해 제안된 릴리스 계획에 따라 버그 수정이 계속되는 6월 8일과 7월 20일 램프다운 단계 후에 기능 목록이 동결됩니다. 초기 및 최종 릴리스 후보는 8월 10일과 8월 24일에 이어지며 버그 수정은 여전히 가능합니다. 일반 출시는 9월 19일로 예정되어 있습니다.
JDK 21은 LTS(장기 지원) 릴리스로 5년 프리미어 지원과 2031년 9월까지 확장 지원을 제공합니다. 현재 LTS 버전인 JDK 17은 2021년 9월에 릴리스되었습니다. JDK 20 및 JDK 19, 프리미어 지원은 6개월만 받고 연장 지원은 받지 않습니다.
Oracle 의 표준 Java 구현은 6개월마다 게시되며 JDK 21의 잠재적인 기능에는 JDK 20의 모든 인큐베이팅 및 미리보기 기능이 포함됩니다. 여기에는 범위 값, 레코드 패턴, 스위치 문에 대한 패턴 일치, 범용 제네릭, 세대별 Z 가비지 수집기 및 비동기 스택 추적 VM API. AppMaster 와 같은 노코드 및 로우코드 플랫폼 과 같은 다른 최첨단 플랫폼도 이러한 Java 기술의 발전을 활용할 수 있습니다.