default_top_notch
default_setNet1_2

오라클, ‘자바 17’ 발표

기사승인 2021.09.18  17:01:19

공유
default_news_ad1

- 수천 건 업데이트 제공 등…2029년 9월까지

article_right_top

한국오라클(대표 톰송)은 지난 17일 본사 발표를 인용, 자바 17(Java 17)의 최신 버전을 공개했다.

이번 자바 17은 14개의 JEP(JDK 개선 제안, JDK Enhancement Proposals)와 다양한 성능, 안정성 및 보안 업데이트로 자바 언어 및 플랫폼을 개선해 개발자들의 생산성 향상에 기여한다.

자바 17은 6개월 주기로 공개되는 자바의 최신 장기 지원(Long-Term Support) 버전이다. 

오라클 엔지니어와 오픈JDK 커뮤니티(OpenJDK Community) 및 JCP(Java Community Process)를 포함한 전 세계 자바 개발자 커뮤니티 구성원 간의 폭넓은 협업을 기반으로 완성됐다.

3년 전 JDK 11 LTS 출시 이후 70가지 이상의 JEP가 구현 완료됐다.

◆더욱 간편해진 라이선스 = 오라클 JDK 17을 비롯, 향후 출시 예정인 JDK는 다음 LTS 공개 시점까지 자유롭게 무료 사용(free-to-use) 라이선스를 제공한다.

오라클은 2017년 이후 지속적으로 오라클 오픈JDK 버전을 오픈소스 일반 공중라이선스(GPL)에 따라 공개해왔다.

◆장기 지원 향상 = 오라클은 자바 LTS 신규 버전으로 이전하는 기업들에게 더 높은 탄력성을 제공하고자 자바 개발자 커뮤니티 및 JCP와의 협력을 바탕으로 LTS 일정을 개선했다.

오라클은 차기 LTS 버전 자바 21 발표를 2023년 9월로 예정하고 있으며, 이는 기존의 배포 주기인 3년을 2년으로 단축한 것이다.

현재 오라클 LTS와 자바 SE를 구독 중인 기업은 원하는 일정에 따라 자바 17로 이전할 수 있다. 

오라클은 자바 17 이용자를 대상으로 최소 2029년 9월까지 보안, 성능, 버그 수정 업데이트를 제공해나갈  방침이다.

조지 사브(George Saab) 오라클 자바 플랫폼 그룹 개발 담당 부사장은 “오라클은 지난 3년간 다수의 개발자들이 애용해온 최신 기능에 대한 의견에 귀 기울였으며, 이를 통해 6개월 단위의 배포 주기가 개발자 생태계에 성공적으로 안착했음을 확인했다”며 “자바 개발자들이 당면한 가장 큰 과제 중 하나는 최신 LTS 버전의 사용만을 요구하는 기업이다. LTS 버전의 출시 주기가 2년으로 변경된 만큼, 보안을 우선하는 기업의 개발자들은 기능별 선호도와 필요에 따른 더 많은 선택권을 확보하게 됐다”고 말했다.

아르날 다야라트나(Arnal Dayaratna) IDC 소프트웨어 개발 담당 부사장 겸 박사는 “오라클은 장기 지원 버전의 출시 주기를 2년으로 변경하고 더욱 유연한 신규 라이선스와 함께 오라클 JDK의 이용 기간 확대를 보장, 자바 커뮤니티에 더 많은 혜택을 제공하기 위한 변화를 모색하고 있다”며 “이러한 변화를 통해 클라우드, 온프레미스, 하이브리드 환경에서 현대화된 애플리케이션을 배포하기 위해 복잡성을 관리하고자 하는 기업에게 한층 높은 유연성을 제공할 것이다”고 덧붙였다.

◆클라우드 환경의 자바 도입 가속화 = 자바는 가장 성공한 개발 플랫폼 가운데 하나로서, 끊임없는 혁신을 기반으로 개발자들의 진화하는 요구사항을 해결하는 과정을 통해 완성됐다.

최근 오라클은 클라우드 환경에서 자바의 도입 속도를 향상하기 위해 ‘오라클 자바 관리 서비스(Oracle Java Management Service)’를 도입했다.

새롭게 공개된 OCI(Oracle Cloud Infrastructure) 전용 서비스는 온프레미스와 모든 클라우드 환경에서 기업의 자바 런타임 및 애플리케이션 관리를 지원한다.

‘자바 관리 서비스’는 개발 및 운영 단계에서 실행되는 자바 버전을 포함한 고객의 환경에 설치된 모든 버전의 자바 배포에 대한 전사적 수준의 가시성을 제공한다.

이를 통해 운영 중인 자바 애플리케이션 가운데 비정상적인 사례와 설치된 모든 자바 버전의 최신 보안 패치 여부를 확인할 수 있다.

JDK 17은 신규 언어 개선 사항, 라이브러리 업데이트, 신규 애플 컴퓨터 지원, 레거시 기능의 삭제 및 지원 중단과 현재 작성된 코드에 대한 JDK 차기 버전에서의 작동을 보장하는 작업을 포함하며, 자바 커뮤니티의 의견을 수렴하기 위한 기능 미리 보기와 API 인큐베이팅 또한 제공한다. 

◆자바 언어 개선 사항

- JEP 409…봉인 클래스 = 봉인 클래스 및 인터페이스는 다른 클래스나 인터페이스에 의한 확장 및 구현을 제한한다.

이는 자바 언어를 발전시켜 개발자 생산성을 높이고자 하는 프로젝트 앰버(Project Amber)로부터 도입한 여러 개선 사항 중 하나다.

◆라이브러리 업데이트 및 개선 사항

- JEP 306…항상 엄격한 부동 소수점 문법 복원 = 자바 프로그래밍 언어 및 자바 가상 머신에는 기본적으로 엄격한 부동 소수점 문법(semantics)만이 존재했다.

