오라클은 자바 17 버전을 17일 공개했다.
자바 17은 14개의 JDK 개선제안(JEP)과 다양한 성능, 안정성 및 보안 업데이트를 포함한다.
자바 17은 6개월 주기로 공개되는 자바의 최신 장기 지원(LTS) 버전이다. 오라클 엔지니어와 오픈JDK 커뮤니티 및 JCP를 포함한 전 세계 자바 개발자 커뮤니티 구성원 간의 폭넓은 협업을 기반으로 완성됐다. 3년 전 JDK 11 LTS 출시 이후 70가지 이상의 JEP가 구현 완료됐다.
오라클 JDK 17을 비롯, 향후 출시 예정인 JDK는 다음 LTS 공개 시점까지 자유롭게 무료 사용 라이선스를 제공한다. 오라클은 2017년 이후 지속적으로 오라클 오픈JDK 버전을 오픈소스 일반 공중라이선스(GPL)에 따라 공개해왔다.
오라클은 자바 LTS 신규 버전으로 이전하는 기업에게 더 높은 탄력성을 제공하고자 자바 개발자 커뮤니티 및 JCP와의 협력을 바탕으로 LTS 일정을 개선했다. 오라클은 차기 LTS 버전인 자바 21 발표를 2023년 9월이라고 밝혔다. 이는 기존의 배포 주기인 3년을 2년으로 단축한 것이다.
현재 오라클 LTS와 자바 SE를 구독 중인 기업 고객은 원하는 일정에 따라 자바 17로 이전할 수 있다. 오라클은 자바 17 고객을 대상으로 최소 2029년 9월까지 보안, 성능, 버그 수정 업데이트를 제공할 예정이다.
JDK 17은 신규 언어 개선 사항, 라이브러리 업데이트, 신규 애플 컴퓨터 지원, 레거시 기능의 삭제 및 지원 중단과 현재 작성된 코드에 대한 JDK 차기 버전에서의 작동을 보장하는 작업을 포함하며, 자바 커뮤니티의 의견을 수렴하기 위한 기능 미리 보기와 API 인큐베이팅 또한 제공한다.
JEP 409인 봉인 클래스 및 인터페이스는 다른 클래스나 인터페이스에 의한 확장 및 구현을 제한한다. 이는 자바 언어를 발전시켜 개발자 생산성을 높이고자 하는 프로젝트 앰버로부터 도입한 여러 개선 사항 중 하나다.
JEP 306으로 항상 엄격한 부동 소수점 문법 복원이 도입됐다. 자바 프로그래밍 언어 및 자바 가상 머신에는 기본적으로 엄격한 부동 소수점 문법(semantics)만이 존재했다. 하드웨어 아키텍처의 제한 사항을 수용하기 위해 자바 1.2부터 이처럼 엄격했던 문법에 대한 예외 사항을 기본적으로 채택했으나, 해당 예외가 더 이상 유용하거나 필요하지 않기에 JEP 306를 통해 이를 제거했다.
JEP 356 채택으로 의사 난수 생성기(Pseudo-Random Number Generator)를 위한 새로운 인터페이스 타입과 구현을 제공한다. 해당 변경사항은 개별 의사 난수 생성기 사이의 상호운용성을 개선하며 요구 사항에 부합하는 알고리즘 구현을 위해 직접 코드를 작성하지 않고도 손쉽게 구현할 수 있도록 지원한다.
신규 맥OS 렌더링 파이프라인(JEP 382)으로 애플 메탈 API를 사용하는 맥OS용 자바 2D 파이프라인을 구현한다. 새 파이프라인은 지원이 중단된 애플 오픈GL API에 대한 JDK의 의존성을 줄인다.
맥OS AArch64 포팅(JEP 391)은 JDK를 맥OS/AArch64 플랫폼으로 포팅함으로써 새로운 Arm 64 기반의 애플 실리콘 컴퓨터에서 자바 애플리케이션을 자체적으로 실행하는 것이 가능해졌다.
모든 웹브라우저 업체에서 지원중단했거나 삭제할 계획인 자바 애플릿 API이 지원 중단됐다. 애플릿 API는 2017년 9월 자바 9에서 지원 중단된 바 있으나, 당시는 삭제를 위한 조치는 아니었다.
원격함수호출(RMI) 활성화가 삭제됐다. 기타 RMI 관련 사항은 유지된다. AOT 및 JIT 컴파일러가 삭제됐다. 삭제 예정된 보안 매니저의 지원 중단이 이뤄졌다.
JDK 9부터 JDK 16까지 단일 커맨드 라인 입력을 통해 가능했던 내부 구성 요소의 강력한 캡슐화 해제가 차단된다. 여전히 기존에 존재하는 내부 API를 통해 이에 접근할 수 있지만, 커맨드 라인 매개변수나 JAR 매니페스트 파일의 속성을 이용해 강력한 캡슐화를 해제하고자 하는 패키지 목록을 지정해야 한다. 해당 변경 사항은 애플리케이션 보안을 강화하고 JDK를 이용해 내부적으로 구현된 비표준 세부사항에 대한 종속성을 감소시킨다.
다음 JDK 버전 기능의 미리보기 및 인큐베이팅도 들어갔다. 개별 작업이 할당된 다양한 패턴을 테스트하는 스위치(switch) 구문이 미리보기로 들어갔다. 이는 복잡한 데이터에 사용되는 질의를 간결하고 안전하게 작성하도록 돕는다. 자바 런타임 외부의 코드와 데이터를 자바 프로그램과 상호운용하기 위해 JDK 14와 JDK 15에서 도입된 인큐베이팅 API가 개선됐다. 해당 API는 외부 함수(즉 JVM 외부의 코드)를 효율적으로 호출하고 외부 메모리에 안전하게 접근하도록 한다. 이를 통해 자바 프로그램이 네이티브 라이브러리를 호출하거나 네이티브 데이터를 처리하는 과정에서 발생 가능한 JNI(Java Native Interface)의 불안정성과 복잡성을 방지한다. 이 API는 다른 언어로 작성된 코드와 자바 사이의 상호작용을 개선하는 프로젝트 파나마에서 개발되고 있다. 벡터(Vector) API가 2차 인큐베이팅으로 포함된다. 해당 기능을 지원하는 CPU 아키텍처의 벡터 연산 명령을 최적화하기 위해 런타임에서 안정적으로 컴파일 가능한 벡터 연산 문법을 지원한다. 이를 통해 동일한 스칼라 연산 대비 우월한 성능을 달성할 수 있다.
조지 사브 오라클 자바 플랫폼 그룹 개발 담당 부사장은 “오라클은 지난 3년간 다수의 개발자들이 애용해온 최신 기능에 대한 의견에 귀 기울였으며, 이를 통해 6개월 단위의 배포 주기가 개발자 생태계에 성공적으로 안착했음을 확인했다”며 “오늘날 자바 개발자들이 당면한 가장 큰 과제 중 하나는 최신 LTS 버전의 사용만을 요구하는 기업”이라고 설명했다.
그는 “LTS 버전의 출시 주기가 2년으로 변경된 만큼, 보안을 우선하는 기업의 개발자들은 기능별 선호도와 필요에 따른 더 많은 선택권을 확보하게 됐다”고 덧붙였다.
관련기사
- 오라클, 자바 16 정식 출시2021.03.17
- 오라클, 자바SE 구독 서비스 '그랄VM' 무료 지원2021.02.04
- 2021년 미국 최고 직업은 자바 개발자2021.02.01
- [기고] 자바 25주년, 세상을 변화시키다2020.06.17
자바는 오늘날 가장 성공한 개발 플랫폼 중 하나다. 오라클은 클라우드 환경에서 자바의 도입 속도를 향상하기 위해 오라클 자바 관리 서비스를 도입했다. 새롭게 공개된 OCI전용 서비스는 온프레미스와 모든 클라우드 환경에서 기업의 자바 런타임 및 애플리케이션 관리를 지원한다.
자바 관리 서비스는 개발 및 운영 단계에서 실행되는 자바 버전을 포함한 고객의 환경에 설치된 모든 버전의 자바 배포에 대한 전사적 수준의 가시성을 제공한다. 이를 통해 운영 중인 자바 애플리케이션 가운데 비정상적인 사례와 설치된 모든 자바 버전의 최신 보안 패치 여부를 확인할 수 있다.