티스토리 뷰

미국 텍사스 기준으로 2021년 9월 14일 오라클에서 자바 17 버전을 릴리즈 (Release) 하였다.

자바 11 이후 발표되는 LTS라 예전부터 주목 받고 있던 버전이며, 공식적으로 2029년 9월까지 기술지원이 된다 (물론, 유료 고객 한정이다.)

 

17 버전과 관련해서 여러가지 주목해 볼만한 것을 정리하면 다음과 같다.

 

1. 라이선스 정책 변경

자바 8의 211 업데이트부터 오라클의 자바 라이선스 정책이 변경되면서 운영환경 혹은 상업적인 목적으로 사용하기 위해서는 상용 Subscription이 있어야 한다. (생각보다 부담스러운 가격이다.) 여기에 대응하기 위해 예산을 잡아서 Subscription을 구입한 경우도 있긴 하지만, OpenJDK 등으로 전환, 자바 8 이상으로 업그레이드를 하지 않는 등의 부작용이 발생하였다.

이에 대한 대응인지는 모르지만 자바 17부터는 다음 LTS 버전이 발표될 때까지 운영환경에서 상용 Subscription 없이 사용이 가능한 새로운 라이선스 정책을 제시하였다. (NFTC 라이선스. 무료라는 표현 까지 사용하였다.)

 

Oracle JDK 17 and future JDK releases are provided under a free-to-use license until a full year after the next LTS release. Oracle will also continue providing Oracle OpenJDK releases under the open-source General Public License (GPL), as it has since 2017.

 

이러한 정책 변경으로 오라클 JDK에 대한 라이선스는 다음과 같이 나눌수 있다.

Version Release 비고
Java 17 Oracle JDK
Open JDK
2023년 9월까지 조건부 무료 (NFTC)
-
Java 11 Oracle JDK 개인/개발 목적 외에 상용 Subscription 필요
Java 8 Oracle JDK 8u211 (2019년 4월 이후) 211 이상부터 상용 라이선스 필요
Java 7 Oracle JDK 7u85 (2015년 7월 이후) 85 이상부터 상용 라이선스 필요

※ 현재 LTS 버전 발표 주기가 3년인데, 2년으로 줄인다는 얘기도 나온다. 그러면 LTS를 무료로 사용할 수 있는 기간은 3년에서 2년으로 줄어들게 된다.

 

2. LTS 발표 주기 변경 (3년 -> 2년)

LTS 버전은 3년 주기로 발표하기로 하였다. 이전 LTS인 11과 현재 LTS 17의 버전차이가 6인데, 1년에 두번 버전을 발표하니 3년 주기가 맞다. 이러한 패턴에 따라 17 이후는 3년 후인 23이 되지만, 오라클에서는 기업이 안정적으로 LTS 버전을 활용할 수 있도록 주기를 2년으로 줄여서 다음 버전은 23이 아닌 21이다.

즉, 상용 라이선스 구매 없이 사용할 수 있는 기간이 3년이 아니라 2년이다. 조직이 버전에 민감하지 않고 빠르게 대응가능한 구조라면 상관 없지만, 그렇지 않은 조직에서는 2년이라는 시간은 사실 굉장히 짧다. (버전 업그레이드하다가 끝날 수도 있는 시간이다.)

 

3. Sealed 클래스 기능 포함

자바 17에서 Sealed 클래스가 정식으로 포함되었다. 15, 16에서 프리뷰로 추가된 후 17에서 정식 포함되었는데 2개 버전에 걸쳐서 프리뷰였다가 정식 버전으로 포함되는 패턴을 그대로 따랐다.

Sealed 클래스는 클래스와 인터페이스에서 모두 사용 가능하며, 상속할 수 있는 범위를 제한한다. 그 동안은 public, private, final 등으로 상속을 제한하는 방법, 생상자에 대한 접근을 제어하는 방법, 자바 모듈을 이용해서 오픈 범위를 제한하는 방법 등을 사용할 수 있었지만 Sealed 클래스를 이용하면 명확하게 상속 범위를 개발자가 정의할 수 있어서 원치 않는 상속으로 인한 악영향을 제거할 수 있다.

 

