-
OracleJDK17은 정말 무료일까?Back-End/Java 2023. 6. 3. 10:49
OracleJDK 17 버전부터는 무료 라던데?
처음에 이 말을 듣고 의구심이 들었습니다. 엥 그럴 리가? 불과 몇 년 전까지 오라클이 유료 라이선스 정책을 강화하면서 많은 사람들을 혼란에 빠뜨렸는데 OracleJDK가 또다시 무료가 된다고? 과연 OracleJDK는 17 버전부터 정말 무료로 사용할 수 있을까요?
🐣 Java와 JDK 구분하기
들어가기에 앞서 잠깐 Java의 개념을 간단히 정리하고 들어가도록 하겠습니다. 혹시 Java와 JDK 개념에 대해 아시나요? 많은 사람들이 아직 이 두 단어를 혼동해서 쓰는 경우가 많은데 정확히는 다음과 같이 구분해서 알고 계셔야 합니다.
Java
- 썬마이크로시스템즈가 개발한 객체지향 프로그래밍 언어
- 무료
JDK(Java Development Kit)
- Java를 컴파일하기 위한 도구
- JVM(Java Virtual Machine) 내장
- 무료 or 유료
여러 다른 기사나 블로그 글을 보다 보면 Java가 유료화되었다는 글 들을 심심치 않게 볼 수 있습니다. 사실 좀 더 정확히는 Java라는 언어 자체는 GPL라이선스로 제공되어 무료로 사용할 수 있는 것이 맞고 어떤 JDK를 쓰느냐에 따라 무료인지 유료인지 나뉘게 됩니다.
간혹 Java는 유료이고 Kotlin은 무료이기 때문에 Kotlin을 쓴다. 이렇게 잘못 오해하는 분들도 계시는데 만약 Kotlin도 OracleJDK를 통해 컴파일한다면 유료로 사용하게 될 수도 있는 상황이 생길 수 있습니다.
🌌 JDK 라이선스 정책 변화
그렇다면 JDK를 무료로 사용하기 위해서는 어떻게 해야 되는 걸까요? 이 해답을 알기 위해서는 먼저 JDK 라이선스가 어떤 정책 변화의 흐름을 거쳐왔는지 파악해야 합니다. 아래 이미지를 통해 연도별 JDK의 라이선스 생명주기와 유지보수 기간을 확인해 보도록 하겠습니다.
블록의 상단에는 JDK버전을 기입하고 하단에는 라이선스 정책을 적어 놓았습니다. OpenJDK는 유지보수 기간 도중에 라이선스 변화 없이 쭉 GNU 라이선스를 사용하기 때문에 따로 라이선스를 표기하지는 않았습니다.
위의 그림에서도 확인할 수 있다시피 18~19년도 이전에는 BCL 라이선스를 사용하였습니다. BCL 라이선스란 Binary Code License의 약자로써 일반적인 목적의 컴퓨팅(데스크톱, 노트북, 스마트폰, 태블릿 등)에 사용 시에만 무료로 사용가능하다는 정책을 가지고 있습니다.
일반적인 목적의 컴퓨팅이라는 말이 조금 애매한 표현이라는 생각이 들지만 이 라이선스 덕분에 옛날에는 많은 사람들이 JDK를 무료로 사용할 수 있었습니다. 그러나 OracleJDK 11이 나오면서 Oracle은 OTN이라는 새 라이선스 정책을 내놓았습니다.
OTN 라이선스는 Oracle Technology Network의 약자로써 Java SE를 업무용, 상업용, 운영용으로 사용할 수 없고 비 상업적인 용도에 한해서만 무료 사용 가능한 라이선스입니다. 따라서 OracleJDK 11을 상업적인 용도로 사용하려면 Java SE Subscription 라이선스를 별도로 구독해야 합니다.
하지만 Java SE Subscription의 비용은 만만치 않습니다. Java SE Subscription 라이선스는 현재가 기준 1인당 236,515원 이므로 직원 수가 200명인 경우 연간 47,303,000원을 지불해야 합니다. 문제는 자바 개발자 수만큼 구입하는 것이 아닌 전체 직원 수만큼 구입해야 합니다. IT 전문 회사가 아닌 경우 상당히 부담스러운 가격이 되어버립니다. 그래서 OracleJDK17 버전부터는 NFTC 라이선스가 새롭게 등장합니다.
📜 NFTC 라이선스
NFTC 라이선스는 OracleJDK 17 버전 이후부터 새롭게 적용되는 라이선스로 OTN 라이선스와는 달리 상업적인 환경에서도 무료로 사용할 수 있는 라이선스입니다.
이 라이선스가 나오고 나서부터 사람들은 JDK 17부터 무료라는 소문이 돌기 시작하게 되었습니다. 그러나 이 라이선스에는 함정이 있습니다. Oracle JDK FAQ 페이지를 들어가 보면 LTS버전의 경우에는 후속 LTS가 나온 뒤로부터 1년까지 무료 라이선스가 적용되고 그 이후에는 OTN 라이선스로 변경된다고 나와있습니다.
따라서 JDK 17의 무료 사용기간은 올해 9월에 조만간 출시되는 후속 LTS 버전인 JDK 21 LTS가 출시된 후 1년인 2024년 9월까지 무료로 사용가능합니다. (정확한 확인을 위해 오라클 관계자분께 메일로 확인을 받았습니다.)
🌟 새로운 대안은 Amazon Corretto?
Oracle이 이러한 라이선스 정책들을 내놓는 사이 사람들은 다른 JDK 탐색에 나섰습니다. 여러 많은 JDK 중에 현재 가장 점유율이 높은 JDK는 아마존 코레토입니다. 한국에서는 어떨지 모르겠지만 아무래도 아마존 코레토의 인기가 높아진 건 AWS의 역할이 가장 클 것 같습니다. AWS에서 제공하는 서비스들은 대부분 아마존 코레토를 사용한다고 합니다.
특히 2018년 Oracle이 OTN 라이선스 정책을 내놓음과 거의 동시에 아마존 코레토를 사람들이 무료로 다운로드할 수 있도록 외부에 공개하면서 클라우드뿐만 아니라 온프레미스 환경에서도 사용할 수 있도록 지원했기 때문에 아마 그 여파가 점차 확장되면서 점유율을 높여 나간 것 같습니다.
아마존 코레토는 aws.amazon.com에서 다운로드가 가능하며 OpenJDK 기반으로 구성되어 있고 자바의 창시자 이자 자바의 아버지라 불리는 제임스 고슬링이 참여하여 개발하였다고 하기 때문에 조금 더 신뢰도가 올라가는 JDK인 것 같습니다. 현재까지 나온 버전은 8, 11, 17, 20(비 LTS)이 있으며 각각 유지보수 지원기간은 다음과 같습니다.
Corretto 8 : ~2026.06
Corretto 11 : ~ 2027.09
Corretto 17 : ~ 2029.10유지보수 기간은 변경될 수 있으므로 항상 공식사이트에서 확인하시기 바랍니다.
🌠 결론 : 어떤 JDK를 사용하는 것이 좋을까?
OracleJDK17은 2024년 9월까지는 무료로 사용 가능합니다. 그러나 만약 제품을 마이그레이션 한다 그러면 곧바로 1년 뒤에 21 버전으로 또다시 업데이트를 해야 된다는 점이 LTS 제품이라기엔 많이 아쉬운 느낌이 들긴 합니다. 아니면 조만간 곧 9월에 OracleJDK21 LTS 버전이 출시되므로 조금만 더 기다렸다가 마이그레이션 해서 최대 3년간 사용하는 방법도 있겠습니다.
강제로 최신 JDK를 써야 된다는 점에서 장기적인 운영에서는 확실히 불안요소가 있긴 하지만 어떻게 보면 강제로 주기적으로 소프트웨어를 업그레이드한다는 점에서는 보안적인 측면에서 이점이 있기 때문에 회바회, 팀바팀으로 내가 속한 조직에 알맞은 효율적인 JDK를 선택하는 것이 좋을 것 같습니다.
이상으로 JDK 무료 사용방법에 대해서 정리하고 마치도록 하겠습니다.
방법 1 : OracleJDK8을 사용할 경우 8u202 이하 버전을 사용한다.
방법 2 : OracleJDK 최신 LTS 버전을 사용하면서 2년 주기가 끝난 뒤 후속 LTS로 업데이트한다.
방법 3 : OpenJDK를 사용한다.
방법 4 : Amazon Corretto를 사용한다.