하드웨어 아키텍처의 제한 사항을 수용하기 위해 자바 1.2부터 이처럼 엄격했던 문법에 대한 예외 사항을 기본적으로 채택했으나, 이 예외가 더 이상 유용하거나 필요하지 않기에 JEP 306를 통해 이를 제거했다.

- JEP 356…향상된 의사 난수 생성기 = 의사 난수 생성기(Pseudo-Random Number Generator)를 위한 새로운 인터페이스 타입과 구현을 제공한다.

마이크로스트레티지 7월 배너

이 변경사항은 개별 의사 난수 생성기 사이의 상호운용성을 개선하며 요구 사항에 부합하는 알고리즘 구현을 위해 직접 코드를 작성하지 않고도 손쉽게 구현할 수 있도록 지원한다.

- JEP 382…신규 맥OS 렌더링 파이프라인 = 애플 메탈 API를 사용하는 맥OS용 자바 2D 파이프라인을 구현한다. 새 파이프라인은 지원이 중단된 애플 오픈(Open)GL API에 대한 JDK의 의존성을 줄인다.
 
◆새로운 플랫폼 지원

- JEP 391…맥OS AArch64 포팅 = JDK를 맥OS/아크(AArch)64 플랫폼으로 포팅, 새로운 암(Arm) 64 기반의 애플 실리콘 컴퓨터에서 자바 애플리케이션을 자체적으로 실행하는 것이 가능해졌다. 

◆삭제 및 지원 중단

- JEP 398…삭제 예정된 애플릿 API 지원 중단 = 모든 웹 브라우저 공급업체가 자바 브라우저 플러그인에 대한 지원을 중단했거나 이에 대한 계획을 발표했다.

애플릿 API는 2017년 9월 자바 9에서 지원이 중단된 바 있으나, 당시에는 삭제를 위한 조치는 아니었다.

- JEP 407…원격 RMI 활성화 삭제 = 원격 함수 호출(remote method invocation)을 활성화하는 메커니즘이 삭제됐다.

기타 RMI 관련 사항은 유지된다.

- JEP 410…AOT 및 JIT 컴파일러 삭제 = 자바 기반의 AOT(ahead-of-time) 및 JIT(just-in-time)는 실험적인 컴파일러로서 채택이 원활하지 않았으며, JDK 16에서 이미 선택적인 제거가 가능했다.

이 JEP는 JDK 소스 코드에서 관련 구성요소를 삭제한다.

- JEP 411…삭제 예정된 보안 매니저 지원 중단 = 보안 매니저(Security Manager)는 자바 1.0부터 탑재됐으나, 장기간 기업에서 사용하는 자바 코드를 보호하는 주요 수단이 아니었으며 서버에서 동작하는 자바 코드 보안을 위해서도 거의 사용되지 않았다.

향후 버전에서 이를 제거, 유지 관리 부담이 현저히 감소하고 자바 플랫폼이 개선될 것이다.

◆미래를 대비한 자바 프로그램

- JEP 403…JDK 내부의 강력한 캡슐화 = JDK 9부터 JDK 16까지 단일 커맨드 라인 입력을 통해 가능했던 내부 구성 요소의 강력한 캡슐화 해제가 차단된다.

여전히 기존에 존재하는 내부 API를 통해 이에 접근할 수 있지만, 커맨드 라인 매개변수나 ‘JAR 메인페스트(manifest)’ 파일의 속성을 이용하여 강력한 캡슐화를 해제하고자 하는 패키지 목록을 지정해야 한다.

해당 변경 사항은 애플리케이션 보안을 강화하고, JDK를 이용해 내부적으로 구현된 비표준 세부사항에 대한 종속성을 감소시킨다.
 
◆다음 JDK 버전 기능의 미리보기 및 인큐베이팅

- JEP 406…스위치(switch)를 위한 패턴 매칭(미리보기) = 개별 작업이 할당된 다양한 패턴을 테스트하는 switch 구문을 허용한다.

이는 복잡한 데이터에 사용되는 질의를 간결하고 안전하게 작성하도록 돕는다.

- JEP 412…외부 함수와 메모리API(인큐베이팅) = 자바 런타임 외부의 코드와 데이터를 자바 프로그램과 상호운용하기 위해 JDK 14와 JDK 15에서 도입된 인큐베이팅 API가 개선됐다.

이 API는 외부 함수(즉 JVM 외부의 코드)를 효율적으로 호출하고 외부 메모리에 안전하게 접근하도록 한다.

자바 프로그램이 네이티브 라이브러리를 호출하거나 네이티브 데이터를 처리하는 과정에서 발생 가능한 JNI(Java Native Interface)의 불안정성과 복잡성을 방지한다.

API는 다른 언어로 작성된 코드와 자바 사이의 상호작용을 개선하는 프로젝트 파나마(Project Panama)에서 개발되고 있다.

- JEP 414…벡터(Vector) API(2차 인큐베이팅) = 이 기능을 지원하는 CPU 아키텍처의 벡터 연산 명령을 최적화하기 위해 런타임에서 안정적으로 컴파일 가능한 벡터 연산 문법을 지원한다.

이를 통해 동일한 스칼라 연산 대비 우월한 성능을 달성할 수 있다.

<김동기 기자>kdk@bikorea.net

김동기 기자 kdk@bikorea.net

<저작권자 © BIkorea 무단전재 및 재배포금지>
default_news_ad3
default_setImage2

최신기사

default_news_ad4
default_side_ad1

인기기사

default_side_ad2

포토

1 2 3
set_P1
default_side_ad3

섹션별 인기기사 및 최근기사

default_setNet2
default_bottom
#top
default_bottom_notch