4. 프리뷰 혹은 인큐베이터 포함 사항

주요하게 추가된 프리뷰와 이인큐베이터는 다음과 같다.

 

JEP 406 : 패턴 매칭 스위치 (프리뷰)는 스위치 문 안에서 패턴을 사용할 수 있는 것으로 앞서 정식 포함된 instanceof 구문에서 패턴 매팅 기능의 연장선에 있다. 

JEP 412 : Foreign Function과 Memory API (인큐베이터)는 자바 가상 머신 밖의 코드 및 데이터를 사용하는 것을 개선한 API이다. 일반 자바 개발자가 활용할 일은 많지 않겠지만 기존에 JNI를 이용해서 OS 특화된 기능을 활용하거나 참조해야 할 경우, 복잡한 네이티브 라이브러 참조 및 호출 없이 사용이 간편해 질것으로보인다. 

 

5. 그 외에

자바 12, 13, 14, 15, 16에서도 많은 기능들이 인큐베이팅 되고 정식으로 포함되었지만 6개월 한정 버전이기 때문에 개발자들의 단순 호기심 용도로 사용하는 것 외에 운영 환경이나 대규모 서비스에서 사용하기에는 부적합했고, 자바 기반의 오픈소스 프레임워크나 솔루션들 역시 11 이후의 새로운 기능을 채택하는데 주저했던 것도 사실이다.

하지만, 자바 17이 LTS 버전으로 출시되었기 때문에 그러한 우려에서 벗어날 수 있어 실질적으로 그동안 추가된 기능을 운영 환경에서 사용할 수 있게 되었다. 많은 기대가 되는 기능은 다음과 같다.

 

- Record 클래스 (자바16) : 데이터를 표현하기 위한 클래스를 작성시 불필요한 작업을 줄여준다.

- 텍스트 블록 (자바15) : 여러줄에 걸쳐서 작성해야 하는 문자열을 정의할 때 매우 편리하다. SQL 문장이나 XML 문장등을 작성할 때 유용하다.

- 스위치 표현 (자바14) : 스위치 구문(switch statements)이 아닌 스위치 표현(switch expressions)이다. 스위치 문장에서 -> 를 이용해서 경우의 수를 쉽고 다양하게 정의할 수 있다.

 

자바 17 키노트 세션에서 해당 내용이 소개되었는데 아래 이미지는 기능적인 변경에 대해 잘 설명한 것이라 캡쳐하였다.

 

6. 참고 할만한 자료

자바 17은 LTS 버전인 관계로 오라클에서도 여러 세미나를 통해 장점과 변경된 부분을 알리려고 노력 중이다. 9월 16일 진행된 Oracle Developer Live에서 소개 및 Hands-on 세션이 무료로 진행되었는데, 해당 유투브 영상을 다음 URL에서 확인할 수 있다.

 

https://developer.oracle.com/developer-live/java-innovations-sep-2021/?source=:ow:o:h:nav::DevLiveSeries_OcomHomepageEventsDropdown 

 

Oracle Developer Live—Java Innovations

Java Innovations technical sessions, hands-on labs, demos, panels, and live Q&A with experts.

developer.oracle.com

위의 URL에 접속해 보면 많은 세션이 있는데 이 중에서 아래 1시간 분량의 유투브 영상이 키노트이기 때문에 끝까지 들어보면 새로운 버전을 이해하는데 많은 도움이 될 것이다. (한국 자막이 지원 안되지만, 영어 자막을 키면 그래도 듣는데 도움이 된다. ㅎ)

 

https://youtu.be/PWFNPF3LNWQ

 

아래 URL은 예전 다른 포스팅에서도 한번 소개한적 있는데, 자바 8 이후의 기능을 예제 코드와 함께 잘 정리한 글이다. 자바 17에 맞게 페이지가 업데이트 되었으니 내용을 한번 확인해 보는 것도 좋을것 같다.

 

https://advancedweb.hu/new-language-features-since-java-8-to-16/

 

New language features since Java 8 to 16

Enhancements to the Java language you should know

advancedweb.hu

 

https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-17/

 

A categorized list of all Java and JVM features since JDK 8 to 17

From Java 8 to 17

advancedweb.hu

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함